侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Apache,wsgi,django 程序部署配置方法详解

框架(架构)  /  管理员 发布于 7年前   190

本文实例讲述了Apache,wsgi,django 程序部署配置方法。分享给大家供大家参考,具体如下:

前面写过一篇文章,ngixn,uwsgi,django,python 环境配置,有兴趣的朋友可以参考 nginx,django部署

后来有人在QQ上问我,用Apache 好部署吗?我当时只在windows下用 APACHE2.3,django1.4,wsgi 部署过,还没有在 linux 下部署。前几天有时间,我在 centos 上测试部署了一下。也不难。唯一的差别是,在windows 下有已经编译好的 wsgi.so 文件,放到  apache 的 modules下,然后在 httpd.conf 中增加

LoadModule wsgi_module modules/mod_wsgi.so

但是在 linux 下,wsgi的安装,都要在源码编译下安装,而且还有几点要注意的。下面就详细介绍我部署的过程。

安装python 2.7 或者你需要的版本

这个就简单带过了,下载安装包之后,windows 可以直接 运行安装包,linux 下 最好编译安装吧。这一步可以参考我上面提到的文章,我已经说得比较清楚。 但我这个centos 环境,是别人已经装好了的,而且比较怪异,安装在:/usr/local/activepython27 ,一般的python 安装在:/usr/bin/python 。其实原因简单,因为centos 自带的python 是 2.4 的版本较低,所以重新装了一个新版本的。

安装wsgi

首先要在google 代码托管处下载.https://code.google.com/p/modwsgi ,如果是windows 的,可以直接下载编译好的文件。linux 的兄弟们,下载源码编译:

wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gztar zxvf mod_wsgi-3.4.tar.gzcd mod_wsgi-3.4./configure

发现什么了,报错了

./configurechecking for apxs2... nochecking for apxs... nochecking Apache version... ./configure: line 1695: apxs: command not found./configure: line 1695: apxs: command not found./configure: line 1696: /: is a directory

报错的原因,也很清楚。没有 apxs.下面安装它

yum install httpd-devel

如果是 ubuntu  可能命令为 sudo apt-get install apache2-dev 或 sudo apt-get install apache2-threaded-dev,具体的命令可以查一下.

再次编译

[root@29 mod_wsgi-3.4]# ./configure (这里有可能要加上python路径 --with-python=/usr/local/activepython27)checking for apxs2... nochecking for apxs... /usr/sbin/apxschecking Apache version... 2.2.3checking for python... /usr/local/activepython27/bin/pythonconfigure: creating ./config.statusconfig.status: creating Makefile[root@29 mod_wsgi-3.4]#makemake install

得到如下编译结果:

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/lib/httpd/modules/mod_wsgi.so
[root@29 mod_wsgi-3.4]#

配置 apache2 配置文件httpd.conf .

LoadModule wsgi_module modules/mod_wsgi.so

然后启动 apache

service httpd start

发现什么鸟,这是只布谷鸟,乱叫,报错了

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
ImportError: No module named site

错误的原因,系统有多个python 版本,必须指明用哪一个python .
在apache 配置文件中,继续加入

WSGIPythonHome /usr/local/activepython27  (这是你要采用的python的路径,一般是/usr/bin/python,我这环境别人配成这样了)

用什么方法可以得到这个路径呢,直接执行python 命令就可以得到,前提是,这个python 软连接是你用要的python, 注意一点的是,WSGIPythonHome不要配置到<VirtualHost> </VirtualHost> 之间,否则报错

import syssys.prefix 

就可以得到路径/usr/local/activepython27 。

Django应用程序相关配置

1.我的django程序部署在 /opt/www/html/djangocms/crm 这里

 

在工程的conf 目录下加入如下两个文件

apache_django_wsgi.conf 文件内容如下

<VirtualHost *:80>  ServerName 192.168.1.111  ServerAlias 192.168.1.111  DocumentRoot /opt/www/html/djangocms/crm  WSGIScriptAlias / /opt/www/html/djangocms/crm/conf/django.wsgi  <Directory "/opt/www/html/djangocms/crm">   order allow,deny   Allow from all  </Directory>  Alias /static /opt/www/html/djangocms/crm/static  <Location "/static">      SetHandler None  </Location>  <Directory "/opt/www/html/djangocms/crm/static">    order Deny,Allow    Allow from all  </Directory></VirtualHost>

django.wsgi 文件内容

import osimport syssys.path.append("/opt/www/html/djangocms")sys.path.append("/opt/www/html/djangocms/crm")os.environ.setdefault("DJANGO_SETTINGS_MODULE", "crm.settings")from django.core.wsgi import get_wsgi_applicationapplication = get_wsgi_application()

最后在 apache 配置文件 httpd.conf 中加入:

Include "/opt/www/html/djangocms/crm/conf/apache_django_wsgi.conf"

重启apache

service httpd restart

你就看到你熟悉的django应用程序了。

希望本文所述对大家基于Django框架的Python程序设计有所帮助。


  • 上一条:
    Django高级编程之自定义Field实现多语言
    下一条:
    django框架实现模板中获取request 的各种信息示例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Filament v3.1版本发布(0个评论)
    • docker + gitea搭建一个git服务器流程步骤(0个评论)
    • websocket的三种架构方式使用优缺点浅析(0个评论)
    • ubuntu20.4系统中宿主机安装nginx服务,docker容器中安装php8.2实现运行laravel10框架网站(0个评论)
    • phpstudy_pro(小皮面板)中安装最新php8.2.9版本流程步骤(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2018-05
    • 2020-02
    • 2020-03
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-11
    • 2021-03
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-08
    • 2023-08
    • 2023-10
    • 2023-12
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客