在AWS Elastic Beanstalk上,在“运行Python 3.6的64位Amazon Linux 2017.09 v2.6”平台上, mod_wsgi
configuration似乎有问题。 我在/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
指令更改为以下(从而删除冒号分隔的path):
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中列出的同样bug,在mod_wsgi
4.4.15中已经修复。 但是,AMI预装了w / mod24_wsgi-python36.x86_64==3.5-1.24.amzn1
。
如果我尝试使用.ebextensions脚本来修复WSGIDaemonProces
,那么它会被一个烘焙的部署钩子解决,无论如何,默认情况下,烘烤的默认设置似乎被破坏。 我怎样才能解决这个问题?