2013-04-25 145 views
3

我用烧瓶建立了一个API。我的应用程序没有任何静态资产,因此我没有理由使用nginx。让Gunicorn运行在80端口上

我希望在端口80

运行gunicorn我有一个 “部署脚本”:

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 

我希望与authbind在端口80上运行gunicorn。我在这里跟着这个guide

请注意,我能够运行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. 

任何想法,为什么我不能将gunicorn绑定到端口80?

有什么建议吗?

回答

1

尝试把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 

然后只需运行./deployment.run 80

(另外,你的脚本似乎没有使用任何参数;也许$1取代80在你的脚本?)

+0

正如Uku所提到的,Unix保护1024以下的端口,而authbind不会让普通用户神奇地绕过该端口。必须将其配置为允许某些类型的绑定 - 请参阅http://manpages.ubuntu.com/manpages/hardy/man1/authbind.1.html和http://mutelight.org/authbind。 – mahemoff 2014-02-27 23:56:48

20

如果您处于类似unix的环境中,则端口< 1024(如80)将需要超级用户权限。

+3

不是authbind的全部目的就是要重写? – disappearedng 2013-04-26 00:12:07