在运行在Windows 7上的WAMP服务器上安装mod_wsgi

13
我是一名有用的助手,可以为您翻译以下编程相关内容:我从以下位置下载了适用于Apache 2.2和Python 2.7(64位)的mod_wsgi。(我正在尝试在我的计算机上运行Django。)
每当我添加以下行时:
LoadModule wsgi_module modules/mod_wsgi.so

Apache启动失败。有人能告诉我可能出了什么问题吗?

你确定你的模块目录中有 mod_wsgi.so 文件吗? - Jon Lin
当您尝试启动Apache时,它会给您什么错误提示? - Jon Lin
是的,mod_wsgi.so文件在我的模块目录中。Wamp图标只是保持黄色,不会变成绿色。当我拿出这个模块时,它就变成了绿色。当我尝试从“Apache模块”下拉菜单中选择该模块时,我会收到以下错误消息:“无法执行菜单项(内部错误)[异常]无法执行服务操作:服务尚未启动”。 - de1337ed
6个回答

27

以下是设置Apache以运行Django所需执行的步骤。假设您正在使用已安装WAMP服务器(32位)的Windows操作系统(32位),并且使用Python 2.7(32位)。

  1. 下载 mod_wsgi-win32-ap22py27-3.3.so 或您相应的兼容文件。

  2. 将其更名为 mod_wsgi.so 并复制到 Windows 上的 /Program Files/Apache Software Foundation/Apache22/modules

  3. 使用管理员权限打开 httpd.conf。现在,你会发现一系列带有 LoadModule ... 的行。只需将 LoadModule wsgi_module modules/mod_wsgi.so 添加到该列表中。

    你完成了部分工作..可以重新启动Apache,应该不会出现任何错误。

  4. 现在您需要将其与您的Django项目链接起来。

  5. 在您的Django项目根文件夹中,添加 apache 文件夹并创建 django.wsgi (不要更改此名称)和 apache_mydjango.conf

  6. 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. port25.technet.com | 由 Microsoft 发布
  2. mod_wsgi 快速安装指南
  3. Django 网站
  4. Django 网站

实际上我不明白为什么人们无法解决这个问题。我在这里看到了很多关于它的问题,我甚至发布了一些...所以,我想直接将一个初始设置版本编写为答案。


2
我已经做了很多相关的工作。基本上我无法完成第3步。我的Apache无法成功重启... 有什么想法吗? - de1337ed
3
首先,让我们澄清一件事。你下载的mod_wsgi.so需要64位的Apache和64位的Python。而这个答案提到的则需要32位的Apache和32位的Python。你安装的Apache和Python版本是什么?它们是32位还是64位?你必须使用相同的版本来安装所有三个组件:Apache、Python和mod_wsgi.so,不能混合32位和64位版本。另外一个你必须做对的事情是,你必须为所有用户安装Python,而不仅仅是你安装时的用户。 - Graham Dumpleton
1
你是如何安装Python的呢?使用基于GUI的安装程序还是批处理安装程序?如果使用GUI,你需要在其中一个屏幕上明确选择为所有用户安装。如果使用批处理安装程序,则只会为当前用户安装,除非你更改其中一个批处理文件。我认为你可以通过查看系统范围内的注册表中的Python条目来确定是否为系统范围内安装。 - Graham Dumpleton
@AmitG 可能没有针对该端点的处理程序... 没有清晰的信息,我无法发表评论。 - Surya
@Surya,我创建了一个问题,链接是http://stackoverflow.com/questions/20505796/django-mod-wsgi-wamp-with-php。如果你有空,我会非常感谢你的帮助! - Amit G
显示剩余3条评论

0
除了Olly的更正之外,在第6步中还有另一个错误: 应该是


Include "d:/projects/mysite/apache_django_wsgi.conf"

应该是这样的

Include "d:/projects/mysite/apache/apache_django_wsgi.conf"

我完成了所有步骤,但现在无法启动Apache服务器。 Wamp图像变成了红色。 我可以按照步骤3中所述重新启动Apache。


0

0

如果有人在使用此内容时没有注意到,这里存在一些步骤上的不一致。第5步中提到了文件名apache_mydjango.conf

而在第6步中则提到了文件名apache_django_wsgi.conf

这两个文件名显然应该是相同的 - 无论你选择哪种方式都可以 - 但我花了一段时间才弄清楚为什么它不起作用。


0

如何配置Apache + Django + venv

为了使其工作,您需要三件事:

  1. 在Python和Apache上安装mod_wsgi
  2. 在Apache上设置httpd.conf
  3. 配置由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.pathsite.addsitedir在脚本中指定Python将使用的模块和软件包,以及您自己的模块和软件包。Django的wsgi.py很好,只需在其中预置所有路径配置即可。


-1

仅适用于运行Windows 64位版本的用户。

我已经创建了wsgi。现在您只需要安装Python并运行Apache即可。 配置已经在软件包中设置好了。只需下载软件包并按照“Steps to follow.txt文件”中的说明进行操作。

您不需要从任何地方下载Python、Apache和mod_wsgi.so。我已经编译了so文件,并提供了兼容的Python和Apache2版本,以便您可以随时部署。 只需在Apache配置中将文档根目录设置为Apache2内部的cgi-bin文件夹即可。

软件包可以从Zip package下载

说明和软件包使用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接