在AWS Elastic Beanstalk上,在“64bit Amazon Linux 2017.09 v2.6.0 running Python 3.6”平台上,配置好像有问题mod_wsgi
。我看到这个/etc/httpd/conf.d/wsgi.conf
:
WSGIDaemonProcess wsgi processes=1 threads=15 display-name=%{GROUP} \
python-home=/opt/python/run/venv/ \
python-path=/opt/python/current/app:/opt/python/run/venv/lib64/python3.6/site-packages:/opt/python/run/venv/lib/python3.6/site-packages user=wsgi group=wsgi \
home=/opt/python/current/app
但是,我得到了这个/var/log/httpd/error_log
:
[Mon Nov 20 19:54:44.565076 2017] [:error] [pid 32080] mod_wsgi (pid=32080): Call to 'site.addsitedir()' failed for '(null)', stopping.
[Mon Nov 20 19:54:44.565444 2017] [:error] [pid 32080] mod_wsgi (pid=32080): Call to 'site.addsitedir()' failed for '/opt/python/run/venv/lib64/python3.6/site-packages:/opt/python/run/venv/lib/python3.6/site-packages'.
尝试访问该站点会导致此错误:
[Mon Nov 20 21:21:21.304605 2017] [:error] [pid 2886] [remote 71.236.217.102:39802] ModuleNotFoundError: No module named 'myappname'
如果我将WSGIDaemonProcess
指令更改为以下内容(从而删除以冒号分隔的路径):
WSGIDaemonProcess wsgi processes=1 threads=15 display-name=%{GROUP} \
python-home=/opt/python/run/venv/ \
python-path=/opt/python/current/app user=wsgi group=wsgi \
home=/opt/python/current/app
然后我不再得到ModuleNotFoundError
.
这似乎与https://github.com/GrahamDumpleton/mod_wsgi/issues/92中概述的错误相同,该错误已在mod_wsgi
4.4.15 中修复。但是,AMI 预装了 w/ mod24_wsgi-python36.x86_64==3.5-1.24.amzn1
。
如果我尝试WSGIDaemonProces
使用 .ebextensions 脚本修复 s ,则它不会被其中一个烘焙的部署钩子修复,无论如何,默认情况下烘焙的默认值似乎已被破坏。我到底该如何解决这个问题?
我今天遇到了同样的问题(“64bit Amazon Linux 2017.09 v2.6.0 running Python 3.6”,mod_wsgi 错误)。
我有一个解决方法,但我不确定它是正确的还是最直接的解决方案。
简而言之
安装最新的
mod_wsgi
.更长的解释...
检查它是否手动工作
首先,我手动执行了以下操作以检查它是否有效,然后我编写了脚本,这样它就不会在以后的部署中被破坏。
安装
mod_wsgi
需要apxs
,所以去实例并找到包:就我而言,有 3 个。最老的在 ssh 控制台上工作,所以我添加到
.ebextensions/01_packages.config
:然后在 ssh 中,我按照这个顺序来测试手动构建的版本 od
mod_wsgi
(我无法让任何yum
包工作 - 尽管它可能可以完成)。假设到目前为止一切都很好,重新启动 Apache:
然后看看
var/log/httpd/error_log
,希望你会看到:我重新加载了 Python 应用程序页面并且它正在工作(它有一个不同的错误但
mod_wsgi
正在工作)。现在进行这部分的部署。
脚本
经过几次迭代,我在
.ebextensions/...
文件中解决了这个问题:一些注意事项:
gcc
依赖项mod_wsgi
httpd24-devel
依赖于apsx
工具