我从apache 2.2和python 2.7(64bit)的following location下载了mod_wsgi。 (我想让django在我的电脑上运行。)
每当我添加以下行:
LoadModule wsgi_module modules/mod_wsgi.so
Apache无法启动。谁能告诉我这个问题可能是什么?
答案 0 :(得分:25)
以下是为Django设置Apache所需要做的事情。我假设您在Windows( 32位)上使用Python 2.7( 32位)并安装了WAMP服务器( 32位)。
Download mod_wsgi-win32-ap22py27-3.3.so。或者下载相应的.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
最佳教程链接:
其实我不明白为什么人们无法修复它。我在这里看到很多问题,我甚至发布了一些......所以,我想直接写一个初始设置版本作为答案
答案 1 :(得分:0)
尝试使用以下网站获取python扩展的非官方Windows二进制文件 http://www.kaij.org/blog/?p=123 https://github.com/kirang89/pycrumbs/pull/28
答案 2 :(得分:0)
如果有人使用此功能并且未发现它,则步骤中存在不一致。在第5步中,它引用文件名apache_mydjango.conf
在第6步中,它引用文件名apache_django_wsgi.conf
这些显然都应该是同一个名字 - 你走哪条路并不重要 - 但我花了一段时间试图弄清楚它为什么不起作用。
答案 3 :(得分:0)
仅适用于运行Windows 64版本的用户。
我创建了wsgi。现在你只需要安装python并运行apache。 配置已在包中设置。只需下载该软件包,然后按照&#39;步骤跟踪.txt文件中的说明进行操作。礼包。
您无需从任何地方下载python和apache以及mod_wsgi.so。我编译了so文件,兼容python和apache2版本。这样您就可以部署了。 只是在apache配置中,文档根目录已设置为Apache2中的cgi-bin文件夹。
可以从Zip package
下载包答案 4 :(得分:0)
除了Olly的更正,Step6还有另一个错误: 而不是
Include "d:/projects/mysite/apache_django_wsgi.conf"
应该是
Include "d:/projects/mysite/apache/apache_django_wsgi.conf"
我已完成所有步骤,现在无法启动Apache Server。 Wamp图像为红色。我可以按照步骤3中的描述重新启动Apache。
答案 5 :(得分:0)
我如何配置Apache + Django + venv
要使其正常工作,您需要三件事:
mod_wsgi
httpd.conf
mod_wsgi
加载的python脚本(通常为wsgi.py),并依次加载您的python应用程序 1。在官方文档中有足够好的描述(我使用了pip方法)。只需将apache发行版解包(ApacheHaus为我工作,但不是 Apache Lounge,我错过了一些我认为的标头)到一个{strong>标准的地方,例如C:\
或将env var MOD_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"
如果未按标准方式安装Python,则这里LoadFile
可能是必需的。更好地包括在内。
WSGIPythonHome
指令应指向主要的python发行版(而不是通常所说的 venv ),因为 mod_wsgi 可能无法正常工作。例如,WSGIPythonPath
现在什么都不做。另外,您可以相应地设置PYTHONPATH或PYTHONHOME env vars。
现在,您可以监视apache的错误日志(默认情况下位于其日志文件夹中)。 如果失败,apache将打印mod_wsgi配置(表示已安装,但无法启动python)和/或如果成功启动则显示python错误。
3。。在python脚本(wsgy.py
)中,您需要提供函数“ application” (mod_wsgi
通常是编译后的) ),这将启动您的应用。但是首先要在脚本中使用sys.path
或site.addsitedir
将python指向您将要使用的模块和软件包。 Django的wsgi.py很好,只需在其中添加所有路径conf。