【发布时间】:2016-08-01 10:58:35
【问题描述】:
我最近开始开发 Django 网站,我想将它们部署在带有 mod_wsgi 和 Apache 的 CentOS VPS 上。
我关注了this guide,它运行良好,但我希望同时运行多个 Django 网站,所以我尝试在适当的配置文件中创建多个虚拟主机,但问题就来了。
<VirtualHost the.ip.of.server:80>
ErrorLog /root/praxis.error.log
Alias /static /root/Praxis/static
<Directory /root/Praxis/static>
Require all granted
</Directory>
<Directory /root/Praxis/Praxis>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess Praxis python-path=/root/Praxis:/root/Env/Praxis/lib/python2.7/site-packages
WSGIProcessGroup Praxis
WSGIScriptAlias /praxis /root/Praxis/Praxis/wsgi.py
</VirtualHost>
如果我删除 VirtualHost 开始和结束标签,网站将按预期运行,但如果我保留这些标签,我将不断收到 404 错误。
我真的不明白为什么只有没有标签才能正常工作。
我也尝试在基于 IP 的虚拟主机和基于名称的虚拟主机之间切换,但没有任何改变。
这里也是wsgi.py
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
sys.path.append('/root/Praxis/Praxis')
os.environ['PYTHON_EGG_CACHE'] = '/root/Praxis/.python-egg'
os.environ['DJANGO_SETTINGS_MODULE'] = 'Praxis.settings'
application = get_wsgi_application()
在我的 httpd.conf 文件中,我也有:
Listen 80
ServerName ip.to.the.server #without port specified
和
#NameVirtualHost *:80 <-- THIS IS A COMMENT RIGHT NOW
提前感谢大家的努力,我希望有人能够帮助我,我正在努力解决这个问题!谢谢各位。
问题已解决! 我发现(实际上我不知道为什么)所有 VIrtualHosts 都必须放入 httpd.conf 文件而不是外部 .conf 文件中。所以我把它们都放在那里并删除了所有的“IncludeOptional”指令。就是这样!
【问题讨论】:
-
请从您的标题中删除
Solved,并将您找到的解决方案作为正确答案发布。
标签: python django apache centos virtualhost