j'enquête depuis un certain temps maintenant, et tous les documents semblent dire que cela est possible, mais chaque fois que j'augmenter notre elastic beanstalk
mod_wsgi
NumProcesses
config ci-dessus 1
, notre site d'administration est inaccessible.Elastic Beanstalk en cours d'exécution mod_wsgi application Django avec des processus multiples provoquant 302 boucle
J'ai créé une réduction où j'ai testé avec une application django
par défaut, et le comportement est toujours présent. J'ai également essayé de répliquer localement, cependant mes config apache
et mod_wsgi
ne peuvent pas répliquer le problème. Fondamentalement, ce que je vois, c'est que chaque tentative de connexion, 302 Found redirect
ramène à la page de connexion. J'ai effacé les sessions de la base de données, et je peux confirmer que l'application crée une nouvelle entrée pendant la connexion POST
, mais l'utilisateur est toujours redirigé vers la page de connexion (voir config et logs ci-dessous). Nous avons également un équilibreur de charge et des sessions persistantes configurées sur l'instance (s) Elastic Beanstalk
.
Voici le python
contenu config de notre .ebextensions
option_settings:
"aws:elasticbeanstalk:container:python":
WSGIPath: site/settings/wsgi/__init__.py
NumProcesses: 4
NumThreads: 15
Voici le wsgi.conf
résultant tiré de l'instance
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>
Voici une capture du access_log
montrant la redirection
::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
Maintenant, l'ensemble de configs et les informations suivantes sont extraites de mon installation locale.
# 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>
devrait 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
La question que je, est pourquoi est-ce un travail et un produit une boucle? Je peux voir une option sur le WSGIScriptAlias
, mais ce n'est pas disponible sur la config elastic beanstalk
, et la documentation dit encore que c'est faisable. Qu'est-ce que j'oublie ici? Pourquoi avoir plusieurs processus à l'origine de ce problème?
Remarques supplémentaires
A défaut mod_wsgi
version 3.5
travail mod_wsgi
Version 4.5.15
J'ai également pu obtenir mon application wsgi
locale travaillant avec python 3.6