【发布时间】:2015-05-03 14:16:40
【问题描述】:
我正在尝试在 Apache 服务器上使用 WSGI 在虚拟主机中运行 Django 应用程序。
我完全遵循了 Django 文档,但这里似乎仍然存在一些问题。
据我所知,我已经正确配置了所有内容。
wsgi.py:
import os
import sys
path='/var/www/docs/'
sys.path.append(path)
os.environ["DJANGO_SETTINGS_MODULE"] = "DocsEngine.settings"
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
虚拟主机文件:
Listen 8000
WSGIPythonPath /var/www/docs
<VirtualHost *:8000>
WSGIScriptAlias / /var/www/docs/DocsEngine/wsgi.py
ServerName myurl.com
Alias /resources/ /var/www/docs/resources/
<Directory /var/www/docs/DocsEngine>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
CustomLog /var/log/apache2/wsgi-access.log combined
ErrorLog /var/log/apache2/wsgi-error.log
</VirtualHost>
当导航到myurl.com:8000/ 时,它会出现一个 404 页面。
- 我的防火墙打开了 8000 端口
- 此虚拟主机在 apache 中启用。
- Apache 已启用 mod_wsgi
- django 应用程序在使用开发服务器在本地运行时可以正常工作。
- 我的本地机器和服务器都在运行 python 2.7.6 和 django 1.7.3
我能够访问位于我的/resources 目录中的东西,所以我知道 apache 可以识别其中的某些部分。
我已经为此苦苦思索了好几个小时,任何帮助将不胜感激。
【问题讨论】:
-
它很可能根本不会影响您的 wsgi.py 脚本。您可以通过在 WSGI 脚本中的 /tmp/test.txt 文件中添加打印某些内容的调试行来测试这一点。然后下一步是最大化 Apache 日志级别,如果脚本根本没有运行,请查看 Apache 日志中的内容。然后下一步是从已知的工作示例中做一个干净的工作配置文件并开始添加位,直到它停止工作并且您知道导致问题的原因。
-
如您所见,Apache + mod_wsgi 不是非常友好的调试环境,这也是开发人员转向其他解决方案的原因之一(提示:Nginx + uwsgi)。
-
好吧,我做到了,当我请求页面时,它正在命中脚本。尽管由于文件权限,该脚本无法在其自己的目录中创建文件。也许这与它有关?
标签: django apache python-2.7 virtualhost