Tornado部署與運行

運行多個Tornado實例python

網頁響應不是特別的計算密集型處理
多個實例充分利用 CPU
多端口怎麼處理
4.
使用Supervisor監控Tornado進程
安裝(注意看是否須要指定使用python2版本)nginx

sudo pip2 install supervisor
安裝完以後先啓動 sudo supervisord
1
2
檢查配置文件 /etc/supervisor/supervisord.conf 沒有的話本身建立
echo_supervisord_conf > /etc/supervisor/supervisord.confweb

增長 Supervisor 配置文件到 /etc/supervisor/conf.d
增長一個tornadoes組服務器

[group:tornadoes]
programs=tornado-8000,tornado-8001,tornado-8002app

# 分別定義三個tornado的進程配置負載均衡

[program:tornado-8000]
directory=/home/pyvip/ws/tudo/ ; 程序的啓動目錄
command=/home/pyvip/.virtualenvs/py3/bin/python app.py --port=8080 ; 啓動命令,與手動在命令行啓動的命令是同樣的,注意這裏home不可用~代替
autostart=true ; 在 supervisord 啓動的時候也自動啓動
startsecs=5 ; 啓動 5 秒後沒有異常退出,就看成已經正常啓動了
autorestart=true ; 程序異常退出後自動重啓
startretries=3 ; 啓動失敗自動重試次數,默認是 3
user=pyvip ; 用哪一個用戶啓動
redirect_stderr=true ; 把 stderr 重定向到 stdout,默認 false
stdout_logfile_maxbytes = 20MB ; stdout 日誌文件大小,默認 50MB
stdout_logfile_backups = 20 ; stdout 日誌文件備份數
; stdout 日誌文件,須要注意當指定目錄不存在時沒法正常啓動,因此須要手動建立目錄(supervisord 會自動建立日誌文件)
stdout_logfile = /tmp/tornado_app_8000.log
loglevel=infotornado

[program:tornado-8001]
directory=/home/pyvip/ws/tudo/
command=/home/pyvip/.virtualenvs/tornado/bin/python app.py --port=8001
autostart=true
startsecs=5
autorestart=true
startretries=3
user=pyvip
redirect_stderr=true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /tmp/tornado_app_8001.log
loglevel=info命令行

[program:tornado-8002]
directory=/home/pyvip/ws/tudo/
command=/home/pyvip/.virtualenvs/tornado/bin/python app.py --port=8002
autostart=true
startsecs=5
autorestart=true
startretries=3
user=pyvip
redirect_stderr=true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /tmp/tornado_app_8002.log
loglevel=info
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
啓動和管理代理

啓動supervisorrest

使用默認的配置文件 /etc/supervisor/supervisord.conf

sudo supervisord

明確指定配置文件

sudo supervisord -c /home/pyvip/working/supervisord.con

使用 user 用戶啓動supervisord

sudo supervisord -u user

查看、操做進程狀態

(tornado) pyvip@Vip:~/ws/tudo$ sudo supervisorctl

[sudo] password for pyvip:

tornadoes:tornado-8000 RUNNING pid 17652, uptime 0:00:28

tornadoes:tornado-8001 RUNNING pid 17653, uptime 0:00:28

tornadoes:tornado-8002 RUNNING pid 17654, uptime 0:00:28

中止運行tornado-8001服務器進程
supervisor> stop tornadoes:tornado-8001

tornados:tornado-8001: stopped

中止運行整個tornado服務器進程組
supervisor> stop tornadoes:

tornadoes:tornado-8000: stopped

tornadoes:tornado-8001: stopped

tornadoes:tornado-8002: stopped

supervisor> status

tornadoes:tornado-8000 STOPPED Jun 26 07:43 PM

tornadoes:tornado-8001 STOPPED Jun 26 07:43 PM

tornadoes:tornado-8002 STOPPED Jun 26 07:43 PM

supervisorctl 命令介紹

中止某一個進程,program_name 爲 [program:x] 裏的 x

supervisorctl stop program_name

啓動某個進程

supervisorctl start program_name

重啓某個進程

supervisorctl restart program_name

結束全部屬於名爲 groupworker 這個分組的進程 (start,restart 同理)

supervisorctl stop groupworker:

結束 groupworker:name1 這個進程 (start,restart 同理)

supervisorctl stop groupworker:name1

中止所有進程,注:start、restart、stop 都不會載入最新的配置文件

supervisorctl stop all

載入最新的配置文件,中止原有進程並按新的配置啓動、管理全部進程

supervisorctl reload

根據最新的配置文件,啓動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啓

supervisorctl update

若是讓supervisor 在web頁面上展現,須要修改/etc/supervisor/supervisord.conf配置文件(有用戶名密碼),而後按照如下方式從新加載:

sudo supervisorctl -u user -p 123 reload

使用 Nginx 做爲反向代理
搭配 tornado 服務使用

安裝和運行

安裝
sudo apt-get install nginx
檢測配置文件正確可用
sudo nginx -t
運行
sudo nginx
修改了配置文件後重啓
sudo nginx -s reload
nginx 配置文件

主配置文件是 /etc/nginx/nginx.conf

項目對應的配置文件放到 /etc/nginx/conf.d/ 或者 /etc/nginx/sites-enabled/

upstream tornadoes{
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}

proxy_next_upstream error;

server {
listen 8888; # 通常是 80
server_name 127.0.0.1;

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; # 把請求方向代理傳給tornado服務器,負載均衡 proxy_pass http://tornadoes; }} 

相關文章
相關標籤/搜索