每当我添加以下行时:
LoadModule wsgi_module modules/mod_wsgi.so
Apache启动失败。有人能告诉我可能出了什么问题吗?
以下是设置Apache以运行Django所需执行的步骤。假设您正在使用已安装WAMP服务器(32位)的Windows操作系统(32位),并且使用Python 2.7(32位)。
下载 mod_wsgi-win32-ap22py27-3.3.so 或您相应的兼容文件。
将其更名为 mod_wsgi.so
并复制到 Windows 上的 /Program Files/Apache Software Foundation/Apache22/modules
。
使用管理员权限打开 httpd.conf
。现在,你会发现一系列带有 LoadModule ...
的行。只需将 LoadModule wsgi_module modules/mod_wsgi.so
添加到该列表中。
你完成了部分工作..可以重新启动Apache,应该不会出现任何错误。
现在您需要将其与您的Django项目链接起来。
在您的Django项目根文件夹中,添加 apache
文件夹并创建 django.wsgi
(不要更改此名称)和 apache_mydjango.conf
。
在 httpd.conf
的底部添加以下行。
Include "d:/projects/mysite/apache_django_wsgi.conf"
打开 django.wsgi
并添加以下行:
import os, sys
sys.path.append('d:/projects/mysite')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
打开 apache_djang_wsgi.conf
文件并添加以下内容:
Alias /images/ "d:/projects/mysite/templates/images/"
<Directory "d:/projects/mysite/images>
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias / "d:/projects/mysite/apache/django.wsgi"
<Directory "d:/projects/mysite/apache">
Allow from all
</Directory>
<VirtualHost *:80>
DocumentRoot d:/projects/mysite
ServerName 127.0.0.1
</VirtualHost>
注意:
我假设你的Django项目层次结构类似于这样:
mysite/
mysite/
settings.py
urls.py, wsgi.py.
manage.py
<apache> / apache_django_wsgi.conf, django.wsgi
最佳教程链接:
实际上我不明白为什么人们无法解决这个问题。我在这里看到了很多关于它的问题,我甚至发布了一些...所以,我想直接将一个初始设置版本编写为答案。
Include "d:/projects/mysite/apache_django_wsgi.conf"
应该是这样的
Include "d:/projects/mysite/apache/apache_django_wsgi.conf"
我完成了所有步骤,但现在无法启动Apache服务器。 Wamp图像变成了红色。 我可以按照步骤3中所述重新启动Apache。
以下是一些非官方的Windows二进制Python扩展网站,供您使用: http://www.kaij.org/blog/?p=123 https://github.com/kirang89/pycrumbs/pull/28
如果有人在使用此内容时没有注意到,这里存在一些步骤上的不一致。第5步中提到了文件名apache_mydjango.conf
而在第6步中则提到了文件名apache_django_wsgi.conf
这两个文件名显然应该是相同的 - 无论你选择哪种方式都可以 - 但我花了一段时间才弄清楚为什么它不起作用。
如何配置Apache + Django + venv
为了使其工作,您需要三件事:
mod_wsgi
httpd.conf
mod_wsgi
加载并加载您的Python应用程序的Python脚本(通常是wsgi.py)1. 在官方文档中已经很好地描述了(我使用了pip方法)。只需将Apache发行版(ApacheHaus适合我,但不适用于 Apache Lounge,我认为它错过了一些头文件)解压到像C:\
这样的标准位置,或者将环境变量MOD_WSGI_APACHE_ROOTDIR
设置为其目录。您将需要Visual Studio Build Tools 或 mod_wsgi的二进制分发版。然后pip install
它。
2. 在httpd.conf中添加:
LoadFile ".../pythonXY/pythonXY.dll"
LoadModule wsgi_module ".../mod_wsgi/server/mod_wsgi.cpXY-win_amd64.pyd"
WSGIPythonHome ".../pythonXY"
WSGIScriptAlias / "...\wsgi.py"
在Python没有按标准方式安装的情况下,可能需要使用LoadFile
。最好包含WSGIPythonHome
指令,指向主要的Python发行版(而不是通常所说的venv),因为mod_wsgi可能无法正常工作。例如,现在WSGIPythonPath
根本不起作用。或者,您可以相应地设置PYTHONPATH或PYTHONHOME环境变量。
现在,您可以监视Apache的错误日志(默认情况下在其日志文件夹中)。 如果出现故障,Apache将打印mod_wsgi配置(表示已安装但无法启动Python)和/或Python错误(如果它成功启动)。
3. 在您的Python脚本(wsgy.py
)中,您需要提供函数"application"(通常编译为mod_wsgi
),该函数启动您的应用程序。但首先,请使用sys.path
或site.addsitedir
在脚本中指定Python将使用的模块和软件包,以及您自己的模块和软件包。Django的wsgi.py很好,只需在其中预置所有路径配置即可。
仅适用于运行Windows 64位版本的用户。
我已经创建了wsgi。现在您只需要安装Python并运行Apache即可。 配置已经在软件包中设置好了。只需下载软件包并按照“Steps to follow.txt文件”中的说明进行操作。
您不需要从任何地方下载Python、Apache和mod_wsgi.so。我已经编译了so文件,并提供了兼容的Python和Apache2版本,以便您可以随时部署。 只需在Apache配置中将文档根目录设置为Apache2内部的cgi-bin文件夹即可。
软件包可以从Zip package下载
mod_wsgi.so
文件吗? - Jon Lin