tornado项目部署
tornado是一个为了解决高并发的web框架,所以一般部署都会采用多进程部署项目,使之发挥出最大的自身优势(高并发)
1、进程数的确定依据,一般为每个CPU核心开启一个进程
2、安装多进程管理工具supervisor
sudo pip install supervisor
配置supervisor
运行echo_supervisord_conf命令输出默认的配置项,可以如下操作将默认配置保存到文件中
echo_supervisord_conf > supervisord.conf
vim 打开编辑supervisord.conf文件,修改
[include]
files = relative/directory/*.ini
为
[include]
files = /etc/supervisor/*.conf
include选项指明包含的其他配置文件。
将编辑后的supervisord.conf文件复制到/etc/目录下
sudo cp supervisord.conf /etc/
然后我们在/etc目录下新建子目录supervisor(与配置文件里的选项相同),并在/etc/supervisor/中新建tornado管理的配置文件tornado.conf。
[group:tornadoes]
programs=tornado-8000,tornado-8001,tornado-8002,tornado-8003
[program:tornado-8000]
command=/usr/bin/python /data/py_projects/wechat.py --port=8000
directory=/data/py_projects
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/home/python/tornado.log
loglevel=info
[program:tornado-8001]
command=/usr/bin/python /data/py_projects/wechat.py --port=8001
directory=/data/py_projects
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/home/python/tornado.log
loglevel=info
[program:tornado-8002]
command=/usr/bin/python /data/py_projects/wechat.py --port=8002
directory=/data/py_projects
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/home/python/tornado.log
loglevel=info
[program:tornado-8003]
command=/usr/bin/python /data/py_projects/wechat.py --port=8003
directory=/data/py_projects
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/home/python/tornado.log
loglevel=info
启动
supervisord -c /etc/supervisord.conf
查看 supervisord 是否在运行:
ps aux | grep supervisord
supervisorctl
我们可以利用supervisorctl来管理supervisor。
supervisorctl
> status # 查看程序状态
> stop tornadoes:* # 关闭 tornadoes组 程序
> start tornadoes:* # 启动 tornadoes组 程序
> restart tornadoes:* # 重启 tornadoes组 程序
> update # 重启配置文件修改过的程序
执行status命令时,显示如下信息说明tornado程序运行正常:
supervisor> status
tornadoes:tornado-8000 RUNNING pid 32091, uptime 00:00:02
tornadoes:tornado-8001 RUNNING pid 32092, uptime 00:00:02
tornadoes:tornado-8002 RUNNING pid 32093, uptime 00:00:02
tornadoes:tornado-8003 RUNNING pid 32094, uptime 00:00:02
3、配置NGINX反向代理
修改配置文件
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#添加内容,如果为多台服务器,IP使用服务器的外网IP
upstream tornadoes {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#添加的内容
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme; # 协议 http https
proxy_pass http://tornadoes;
}
#location / {
# root html;
# index index.html index.htm;
#}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
重启NGINX
/usr/local/nginx/sbin/nginx -s reload