【问题标题】:Installing mod_wsgi on WAMP server running on Windows 7在 Windows 7 上运行的 WAMP 服务器上安装 mod_wsgi
【发布时间】:2012-07-21 02:32:18
【问题描述】:

我从following location 下载了用于 apache 2.2 和 python 2.7(64 位)的 mod_wsgi。 (我正在尝试让 django 在我的计算机上运行)。

每当我添加以下行时:

LoadModule wsgi_module modules/mod_wsgi.so

Apache 无法启动。谁能告诉我可能是什么问题?

【问题讨论】:

  • 你确定你的模块目录中有mod_wsgi.so吗?
  • 当你尝试启动 apache 时会出现什么错误?
  • 是的,mod_wsgi.so 文件在我的模块目录中。 wamp 图标只是保持黄色,不会变成绿色。当我取出模块时,它变成绿色。当我尝试从“Apache Modules”下拉菜单中选择模块时,出现以下错误:“Could no execute menu item (internal error) [exception] could not perform service action: The service has not been started”

标签: python apache windows-7 wamp mod-wsgi


【解决方案1】:

以下是为 Django 设置 Apache 时需要做的事情。我假设您在安装了 WAMP 服务器(32 位)的 Windows(32 位)上使用 Python 2.7(32 位)。

  1. Downloadmod_wsgi-win32-ap22py27-3.3.so。或下载您各自的 .so 兼容文件

  2. 在 Windows 上将其名称更改为 mod_wsgi.so 并将其复制到 /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 | Published my microsoft.
  2. mod_wsgi Quick Install guide
  3. Django site
  4. Django site

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

【讨论】:

  • 我已经做了很多这样的事情。我基本上无法通过第 3 步。我的 apache 没有成功重启……有什么想法?
  • 那么让我们先澄清一件事。您获取的 mod_wsgi.so 需要 64 位 Apache 和 64 位 Python。这个答案提到的需要 32 位 Apache 和 32 位 Python。您安装了哪些版本的 Apache 和 Python?它们是 32 位还是 64 位?您必须对所有三个组件(Apache、Python 和 mod_wsgi.so)使用相同的版本,不能混合使用 32 位和 64 位版本。在此答案未涵盖的情况下,您必须做的另一件事是,您必须为所有用户安装 Python,而不仅仅是您安装它的用户。
  • 我检查过一切确实是 64 位的。但是,我不太确定如何确保为所有用户安装了它。我该怎么做?
  • 你最初是如何安装 Python 的?基于 GUI 的安装程序或批处理安装程序。在 GUI 中,您需要在其中一个屏幕上为所有用户专门选择安装。如果是批处理安装程序,那么它只会为当前用户安装,除非您更改批处理文件。我认为您可以通过在系统范围注册表中查找 Python 条目来判断系统范围。
  • 我重新安装了 python 并修复了它。我不认为它是为所有用户安装的。感谢您的帮助。
【解决方案2】:

尝试以下网站获取用于 python 扩展的非官方 Windows 二进制文件 http://www.kaij.org/blog/?p=123 https://github.com/kirang89/pycrumbs/pull/28

【讨论】:

    【解决方案3】:

    以防万一有人在使用它并且没有发现它,步骤中存在不一致。在第 5 步中,它指的是文件名apache_mydjango.conf

    在第 6 步中,它指的是文件名apache_django_wsgi.conf

    这些显然应该是同一个名字——无论你选择哪条路都没有关系——但我花了一段时间试图弄清楚为什么它不起作用。

    【讨论】:

      【解决方案4】:

      除了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】:

        我如何配置 Apache + Django + venv

        要让它工作,你需要 3 件事:

        1. 在 python 和 apache 上安装 mod_wsgi
        2. 在 apache 上设置 httpd.conf
        3. 配置由mod_wsgi 加载的python 脚本(通常是wsgi.py),然后加载您的python 应用程序

        1. 官方文档中描述的很好(我用的是pip方法)。只需将 apache 发行版(ApacheHaus 为我工作,但 不是 Apache Lounge,我认为它遗漏了一些标题)到一个 标准 地方,如 C:\ 将 env var 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 通常是这样编译的)来启动您的应用程序。但首先将 python 指向它将使用的模块和包,以及您自己的,就在带有sys.pathsite.addsitedir 的脚本中。 Django 的 wsgi.py 很好,只要在前面加上所有的路径配置即可。

        【讨论】:

          【解决方案6】:

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

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

          您无需从任何地方下载 python 和 apache 以及 mod_wsgi.so。我已经编译了so文件,并兼容了python和apache2版本。以便您准备好部署。 只是在 apache config 中,文档根目录已设置为 Apache2 中的 cgi-bin 文件夹。

          包可以从Zip package下载

          Instructions and package usage

          【讨论】:

            猜你喜欢
            • 2012-11-03
            • 2015-06-21
            • 2016-02-01
            • 2014-08-02
            • 1970-01-01
            • 2011-07-21
            • 1970-01-01
            • 1970-01-01
            • 2018-03-10
            相关资源
            最近更新 更多