Python django apache配置与WSGIDaemonProcess不工作

Python django apache配置与WSGIDaemonProcess不工作,python,django,apache,virtualenv,wsgi,Python,Django,Apache,Virtualenv,Wsgi,更新的问题 [Mon Jul 18 09:20:10.517873 2016] [:error] [pid 30316:tid 139756302964480] [remote 122.164.94.99:48261] Traceback (most recent call last): [Mon Jul 18 09:20:10.518005 2016] [:error] [pid 30316:tid 139756302964480] [remote 122.164.94.99:48261]

更新的问题

[Mon Jul 18 09:20:10.517873 2016] [:error] [pid 30316:tid 139756302964480] [remote 122.164.94.99:48261] Traceback (most recent call last):
[Mon Jul 18 09:20:10.518005 2016] [:error] [pid 30316:tid 139756302964480] [remote 122.164.94.99:48261]   File "/var/www/rent/Rent/wsgi.py", line 20, in <module>
[Mon Jul 18 09:20:10.518141 2016] [:error] [pid 30316:tid 139756302964480] [remote 122.164.94.99:48261]     from django.core.wsgi import get_wsgi_application
[Mon Jul 18 09:20:10.518236 2016] [:error] [pid 30316:tid 139756302964480] [remote 122.164.94.99:48261] ImportError: No module named django.core.wsgi
[Mon Jul 18 09:20:10.517873 2016][:error][pid 30316:tid 13975630296480][remote 122.164.94.99:48261]回溯(最近一次呼叫最后一次):
[Mon Jul 18 09:20:10.518005 2016][:error][pid 30316:tid 13975630296480][remote 122.164.94.99:48261]文件“/var/www/rent/rent/wsgi.py”,第20行,in
[Mon Jul 18 09:20:10.518141 2016][:error][pid 30316:tid 13975630296480][remote 122.164.94.99:48261]来自django.core.wsgi导入获取wsgi_应用程序
[Mon Jul 18 09:20:10.518236 2016][:错误][pid 30316:tid 13975630296480][remote 122.164.94.99:48261]导入错误:没有名为django.core.wsgi的模块
我的虚拟主机

<VirtualHost *:80>
    ServerName  ip_address
    ServerAdmin webmaster@localhost

    Alias /static/  /var/www/rent/static/

    Alias /media/  /var/www/rent/media/

    WSGIScriptAlias /   /var/www/rent/Rent/wsgi.py

    WSGIDaemonProcess   Rent  python-path=/var/www/rent:/root/.virtualenvs/rent/lib/python2.7/site-packages

    WSGIProcessGroup    Rent

    <Directory /var/www/rent/static>
        Options -Indexes
        Order deny,allow
        Allow from all
    </Directory>

    <Directory /var/www/rent/media>
        Options -Indexes
        Order deny,allow
        Allow from all
    </Directory>

    LogLevel warn

    ErrorLog    ${APACHE_LOG_DIR}/error.log
    CustomLog   ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

服务器名ip地址
服务器管理员webmaster@localhost
别名/static//var/www/rent/static/
别名/media//var/www/rent/media/
WSGIScriptAlias//var/www/rent/rent/wsgi.py
WSGIDaemonProcess Rent python path=/var/www/Rent:/root/.virtualenvs/Rent/lib/python2.7/site-packages
WSGI集团租金
选项-索引
命令拒绝,允许
通融
选项-索引
命令拒绝,允许
通融
日志级别警告
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
这是问题最可能的原因。您已经在超级用户的主文件夹中创建了virtualenv。但apache不太可能访问该文件夹。默认情况下,任何其他用户都无法访问用户的主文件夹

web服务器和WSGI进程将以非特权用户的身份运行,通常命名为
nobody
httpd
apache
或类似名称。虽然您可以通过更改/root/上的权限来解决此问题,但这是一个很大的问题。如果它是普通用户,则危险性较小,但这样做仍然不是一个好主意

最好的解决方案是将virtualenv放在非特权用户可以访问的位置
/usr/local/virtualenv
是一个好位置

请注意,将
/root/.virtualenvs/
移动到
/usr/local/virtualenv
时,必须按如下方式重新创建它

 source /root/.virtualenvs/rent/bin/activate
 pip freeze > /tmp/requirements.txt
 cd /usr/local/
 virtualenv virtualenv
 source virtualenv/bin/activate
 pip install -r /tmp/requirements.txt

然后编辑
httpd.conf
文件以反映新路径。

它是如何“不按预期工作”的?你能在你的问题中包含一些日志和错误消息吗?@Garrethyde我在virtualenv中安装的任何模块都显示为模块notfound@GarrettHyde添加日志您是否阅读了日志中的异常消息并检查了
TEMPLATE\u DIRS
的值?如果该值使您不应获得所获得的错误,您确定服务器将Django应用程序指向正确的设置吗?如果您在
settings.py
的开头临时添加了
raiseexception(“让我们看看”)
并再次尝试访问您的站点,那么日志中是否会显示异常?因此听起来您的问题已经得到了回答。如果它仍然不起作用,请更新问题以涵盖您的新症状。使用
python path
以mod_wsgi守护程序模式设置python虚拟环境不是推荐的方法。使用
python home
而不是像感谢中所解释的那样@GrahamDumpleton将查找并更新答案我快疯了,我也遇到了同样的问题,我检查了数千次路径,这里是解决方案!泰
 source /root/.virtualenvs/rent/bin/activate
 pip freeze > /tmp/requirements.txt
 cd /usr/local/
 virtualenv virtualenv
 source virtualenv/bin/activate
 pip install -r /tmp/requirements.txt