Apache 2 + mod_wsgi + WSGIScriptAlias

6 投票
1 回答
20657 浏览
提问于 2025-04-17 12:25

我现在正在研究Python和Django是否适合我即将进行的项目(目前看起来不错)。作为测试,我想在一个实际的服务器上运行Python(使用的是Ubuntu上的apache2),并通过mod_wsgi来实现,但我就是搞不定。以下是我的httpd.conf文件(位于 /etc/apache2/httpd.conf):

WSGIScriptAlias /test/tc-test/ /var/www/stage/hello/tc-test/django.wsgi
WSGIPythonPath /var/www/stage/test/tc-test/

<Directory /var/www/stage/test/tc-test>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

我的django.wsgi文件内容如下:

import os
import sys

sys.path.append('/var/www/stage/test/tc-test')

os_environment['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

这个目录的URL是 http://stage.website.com/test/tc-test

奇怪的是,当我重启apache服务器时,总是出现500内部服务器错误。这不仅仅是那个子目录的问题,服务器上的所有其他子目录也都有这个错误。我查看了apache的错误日志,但不知道为什么根本没有记录任何错误。我把问题缩小到WSGIScriptAlias和WSGIPythonPath这两个设置:当我把它们都去掉时,500内部服务器错误就消失了;一旦我添加其中任何一个,它们又会出现。我确认mod_wsgi正常工作,可能是我忽略了什么非常简单的东西。我就是找不到问题出在哪里。有没有人能帮帮我?

1 个回答

13

试试这个:

WSGIScriptAlias /test/tc-test /var/www/stage/hello/tc-test/django.wsgi

你在第一个参数后面不应该有斜杠。

撰写回答