Apache 2 + mod_wsgi + WSGIScriptAlias

Posted

技术标签:

【中文标题】Apache 2 + mod_wsgi + WSGIScriptAlias【英文标题】: 【发布时间】:2012-02-27 22:15:43 【问题描述】:

我目前正在研究 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 正在正常工作,我正在查看它可能非常简单。我就是不知道是什么。有什么帮助吗?

【问题讨论】:

对于初学者,您引用的是 django.wsgiwsgi.py... 是哪个? 嗯,好点。我当前使用的文件是 django.wsgi 您还需要确保 apache 具有适当的权限。请查阅您的 apache 错误日志。 好吧,我是个白痴。我确实改变了那部分,内部服务器错误消失了。显然我第一次尝试做这项工作失败了,之后我尝试了一个不同的指南,它有一个不同的名称“django.wsgi”,我也忘了改变那部分。感谢您的帮助。 【参考方案1】:

试试:

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

第一个参数不应该有斜杠。

【讨论】:

也许不是 OP 的答案,但似乎是 my 问题。谢谢:)

以上是关于Apache 2 + mod_wsgi + WSGIScriptAlias的主要内容,如果未能解决你的问题,请参考以下文章

Django/mod_wsgi/Apache - mod_wsgi 没有使用为其编译的 Python 版本 - “ModuleNotFoundError: No module named 'math'

Apache + mod_wsgi部署webpy应用

Apache 2 + mod_wsgi + WSGIScriptAlias

使用 Apache 和 mod_wsgi 在 Centos 上设置 Django

mod_wsgi (3.4-14) / Apache 2.4.12 / Red Hat (6.7) / Django 1.8.2 在负载下挂起

apache+mod_wsgi+flask 环境搭建