我从以下位置为 apache 2.2 和 python 2.7(64 位)下载了 mod_wsgi。(我试图让 django 在我的计算机上运行)。
每当我添加以下行时:
LoadModule wsgi_module modules/mod_wsgi.so
Apache 无法启动。谁能告诉我可能是什么问题?
这些是为 Django 设置 Apache 时需要做的以下事情。我假设您在安装了 WAMP 服务器(32位)的 Windows(32位)上使用 Python 2.7(32位)。
下载mod_wsgi-win32-ap22py27-3.3.so。或下载您各自的 .so 兼容文件
在 Windows 上将其名称更改为mod_wsgi.so
并将其复制到/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
最佳教程链接:
其实我不明白为什么人们无法修复它。我在这里看到了很多关于它的问题,我什至发布了一些......所以,我想直接写一个初始设置版本作为答案
尝试以下网站获取 Python 扩展的非官方 Windows 二进制文件 http://www.kaij.org/blog/?p=123 https://github.com/kirang89/pycrumbs/pull/28
以防万一有人在使用它并且没有发现它,步骤中存在不一致。在第 5 步中,它指的是文件名apache_mydjango.conf
在第 6 步中,它指的是文件名apache_django_wsgi.conf
这些显然都应该是同一个名字——不管你走哪条路都没有关系——但我花了一段时间试图弄清楚为什么它不起作用。
除了Olly的更正之外,Step6还有一个错误:而不是
Include "d:/projects/mysite/apache_django_wsgi.conf"
它应该是
Include "d:/projects/mysite/apache/apache_django_wsgi.conf"
我完成了所有步骤,现在无法再启动 Apache Server。Wamp 图像是红色的。我可以按照步骤 3 中的说明重新启动 Apache。
我如何配置 Apache + Django + venv
要让它工作,你需要三件事:
mod_wsgi
在 python 和 apache 上安装httpd.conf
在 apache 上设置mod_wsgi
配置由您的 python 应用程序加载并依次加载的python 脚本(通常是 wsgi.py)1.官方文档中描述的很好(我用的是pip方法)。只需将 apache 发行版(ApacheHaus 为我工作,但不是Apache Lounge,我认为它遗漏了一些标题)到一个标准位置,例如C:\
或将 env varMOD_WSGI_APACHE_ROOTDIR
设置为其目录。您将需要 Visual Studio 构建工具或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"
LoadFile
如果没有以标准方式安装 Python,则此处可能是必需的。最好包括在内。
WSGIPythonHome
指令应该指向主要的 python 发行版(不是通常所说的venv),因为mod_wsgi可能有些无法正常工作。比如现在WSGIPythonPath
什么都不做。或者,您可以相应地设置 PYTHONPATH 或 PYTHONHOME 环境变量。
现在您可以监控 apache 的错误日志(默认在其日志文件夹内)。如果失败,apache 将打印 mod_wsgi 配置(意味着它已安装,但无法启动 python)和/或 python 错误(如果它设法启动)。
3.在您的 python 脚本 ( wsgy.py
) 中,您需要提供启动您的应用程序的函数“应用程序”(mod_wsgi
通常是这样编译的)。但是首先将 python 指向它将使用的模块和包,你自己的,就在带有sys.path
or的脚本中site.addsitedir
。Django 的 wsgi.py 很好,只需在其中添加所有路径配置即可。