在过去的几个月里,我一直在龙卷风中开发一个Web服务,在我的测试环境中运行我使用的服务:
python index.py
index.py是我的龙卷风应用程序处理程序,它侦听端口8001.然后我使用http://localhost:8001
从Web服务请求。我现在正在将测试环境部署到应该镜像生产的临时环境中。我如何在生产中运行龙卷风?我猜我需要为应用程序创建某种守护进程,但我不知道从哪里开始!
答案 0 :(得分:29)
您可以使用一些工具。
首先,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
)上启动index.py的4个(numprocs_start
)实例。我们传递--PORT=%(process_num)s
以使每个进程在不同的端口上启动。您应该更改numprocs
和numprocs_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/;
}
}
该配置应该根据您的应用程序及其工作方式进行修改,这是一个非常小的配置,几乎肯定需要扩展,但这应该足以让您入门