gpt4 book ai didi

nginx - 使用 nginx 反向代理在生产中设置 Tornado Web 服务

转载 作者:行者123 更新时间:2023-12-04 02:39:55 28 4
gpt4 key购买 nike

过去几个月,我一直在 tornado 中开发 Web 服务,在我的测试环境中运行我使用的服务:

python index.py

index.py 是我的 Tornado 应用程序处理程序,它监听端口 8001。然后我使用 http://localhost:8001 从 Web 服务请求.我现在正在将我的测试环境部署到一个应该反射(reflect)生产环境的临时环境。我如何在生产中运行 Tornado ?我猜我需要为应用程序创建某种守护进程,但我不知道从哪里开始!

最佳答案

您可以使用一些工具。

一、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 )上启动 4 个( numprocs_start )index.py 实例。我们通过 --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/;
}
}

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

关于nginx - 使用 nginx 反向代理在生产中设置 Tornado Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14749655/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com