centos 6.5 上 Apache 2.2.15 上的 Django
Posted
技术标签:
【中文标题】centos 6.5 上 Apache 2.2.15 上的 Django【英文标题】:Django on Apache 2.2.15 on centos 6.5 【发布时间】:2017-09-11 18:02:15 【问题描述】:我在我的 centos 生产服务器(centos 6.5)中安装了 django(1.11) 和 python 3.5 和 virtualenv
当我使用 python manage.py runserver 在本地启动 django 时,我可以使用 django,但我不能在 apache 上使用 mod WSGI 服务我的 django 我在 /conf.s/django.conf 上测试了非常不同的配置,但我遇到了这个错误:
mod_wsgi (pid=5713): Target WSGI script '/var/www/path/to/site/myapp/wsgi.py' cannot be loaded as Python module.
这是我在 /etc/httpd/conf.d/django.conf 中的 django.conf
<VirtualHost *:80>
WSGIProcessGroup myapp
WSGIDaemonProcess myapp display-name=%GROUP
ServerName test.com
ServerAlias www.test.com
ServerAdmin email@gmail.com
DocumentRoot /path/to/root
WSGIScriptAlias / /path/to/root/myapp/wsgi.py
Alias /static /path/to/root/myapp/static
ErrorLog /path/to/error.log
CustomLog /path/to/access.log combined </VirtualHost>
我该如何处理这个问题?
【问题讨论】:
你是如何安装 mod-wsgi 的?它必须针对某个 Python 版本进行编译。如果你安装了 yum,我猜你从 yum 得到了一个非常过时的 Python 2 版本。 是的,wsgi 是用 yum 安装的,我如何为 python 3.5 编译 wsgi? 【参考方案1】:问题似乎是运行yum
的安装版本mod_wsgi
,它已经非常过时并且针对Python 2.7 编译。安装 Python 3.5 和mod_wsgi
的最简单方法是使用 IUS 存储库,它为 RedHat 和 CentOS 提供最新的软件包。我假设你运行的是 64 位。
首先,卸载从EPEL安装的mod_wsgi
:
sudo yum -y remove mod_wsgi
这将安装 IUS 存储库:
sudo yum -y install https://centos6.iuscommunity.org/ius-release.rpm
安装后,您可以安装 Python 3.5 和 mod_wsgi
:
sudo yum -y install python35u
sudo yum -y install python35u-pip
sudo yum -y install python35u-mod_wsgi
这将在/usr/lib64/httpd/modules/mod_wsgi_python3.5.so
安装mod_wsgi
,这是您必须在Apache 配置中加载它的位置:
LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi_python3.5.so
您还需要确保在创建 virtualenv
时指向 Python 3.5:
virtualenv -p /usr/bin/python3.5 myapp
所有这些都是确保相同的 Python 版本 (3.5) 通过您的 virtualenv 和您的 Web 服务器 (mod_wsgi
) 运行您的 Django 代码,而不会影响系统 Python 版本(CentOS 6 上的版本 2.6.6 )。祝你好运!
【讨论】:
以上是关于centos 6.5 上 Apache 2.2.15 上的 Django的主要内容,如果未能解决你的问题,请参考以下文章
无法让 Sqoop 1.99.3 在 64 位 Centos 6.5 上与 Apache Hadoop 2.4.0 一起使用
Building Apache Thrift on CentOS 6.5