使用nginx反向代理在生产环境中设置龙卷风Web服务

在过去的几个月中,我一直在开发龙卷风的Web服务,在我的testing环境中运行我使用的服务:

python index.py 

index.py是我的龙卷风应用程序处理程序,它侦听端口8001.然后使用http://localhost:8001从Web服务请求。 我现在将我的testing环境部署到镜像生产的临时环境。 我如何着手生产龙卷风? 我猜我需要为应用程序创build一些守护进程,但我不知道从哪里开始!

有几个工具可以使用。

首先是Supervisord

Supervisord是一个“过程控制系统”,您可以配置您的流程并让Supervisor管理它们,如果它们失败就会重新启动它们,使它们更容易管理并让它们在后台运行

这里是一个示例管理员配置文件

 [program:myprogram] process_name=MYPROGRAM%(process_num)s directory=/var/www/apps/myapp command=/var/www/apps/myapp/virtualenv/bin/python index.py --PORT=%(process_num)s startsecs=2 user=youruser stdout_logfile=/var/log/myapp/out-%(process_num)s.log stderr_logfile=/var/log/myapp/err-%(process_num)s.log numprocs=4 numprocs_start=14000 

使用该配置,Supervisor将在端口14001-14004( numprocs_start )上启动4( numprocsnumprocs实例。 我们传递--PORT=%(process_num)s来让每个进程在不同的端口上启动。 你应该改变numprocsnumprocs_start以适应你的环境/设备。 一般来说,我们运行2xCPU核心进程(所以四核心处理器将有8个进程),但是可以根据你的进程做什么以及在你的代码中有多少块进行巨大的变化。

接下来,配置NGINX将请求转发到您的站点

  upstream myappbackend { server 127.0.0.1:14001 max_fails=3 fail_timeout=1s; server 127.0.0.1:14002 max_fails=3 fail_timeout=1s; server 127.0.0.1:14003 max_fails=3 fail_timeout=1s; server 127.0.0.1:14004 max_fails=3 fail_timeout=1s; } server { listen 4.5.6.7:80; server_name example.com; access_log /var/log/nginx/myapp.log main; location / { proxy_set_header Host $host; proxy_set_header X-Real-Ip $remote_addr; proxy_pass http://myappbackend/; } } 

该配置应根据您的应用程序和工作方式进行修改,这是一个非常小的配置,几乎肯定需要扩展,但这应该足以让您开始