如何在虚拟环境中安装 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 服务器上执行所有这些操作。我最后的问题如下
- APXS 通常在什么地方 Ubuntu
- 如何更改代码片段以在那里使用 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
简介
我有一个用 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 Apacheapxs
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 thestart-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 服务器上执行所有这些操作。我最后的问题如下
- APXS 通常在什么地方 Ubuntu
- 如何更改代码片段以在那里使用 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