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


Posted in Python onJuly 01, 2019

本文实例讲述了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.gz
tar zxvf mod_wsgi-3.4.tar.gz
cd mod_wsgi-3.4
./configure

发现什么了,报错了

./configure
checking for apxs2... no
checking for apxs... no
checking 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-devsudo apt-get install apache2-threaded-dev,具体的命令可以查一下.

再次编译

[root@29 mod_wsgi-3.4]# ./configure (这里有可能要加上python路径 --with-python=/usr/local/activepython27)
checking for apxs2... no
checking for apxs... /usr/sbin/apxs
checking Apache version... 2.2.3
checking for python... /usr/local/activepython27/bin/python
configure: creating ./config.status
config.status: creating Makefile
[root@29 mod_wsgi-3.4]#
make
make 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 sys
sys.prefix

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

Django应用程序相关配置

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

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

在工程的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 os
import sys
sys.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_application
application = get_wsgi_application()

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

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

重启apache

service httpd restart

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

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

Python 相关文章推荐
Python中条件选择和循环语句使用方法介绍
Mar 13 Python
Python中关于使用模块的基础知识
May 24 Python
Python3 关于pycharm自动导入包快捷设置的方法
Jan 16 Python
Anaconda 查看、创建、管理和使用python环境的方法
Dec 03 Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 Python
python实现梯度下降和逻辑回归
Mar 24 Python
初学者学习Python好还是Java好
May 26 Python
基于python实现模拟数据结构模型
Jun 12 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 Python
Python中字符串List按照长度排序
Jul 01 #Python
python opencv minAreaRect 生成最小外接矩形的方法
Jul 01 #Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
Jul 01 #Python
Python之pymysql的使用小结
Jul 01 #Python
linux下安装python3和对应的pip环境教程详解
Jul 01 #Python
python写日志文件操作类与应用示例
Jul 01 #Python
python实现自动化上线脚本的示例
Jul 01 #Python
You might like
如何在PHP程序中防止盗链
2008/04/09 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
[00:14]护身甲盾
2019/03/06 DOTA
Python类定义和类继承详解
2015/05/08 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
求职简历自荐信范文
2013/10/21 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
关于JavaScript回调函数的深入理解
2021/06/27 Javascript
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server
利用python做数据拟合详情
2021/11/17 Python