【问题标题】:python-home option fails when attempting to configure Django/mod_wsgi application in daemon mode on CentOS尝试在 CentOS 上以守护程序模式配置 Django/mod_wsgi 应用程序时,python-home 选项失败
【发布时间】:2018-12-05 14:04:23
【问题描述】:

我有一个 Django 应用程序在 Centos 7.5 上运行,带有 Apache 2.4 和 mod_wsgi 4.6.4。我很难让 mod_wsgi 使用我希望它使用的虚拟环境。我通过 yum 安装了 Python 3.6 并用它来创建一个虚拟环境。我从源代码编译了 mod_wsgi,使用 with-python 选项将其指向正确的 Python 二进制文件。我希望工作但不起作用的(近似)Apache 配置如下:

# Required because of some third-party packages that use the 
# simplified GIL state API
WSGIApplicationGroup %{GLOBAL}

<VirtualHost *:80>
    WSGIDaemonProcess myapp python-home=/path/to/venv python-path=/path/to/my/app
    WSGIProcessGroup myapp
    WSGIScriptAlias / /path/to/my/app/wsgi.py
</VirtualHost>

<VirtualHost *:443>
    WSGIProcessGroup myapp
    WSGIScriptAlias / /path/to/my/app/wsgi.py
</VirtualHost>

此配置找不到虚拟环境中安装的任何软件包。转储 sys.path 表明该路径不包含预期的 /path/to/venv/lib/python3.6/site-packages ,而是 /lib/python3.6/site-packages (即系统目录)。我能够让我的应用运行的唯一方法是将WSGIDaemonProcess 指令更改为:

WSGIDaemonProcess myapp python-path=/path/to/my/app:/path/to/venv/lib/python3.6/site-packages

第一个配置(推荐使用python-home)在 macOS 10.12 上使用 Python 3.6 和 mod_wsgi 4.5.24 对我有用。这两个环境之间的一个很大区别是在 CentOS 服务器上启用了 SELinux,但 audit2allow 没有显示任何可以解释我的问题的内容。

【问题讨论】:

标签: python django centos mod-wsgi


【解决方案1】:

我明白了。我仍然不确定为什么我第一次无法解决这个问题,但我怀疑这是一个 SELinux 问题。问题是虚拟环境目录下的所有内容都需要有httpd_sys_content_t 上下文,动态加载的二进制库除外,它需要httpd_sys_script_exec_t。一旦我这样做了,WSGIDaemonProcesspython-home 参数就会按预期工作。

【讨论】:

  • 最好不要将东西放在主目录下,这会使很多事情复杂化。
  • 这已经有一段时间了,但我在 Ubuntu 上遇到了同样的问题,不幸的是,我不熟悉设置服务器。如何将虚拟环境设置为httpd_sys_content_t
  • 您将执行“chcon -R unconfined_u:object_r:httpd_sys_content_t:s0 /path/to/your/virtualenv”。如果您想查看它所做的更改,请使用“-Rv”而不是“-R”。如果那里有任何动态加载的二进制库(通常是扩展名为 .so 的文件,例如用于数据库适配器),则需要使用 "chcon unconfined_u:object_r:httpd_sys_script_exec_t:s0 /path/to/your /图书馆.so”。如果您没有使用 SELinux 的经验,并且这不是生产服务器,最好将其关闭 (sudo setenforce 0)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
  • 2012-10-12
  • 2011-07-18
  • 2012-05-16
  • 2017-05-20
相关资源
最近更新 更多