【发布时间】:2017-11-06 07:51:48
【问题描述】:
我已经调查了一段时间,所有文档似乎都说这是可能的,但是每当我将 elastic beanstalk mod_wsgi NumProcesses 配置增加到 1 以上时,我们的管理站点就无法访问。
我创建了一个减少,我使用默认的django 应用程序进行了测试,并且该行为仍然存在。我也尝试在本地复制,但是我的 apache 和 mod_wsgi 配置无法复制问题。
基本上,我所看到的是,每次尝试登录都会导致302 Found redirect 返回登录页面。我已经从数据库中清除了会话,并且我可以确认应用程序在登录 POST 期间创建了一个新条目,但用户仍然被引导回登录页面(请参阅下面的配置和日志)。我们还在Elastic Beanstalk 实例上配置了负载均衡器和粘性会话。
这是来自我们的.ebextensions 的python 包含的配置
option_settings:
"aws:elasticbeanstalk:container:python":
WSGIPath: site/settings/wsgi/__init__.py
NumProcesses: 4
NumThreads: 15
这是从实例中得到的wsgi.conf
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>
这是显示重定向的access_log 截图
::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
现在,以下一组配置和信息取自我的本地安装。
# 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>
预计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
我的问题是,为什么一个工作,一个产生循环?我可以在WSGIScriptAlias 上看到一个选项,但在elastic beanstalk 配置上没有这个选项,并且文档仍然说这是可行的。我在这里想念什么?为什么有多个进程会导致此问题?
补充说明
失败mod_wsgi版本3.5
工作版mod_wsgi4.5.15
我还能够让我的本地 wsgi 应用程序与 python 3.6 一起使用
【问题讨论】:
标签: python django amazon-elastic-beanstalk mod-wsgi