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

 更新时间:2019年07月01日 12:05:48   作者:轻舞肥羊  
这篇文章主要介绍了Apache,wsgi,django 程序部署配置方法,结合实例形式详细分析了Linux环境下Apache,wsgi,django程序部署配置的相关操作技巧与注意事项,需要的朋友可以参考下

本文实例讲述了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 这里

 

在工程的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在Console下显示文本进度条的方法

    Python在Console下显示文本进度条的方法

    Python是一门与php有点像的编辑语言了,下文来给各位在利用Python实现进度条了,对Python在Console下显示文本进度条的方法相关知识感兴趣的朋友一起学习吧
    2016-02-02
  • Python基础学习之函数方法实例详解

    Python基础学习之函数方法实例详解

    这篇文章主要介绍了Python基础学习之函数方法,结合实例形式分析了Python函数方法的定义、参数、复用和继承相关操作技巧,需要的朋友可以参考下
    2019-06-06
  • 详解python之简单主机批量管理工具

    详解python之简单主机批量管理工具

    这篇文章主要介绍了详解python之简单主机批量管理工具,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • python中实现指定时间调用函数示例代码

    python中实现指定时间调用函数示例代码

    函数function是python编程核心内容之一,也是比较重要的一块。下面这篇文章主要给大家介绍了关于python中实现指定时间调用函数的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • Python函数中的不定长参数相关知识总结

    Python函数中的不定长参数相关知识总结

    今天给大家带来的是关于Python函数的相关知识,文章围绕着Python不定长参数展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Python基础教程之while循环用法讲解

    Python基础教程之while循环用法讲解

    Python中除了for循环之外还有一个while循环,下面这篇文章主要给大家介绍了关于Python基础教程之while循环用法讲解的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • python+selenium+Chrome options参数的使用

    python+selenium+Chrome options参数的使用

    这篇文章主要介绍了python+selenium+Chrome options参数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • PHP网页抓取之抓取百度贴吧邮箱数据代码分享

    PHP网页抓取之抓取百度贴吧邮箱数据代码分享

    本文给大家介绍PHP网页抓取之抓取百度贴吧邮箱数据代码分享,程序实现了一键抓取帖子全部邮箱和分页抓取邮箱两个功能,感兴趣的朋友一起学习吧
    2016-04-04
  • 详解python读取和输出到txt

    详解python读取和输出到txt

    这篇文章主要介绍了python读取和输出到txt,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • python超详细实现完整学生成绩管理系统

    python超详细实现完整学生成绩管理系统

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Java实现一个完整版学生成绩管理系统,大家可以在过程中查缺补漏,提升水平
    2022-03-03

最新评论