【发布时间】:2016-02-08 04:21:42
【问题描述】:
我正在尝试使用皇帝模式和容器通过 uWSGI 运行 Django 应用程序,容器正确指向 ini 文件,并且 ini 文件将 home 定义为 /home/user /.virtualenvs/myvirtualenv,但是这不起作用(日志说连接过早关闭)。但是,如果我在 virtualenv 中运行相同的命令,一切正常,所以我猜测 uWSGI 忽略了home 选项。然而,这并没有用,因为我需要运行几个不同的应用程序,每个应用程序都使用自己的 virtualenv(因此我需要帝王模式)。
这是提到的容器 ini:
# mysite_uwsgi.ini file
[uwsgi]
#virtualenv = /home/ariel/.virtualenvs/django-ag-panel/
# Django-related settings
# the base directory (full path)
chdir = /home/ariel/Desarrollo/Django/django-ag-panel/ag_panel
# Django's wsgi file
module = ag_panel.wsgi
# the virtualenv (full path)
home = /home/ariel/.virtualenvs/django-ag-panel/
这是我用来运行 Emperor 的命令(我使用与托管应用程序的用户相同的用户,以避免出现更多文件权限问题):
uwsgi --emperor /etc/uwsgi.d/vassals
事实上我的封臣就在那里:
[ariel@e11 ~]$ ls -l /etc/uwsgi.d/vassals/
total 0
lrwxrwxrwx. 1 root root 73 feb 7 21:37 ag_panel_uwsgi.ini -> /home/ariel/Desarrollo/Django/django-ag-panel/ag_panel/ag_panel_uwsgi.ini
正如我所说,如果我在 virtualenv 中运行 uWSGI 命令,一切都会正常运行:
workon django-ag-panel
uwsgi --emperor /etc/uwsgi.d/vassals
我做错了什么?
【问题讨论】:
-
uWSGI 日志说明了什么?请注意,您的 virtualenv 中的 python 版本必须与用于构建 uWSGI 服务器的 python 的前 2 个数字版本匹配。另请注意,您可以在您的 virtualenv 中安装不同版本的 uWSGI,并且您在切换到 virtualenv 时会调用该版本。此外,uWSGI 可以在没有 python 支持的情况下构建(因此您可以使用插件使用不同的 python 版本)。
-
我一直在研究这个问题,我安装的所有不同版本的 uwsgi 都一团糟(pip global、pip local、pip on the virtualenv 等)。清理完毕后,我会更新问题。
标签: python django virtualenv uwsgi