2017-03-26 63 views
1

我試圖部署在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 

任何想法?

回答

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} 
+0

謝謝,但還是同樣的錯誤。我通過'eb ssh'訪問了/etc/httpd/conf.d/wsgi.conf文件,編輯了python-home指向venv,python-path指向了.../src但我得到了同樣的錯誤。我也不確定如何通過配置文件進行這些更改,以便在每個'eb deploy'後都會保留。謝謝 – joeDiHare

0

所以,顯然我已經將配置文件保存在錯誤的文件夾中。 .elasticbeanstalk/而不是. ebextensions/。使用後者解決了這個問題。

記住強制混帳添加如果Git並不想要添加的隱藏文件夾,如:

git add -f .ebextensions/ 
相關問題