dis*_*dng 13 python http gunicorn
我用烧瓶制作了一个API.我的应用程序没有任何静态资产,因此我没有理由使用nginx.
我希望在80号港口上运行枪炮.
我有一个"部署脚本":
mkdir .log 2> /dev/null
DEBUG=0 gunicorn -b 0.0.0.0:80 backend:app --access-logfile .log/access.log --error-logfile .log/general.log
Run Code Online (Sandbox Code Playgroud)
我希望在80号港口用枪炮authbind.我在这里遵循了这个指南.
请注意,我能够运行 authbind python -m SimpleHTTPServer 80
当我试图跑authbind ./deployment.run 80,
我看到以下错误:
2013-04-25 15:32:55 [24006] [ERROR] Can't connect to ('0.0.0.0', 80)
2013-04-25 15:33:08 [24018] [INFO] Starting gunicorn 0.17.4
2013-04-25 15:33:08 [24018] [ERROR] Retrying in 1 second.
2013-04-25 15:33:09 [24018] [ERROR] Retrying in 1 second.
2013-04-25 15:33:10 [24018] [ERROR] Retrying in 1 second.
2013-04-25 15:33:11 [24018] [ERROR] Retrying in 1 second.
2013-04-25 15:33:12 [24018] [ERROR] Retrying in 1 second.
Run Code Online (Sandbox Code Playgroud)
任何想法为什么我无法将gunicorn绑定到端口80?
有什么建议?
您可以使用authbind它来实现此目的。安装authbind
sudo apt-get install authbind
Run Code Online (Sandbox Code Playgroud)
然后使用 auth bind 修改 80 端口,确保 80 端口可以被非超级用户(又称无超级用户权限)使用。您可以使用以下三个命令来实现此目的。
sudo touch /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
sudo chown USER /etc/authbind/byport/80
Run Code Online (Sandbox Code Playgroud)
USER - 可以是系统上的任何用户,例如 bhatman、ubuntu 或 ec2-user。
注意:只需将 80 更改为任何所需的端口,它将适用于任何端口。我的朋友,请负责任地使用它。:)
现在你的gunicorn命令看起来像这样:
authbind gunicorn -c gunicorn.conf wsgi:app
Run Code Online (Sandbox Code Playgroud)
authbind只需在您的gunicorn命令之前添加即可
奖励:如果您在gunicorn之前使用一些命令,例如newrelic等,那么您需要在authbind之后添加 --deep 标志
authbind --deep newrelic-admin run-program gunicorn -c gunicorn.conf wsgi:app
Run Code Online (Sandbox Code Playgroud)
有关 authbind 的更多信息请查看其 ubuntu 联机帮助页:此处
但在盲目运行这些命令之前,我建议您阅读以下几点。
NGINX 不是gunicorn 的必需品,您可以使用任何Web 服务器。你的架构应该总是这样的。
WEB SERVER (NGINX, AWS ALB etc) -> APPLICATION SERVER (Gunicorn, uWsgi etc) -> Application (Flask, Django etc)
Run Code Online (Sandbox Code Playgroud)
希望这对您有帮助。
尝试将authbind放入您的部署脚本中,例如:
mkdir .log 2> /dev/null
DEBUG=0 authbind gunicorn -b 0.0.0.0:80 backend:app --access-logfile .log/access.log --error-logfile .log/general.log
Run Code Online (Sandbox Code Playgroud)
然后运行./deployment.run 80。
(此外,您的脚本似乎没有使用任何参数;也许80用$1?替换了您的脚本)
| 归档时间: |
|
| 查看次数: |
24924 次 |
| 最近记录: |