目标WSGI脚本'/ opt / python / current / app / ... /wsgi.py'无法作为Python模块加载

时间:2017-03-26 03:20:51

标签: python django apache amazon-web-services mod-wsgi

我正在尝试在aws beanstalk上部署一个django应用程序,但我得到了500.

我得到了ImportError,并且我已经尝试过网络建议的所有内容,我认为,这一切都没有结束。

来自aws服务器日志的跟踪:

getIntLimited

wsgi.py 文件:

-------------------------------------
/var/log/httpd/error_log
-------------------------------------
[Sun Mar 26 02:55:17.126990 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] mod_wsgi (pid=11381): Target WSGI script '/opt/python/current/app/src/kirr/wsgi.py' cannot be loaded as Python module.
[Sun Mar 26 02:55:17.127048 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] mod_wsgi (pid=11381): Exception occurred processing WSGI script '/opt/python/current/app/src/kirr/wsgi.py'.
[Sun Mar 26 02:55:17.127087 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] Traceback (most recent call last):
[Sun Mar 26 02:55:17.127244 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "/opt/python/current/app/src/kirr/wsgi.py", line 7, in <module>
[Sun Mar 26 02:55:17.127252 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]     application = get_wsgi_application()
[Sun Mar 26 02:55:17.127347 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "/opt/python/run/venv/lib/python3.4/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
[Sun Mar 26 02:55:17.127354 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]     django.setup(set_prefix=False)
[Sun Mar 26 02:55:17.127446 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "/opt/python/run/venv/lib/python3.4/site-packages/django/__init__.py", line 22, in setup
[Sun Mar 26 02:55:17.127453 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]     configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
[Sun Mar 26 02:55:17.127584 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "/opt/python/run/venv/lib/python3.4/site-packages/django/conf/__init__.py", line 53, in __getattr__
[Sun Mar 26 02:55:17.127602 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]     self._setup(name)
[Sun Mar 26 02:55:17.127630 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "/opt/python/run/venv/lib/python3.4/site-packages/django/conf/__init__.py", line 41, in _setup
[Sun Mar 26 02:55:17.127635 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]     self._wrapped = Settings(settings_module)
[Sun Mar 26 02:55:17.127655 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "/opt/python/run/venv/lib/python3.4/site-packages/django/conf/__init__.py", line 97, in __init__
[Sun Mar 26 02:55:17.127659 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]     mod = importlib.import_module(self.SETTINGS_MODULE)
[Sun Mar 26 02:55:17.127780 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "/opt/python/run/baselinenv/lib64/python3.4/importlib/__init__.py", line 109, in import_module
[Sun Mar 26 02:55:17.127786 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]     return _bootstrap._gcd_import(name[level:], package, level)
[Sun Mar 26 02:55:17.127802 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
[Sun Mar 26 02:55:17.127818 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
[Sun Mar 26 02:55:17.127831 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "<frozen importlib._bootstrap>", line 2212, in _find_and_load_unlocked
[Sun Mar 26 02:55:17.127843 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
[Sun Mar 26 02:55:17.127854 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
[Sun Mar 26 02:55:17.127865 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
[Sun Mar 26 02:55:17.127881 2017] [:error] [pid 11381] [remote 127.0.0.1:45055]   File "<frozen importlib._bootstrap>", line 2224, in _find_and_load_unlocked
[Sun Mar 26 02:55:17.127902 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] ImportError: No module named 'kirr'

/etc/httpd/conf.d/的 wsgi.conf

import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "kirr.settings")
application = get_wsgi_application()

我的django应用程序中有两个位于LoadModule wsgi_module modules/mod_wsgi.so WSGIPythonHome /opt/python/run/baselinenv WSGISocketPrefix run/wsgi WSGIRestrictEmbedded On <VirtualHost *:80> Alias /static/ /opt/python/current/app/static/ <Directory /opt/python/current/app/static/> Order allow,deny Allow from all </Directory> WSGIScriptAlias / /opt/python/current/app/src/kirr/wsgi.py <Directory /opt/python/current/app/> Require all granted </Directory> WSGIDaemonProcess wsgi processes=1 threads=15 display-name=%{GROUP} \ python-path=/opt/python/current/app:/opt/python/run/venv/lib64/python3.4/site-packages:/opt/python/run/venv/lib/python3.4/site-packages user=wsgi group=wsgi \ home=/opt/python/current/app WSGIProcessGroup wsgi </VirtualHost> LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 内的配置文件:

.elasticbeanstalk

这就是我的尝试:

ATTEMPT 1:Some建议它可能是python版本问题。我使用python 3.4重新构建了我的django应用程序,与beanstalk相同,但没有效果。

ATTEMPT 2:正如建议的here,我已经更改了wsgi文件的权限。为此,我ssh到beanstalk(.elasticbeanstalk/**01_Packages.config**: `packages: yum: git: [] mysql-server: [] mysql: [] libjpeg-turbo-devel: [] zlib-devel: []` .elasticbeanstalk/**02_Python.config**: `container_commands: 01_migrate: command: "source /opt/python/run/venv/bin/activate && python src/manage.py migrate --noinput" leader_only: true 02_createsu: command: "source /opt/python/run/venv/bin/activate && python src/manage.py createsu" leader_only: true 03_collectstatic: command: "source /opt/python/run/venv/bin/activate && python src/manage.py collectstatic --noinput" option_settings: "aws:elasticbeanstalk:application:environment": DJANGO_SETTINGS_MODULE: “kirr.settings" "PYTHONPATH": "/opt/python/current/app/src:$PYTHONPATH" "ALLOWED_HOSTS": ".elasticbeanstalk.com" "aws:elasticbeanstalk:container:python": WSGIPath: src/kirr/wsgi.py NumProcesses: 3 NumThreads: 20 "aws:elasticbeanstalk:container:python:staticfiles": "/static/": "www/static/" ),cd到目录然后:

eb ssh

没效果。

按照建议here尝试3,我已将SOLINUX值更改为禁用:

$ sudo chmod a+x wsgi.py

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试:

WSGIDaemonProcess wsgi threads=15 display-name=%{GROUP} \
    python-home=/opt/python/run/venv \
    python-path=/opt/python/current/app/src \
    user=wsgi group=wsgi

您的项目父目录的路径不正确。也没有使用首选方法来声明Python虚拟环境的位置。

关于后者,请务必阅读文档:

另请参阅Django文档:

由于您只运行一个WSGI应用程序,因此建议您设置:

WSGIApplicationGroup %{GLOBAL}

答案 1 :(得分:0)

所以,显然我已将配置文件保存在错误的文件夹中。 .elasticbeanstalk/代替. ebextensions/。使用后者修复了问题。

如果git不想添加隐藏文件夹,请记得强制git-add:

git add -f .ebextensions/