2017-01-20 3 views
0

Ich halte diesen Fehler in der Apache error.log empfangen, wenn ich die URL für dieses Projekt finden Sie unter:Der Versuch, eine django Anwendung zu konfigurieren mod_wsgi verwenden

[Fri Jan 20 21:04:16.143990 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] mod_wsgi (pid=18618): Target WSGI script '/srv/botbot/src/botbot/botbot/wsgi.py' cannot be loaded as Python module. 
[Fri Jan 20 21:04:16.144124 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] mod_wsgi (pid=18618): Exception occurred processing WSGI script '/srv/botbot/src/botbot/botbot/wsgi.py'. 
[Fri Jan 20 21:04:16.144195 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] Traceback (most recent call last): 
[Fri Jan 20 21:04:16.144255 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] File "/srv/botbot/src/botbot/botbot/wsgi.py", line 9, in <module> 
[Fri Jan 20 21:04:16.144335 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326]  application = get_wsgi_application() 
[Fri Jan 20 21:04:16.144381 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] File "/srv/botbot/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application 
[Fri Jan 20 21:04:16.144437 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326]  django.setup() 
[Fri Jan 20 21:04:16.144487 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] File "/srv/botbot/lib/python2.7/site-packages/django/__init__.py", line 17, in setup 
[Fri Jan 20 21:04:16.144540 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326]  configure_logging(settings.LOGGING_CONFIG, settings.LOGGING) 
[Fri Jan 20 21:04:16.144586 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] File "/srv/botbot/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in __getattr__ 
[Fri Jan 20 21:04:16.144638 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326]  self._setup(name) 
[Fri Jan 20 21:04:16.144675 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] File "/srv/botbot/lib/python2.7/site-packages/django/conf/__init__.py", line 44, in _setup 
[Fri Jan 20 21:04:16.144711 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326]  self._wrapped = Settings(settings_module) 
[Fri Jan 20 21:04:16.144747 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] File "/srv/botbot/lib/python2.7/site-packages/django/conf/__init__.py", line 92, in __init__ 
[Fri Jan 20 21:04:16.144793 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326]  mod = importlib.import_module(self.SETTINGS_MODULE) 
[Fri Jan 20 21:04:16.144822 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
[Fri Jan 20 21:04:16.144856 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326]  __import__(name) 
[Fri Jan 20 21:04:16.144884 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] File "/srv/botbot/src/botbot/botbot/settings/__init__.py", line 1, in <module> 
[Fri Jan 20 21:04:16.144930 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326]  from base import * 
[Fri Jan 20 21:04:16.145008 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] File "/srv/botbot/src/botbot/botbot/settings/base.py", line 27, in <module> 
[Fri Jan 20 21:04:16.145053 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326]  SECRET_KEY = os.environ['WEB_SECRET_KEY'] 
[Fri Jan 20 21:04:16.145085 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__ 
[Fri Jan 20 21:04:16.145118 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326]  raise KeyError(key) 
[Fri Jan 20 21:04:16.145157 2017] [:error] [pid 18618:tid 140192977487616] [remote 66.90.146.30:326] KeyError: 'WEB_SECRET_KEY' 

Dies ist meine wsgi.py Datei:

import os 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "botbot.settings") 

# This application object is used by any WSGI server configured to use this 
# file. This includes Django's development server, if the WSGI_APPLICATION 
# setting points here. 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

Das ist meine .env Datei:

# Required 
SECRET_KEY='password1' 
WEB_PORT=8000 
EMAIL_BACKEND='django.core.mail.backends.console.EmailBackend' 
GOPATH=$VIRTUAL_ENV 
WEB_SECRET_KEY='password1' 
STORAGE_URL=postgres://ubuntu:[email protected]:5432/botbot 
REDIS_PLUGIN_STORAGE_URL=redis://localhost:6379/0 
REDIS_PLUGIN_QUEUE_URL=redis://localhost:6379/1 
PUSH_STREAM_URL=http://localhost:8080/pub/?id={id} 

# Set encoding if the system hasn't done it properly 
LANG=en_US.UTF-8 
PYTHONIOENCODING=utf8 

# Optional 
# MEMCACHE_URL=127.0.0.1:11211 
# STATIC_ROOT=/var/www/botbot/static 
# MEDIA_ROOT=/var/www/botbot/uploads 
# DEBUG=True 
# SMTP_URL=smtp://user:[email protected]:port 
# SMTP_TLS=True 
# ALLOWED_HOSTS=host1,host2 
# INCLUDE_DJANGO_ADMIN=False 
# EXCLUDE_NICKS=nick1,nick2 

Das ist meine apache conf-Datei:

012.351.
<VirtualHost *:80> 
     ServerName server.test.com 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     SetEnv WEB_SECRET_KEY password1 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
     DocumentRoot /srv/botbot/src/botbot 
     <Directory /srv/botbot/src/botbot/botbot> 
       <Files wsgi.py> 
         Require all granted 
       </Files> 
     </Directory> 

     WSGIDaemonProcess botbot python-path=/srv/botbot/src/botbot/botbot:/srv/botbot/lib/python2.7/site-packages 
     WSGIProcessGroup botbot 
     WSGIScriptAlias//srv/botbot/src/botbot/botbot/wsgi.py 

</VirtualHost> 

Dies ist die App, die ich versuche zu bauen: https://github.com/BotBotMe/botbot-web.

Wie Sie sehen können, habe ich versucht, die SetEnv-Variable in der Apache Conf zu setzen, aber ohne Glück. Ich bin mir nicht einmal sicher, ob das das Richtige ist, egal was ich mache, ich bekomme immer noch den Fehler unten.

Antwort

0

Ich glaube, dass Sie SetEnvIf Richtlinie versuchen sollte, wie in Apache-Dokumentation zu lesen:

The internal environment variables set by this directive are set after 
most early request processing directives are run, such as access 
control and URI-to-filename mapping. If the environment variable you're 
setting is meant as input into this early phase of processing such as 
the RewriteRule directive, you should instead set the environment 
variable with SetEnvIf. 

Wahrscheinlich, wenn Sie es von SetEnv einstellen wollen - es ist einfach nicht verfügbar für die django app ist, wenn noch zu starten.

Aber wahrscheinlich das Beste, was Sie tun können - ist diese Umgebungsvariable in einem Skript vor der Ausführung zu setzen.

Glückliche Codierung!

+0

Weder '' SetEnv'' oder '' SetEnvIf'' gesetzt Prozess breite Umgebungsvariablen für WSGI Anwendungen von mod_wsgi gehostet. Sie setzen pro Request Variablen nur im WSGI '' environ'' Dictionary, was nicht hilft, wenn Code nach prozessweiten Umgebungsvariablen sucht. Das Setzen von Variablen in einem Vorlaufskript ist für Apache httpd, das vom Betriebssystem gestartet wurde, ein Problem und wird nicht empfohlen. –

0

landete ich die folgende Zeile in meiner wsgi.py Datei Aufsummierung:

os.environ['WEB_SECRET_KEY'] = 'password' 

wo ‚password‘ an die in der .env-Datei für die WEB_SECRET_KEY Variable angegebene Passwort Folge gleich ist.

Ich musste rekursiv auch das Verzeichnis/srv (das die App und nichts anderes enthält) zum www-data Benutzer chown.

Dieses Dokument war hilfreich: https://gist.github.com/GrahamDumpleton/b380652b768e81a7f60c

Verwandte Themen