如何在虚拟环境中安装 mod_wsgi

How to Install mod_wsgi in a virtual Environement

简介

我有一个用 python 3 编写的 Web API,它使用 Flask。当我从终端 运行 网络 API 并且它由代码中的以下行托管时,代码 运行 没问题。

if __name__ == '__main__':
    app.run(host='', port=8010, debug='true')

现状

代码 运行 非常完美,我想在 Apache 服务器上设置它。然而,Apache 服务器已经有使用 python 2 构建的网站,需要 mod_wsgi 用于 python 2。

我查看了是否有办法在 apache 服务器上同时设置 mod-wsgi,但根据以下来源,您不能 mod_wsgi for Python 2 as well as Python 3 on one Apache server

尝试解决方案

我正在尝试将 mod-wsgi 安装到虚拟环境中。我从这里下载了软件包,并尝试在激活后将其安装到环境中。

我从终端 运行 sudo python setup.py install 但我得到以下错误

File "setup.py", line 139, in 'missing Apache httpd server packages.' % APXS) RuntimeError: The 'apxs' command appears not to be installed or is not executable. Please check the list of prerequisites in the documentation for this package and install any missing Apache httpd server packages.

所以我打开了压缩包中的自述文件,发现了以下内容

If you wish to use a version of Apache which is installed into a non standard location, you can set and export the APXS environment variable to the location of the Apache apxs script for your Apache installation before performing the installation.

Note that nothing will be copied into your Apache installation at this point. As a result, you do not need to run this as the root user unless installing it into a site wide Python installation rather than a Python virtual environment.

To verify that the installation was successful, run the mod_wsgi-express script with the start-server command::

mod_wsgi-express start-server

这似乎解决了我的情况,因为 Apache 没有安装在我 运行 从中执行命令的虚拟环境中,但我不知道该怎么做

我猜他们是在谈论 setup.py 文件,我应该更改路径,但我不知道如何在语法方面进行更改或我的 APXS 脚本所在的位置。

这是我认为需要mod化

的代码片段
APXS = os.environ.get('APXS')

WITH_HTTPD_PACKAGE = False

if APXS is None:
    APXS = find_program(['mod_wsgi-apxs'],
            paths=[os.path.dirname(sys.executable)])
    if APXS is not None:
        WITH_HTTPD_PACKAGE = True

if APXS is None:
    APXS = find_program(['mod_wsgi-apxs', 'apxs2', 'apxs'],
            'apxs', ['/usr/sbin', os.getcwd()])
elif not os.path.isabs(APXS):
    APXS = find_program([APXS], APXS, ['/usr/sbin', os.getcwd()])

if not WITH_TARBALL_PACKAGE:
    if not os.path.isabs(APXS) or not os.access(APXS, os.X_OK):
        raise RuntimeError('The %r command appears not to be installed or '
                'is not executable. Please check the list of prerequisites '
                'in the documentation for this package and install any '
                'missing Apache httpd server packages.' % APXS)

问题

如果有帮助,我正在 运行ning Ubuntu 12.04LTS 服务器上执行所有这些操作。我最后的问题如下

  1. APXS 通常在什么地方 Ubuntu
  2. 如何更改代码片段以在那里使用 APXS 脚本

非常感谢您的宝贵时间

对于给您带来的不便,我们深表歉意

原来我忘了在我的 apache 服务器上安装 APXS。我只是 运行 来自终端的代码并且它有效 sudo apt-get apache2-threaded-dev

更新

对于Ubuntu 18(谢谢@MagicLAMP)

sudo apt-get install apache2-dev

对于 Centos 7:(谢谢@User)

yum install httpd-devel

对于 Centos 7:

yum install httpd-devel