我試圖部署在AWS上青苗一個Django應用程序,但我得到一個500目標WSGI腳本「的/ opt /蟒蛇/電流/應用/ ... /wsgi.py」無法加載Python模塊
我得到了ImportError,並且我已經嘗試了所有的網絡建議,我認爲,不會結束。
從AWS服務器日誌跟蹤:
-------------------------------------
/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'
的wsgi.py文件:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "kirr.settings")
application = get_wsgi_application()
/etc/httpd/conf.d/ wsgi.conf:
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
有兩個配置文件我的Django應用程序位於內.elasticbeanstalk
:
.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/"
這是我曾嘗試:
未遂1:Some認爲這可能是一個Python版本的問題。我使用python 3.4重新構建了我的django應用程序,與beanstalk一樣,但沒有任何效果。
嘗試2:如建議here,我已經改變了wsgi文件的權限。要做到這一點,我ssh到魔豆(eb ssh
),cd到目錄中,然後:
$ sudo chmod a+x wsgi.py
無影響。
未遂3,如建議here,我有SOLINUX值改爲禁用爲:
(venv)[[email protected] src]$ sudo nano /etc/selinux/semanage.conf
任何想法?
謝謝,但還是同樣的錯誤。我通過'eb ssh'訪問了/etc/httpd/conf.d/wsgi.conf文件,編輯了python-home指向venv,python-path指向了.../src但我得到了同樣的錯誤。我也不確定如何通過配置文件進行這些更改,以便在每個'eb deploy'後都會保留。謝謝 – joeDiHare