在我们的生产服务器上,我们运行的是 Ubuntu 12.04,为了确保我们的应用程序在预定义的一致环境中运行,我们使用 Pythonbrew 编译自定义 Python。我创建了一个将运行我们的 API 服务器的用户,该用户拥有自己的 Python 2.7.2 环境,使用 Pythonbrew 创建,并使用 pip 安装了必要的包。
我还在系统上安装了 uWSGI,它将包装 API 应用程序并通过 mod_wsgi 将其提供给 Apache。问题是我无法让 uWSGI 使用正确的 python 二进制文件。当前配置如下所示:
[uwsgi]
socket = 127.0.0.1:3031
processes = 4
chdir = /home/app/
pythonpath = /home/app
gid = 1002
uid = 1002
module = api
callable = APP
enable-threads = true
当我尝试在终端上运行此配置时:
uwsgi --ini app.ini
它无法导入某些模块。此模块仅安装在 API 用户正在使用的 Pythonbrew 环境中。问题是 uWSGI 使用 /usr/bin 中的默认 python 二进制文件。
一种解决方案是在 API 用户环境中使用使用 pip 安装的单独 uWSGI,但我真的很想使用系统的 uWSGI,因为它与操作系统更好地集成。
有没有办法指定应该使用哪个 Python 二进制 uWSGI,然后安装一个单独的?如果我必须安装一个单独的 uWSGI 实例,让它在系统启动时启动的最佳方式是什么?
编辑:刚刚意识到它可能没有使用 python 二进制文件,而只是针对它的库,所以我无法使用 wsgi 的默认安装和非默认 python。但是问题仍然存在,将自定义构建的 uWSGI 集成到系统中的最佳方式是什么。