Ich habe jetzt eine Zeit lang untersucht, und alle Dokumente scheinen zu sagen, dass dies möglich ist, aber wenn ich unsere elastic beanstalk
mod_wsgi
NumProcesses
Config oben 1
, unser Admin-Seite erhöhen ist nicht zugänglich.Elastic Beanstalk läuft mod_wsgi Django app mit mehreren Prozessen verursacht 302 Schleife
Ich habe eine Reduktion erstellt, wo ich mit einer Standard-App django
getestet, und das Verhalten ist immer noch vorhanden. Ich habe auch versucht, lokal zu replizieren, aber meine apache
und mod_wsgi
Config kann das Problem nicht replizieren.
Grundsätzlich, was ich sehe, ist, dass jeder versuchte Login, ein 302 Found redirect
zurück auf die Anmeldeseite verursacht. Ich habe die Sitzungen aus der Datenbank gelöscht und kann bestätigen, dass die Anwendung während der Anmeldung einen neuen Eintrag erstellt POST
, aber der Benutzer wird immer noch zurück auf die Anmeldeseite geleitet (siehe Konfiguration und Protokolle unten). Wir haben auch einen Load-Balancer und Sticky-Sitzungen konfiguriert auf der Elastic Beanstalk
Instanz (en). Hier
ist die python
enthaltenen Konfigurations unserer .ebextensions
option_settings:
"aws:elasticbeanstalk:container:python":
WSGIPath: site/settings/wsgi/__init__.py
NumProcesses: 4
NumThreads: 15
Hier ist die resultierende wsgi.conf
von der Instanz genommen
WSGIPythonHome /opt/python/run/baselinenv
WSGISocketPrefix run/wsgi
WSGIRestrictEmbedded On
<VirtualHost *:80>
Alias /static/ /opt/python/current/app/site/static/
<Directory /opt/python/current/app/site/static/>
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias//opt/python/current/app/site/settings/wsgi/__init__.py
<Directory /opt/python/current/app/>
Require all granted
</Directory>
WSGIDaemonProcess wsgi processes=4 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>
Hier wird ein Schnappen des access_log
zeigt die Umleitung
::1 - - [05/Jun/2017:13:26:18 +0000] "POST /admin/login/?next=/admin/ HTTP/1.1" 302 -
::1 - - [05/Jun/2017:13:26:18 +0000] "GET /admin/ HTTP/1.1" 302 -
::1 - - [05/Jun/2017:13:26:18 +0000] "GET /admin/login/?next=/admin/ HTTP/1.1" 200 1650
Jetzt werden die folgenden Konfigurationen und Informationen von meiner lokalen Installation übernommen.
# wsgi.conf
WSGIVerboseDebugging 'On'
WSGIPythonHome /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7
WSGISocketPrefix /tmp/wsgi
WSGIRestrictEmbedded On
<VirtualHost *:80>
Alias /static/ /Users/www/app/site/static/
<Directory /Users/www/app/site/static/>
Order allow,deny
Allow from all
</Directory>
WSGIProcessGroup _www
WSGIScriptAlias//Users/www/app/site/settings/wsgi/__init__.py \
process-group=_www
<Directory /Users/www/app/>
Require all granted
</Directory>
WSGIDaemonProcess _www processes=4 threads=15 display-name=%{GROUP} group=_www user=_www \
python-path=/Users/www/app:/usr/local/lib/python2.7 \
home=/Users/www/app/site
</VirtualHost>
erwartet access_log
::1 - - [05/Jun/2017:23:27:48 +1000] "POST /admin/login/?next=/admin/ HTTP/1.1" 302 -
::1 - - [05/Jun/2017:23:27:48 +1000] "GET /admin/ HTTP/1.1" 200 2783
Die Frage, die ich habe, ist, warum eine Arbeit tut, und man erzeugt eine Schleife? Ich kann eine Option auf der WSGIScriptAlias
sehen, aber das ist nicht verfügbar auf der elastic beanstalk
Konfig, und die Dokumentation sagt immer noch, dass dies machbar ist. Was fehlt mir hier? Warum verursacht dieses Problem mehrere Prozesse?
Zusätzliche Hinweise
Failing mod_wsgi
Version 3.5
Arbeiten mod_wsgi
Version 4.5.15
Ich war auch in der Lage zu meinem lokalen wsgi
App arbeitet mit python 3.6