学习tornado有一周多了,自己按着demo中的例子手动搬代码,收获还是有的,加深了理解。demo: http://demo.pythoner.com/itt2zh/ch8.html
大概明白了它怎么工作后,开始部署一个线上环境跑跑。
nginx: 分配客户端请求给upstream组中列出的Tornado实例。其中静态目录的文件由nginx直接提供。
supervisord: tornado进程管理。
tornado: 功能实现。
关于nginx
在/etc/nginx/site-enable/default中 新增:
upstream frontends{ server 127.0.0.1:8880; } server { listen 8000; location / { proxy_read_timeout 1800; 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; proxy_pass http://frontends; } }
关于supervisord
确认是否已install supervisord,安装后可查看状态“sudo supervisorctl status”;
$ vi /etc/supervisor/supervisord.conf
; supervisor config file [unix_http_server] file=/var/run/supervisor.sock ; (the path to the socket file) chmod=0700 ; sockef file mode (default 0700) [supervisord] logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) childlogdir=/var/log/supervisor ; (‘AUTO‘ child log dir, default $TEMP) ; the below section must remain in the config file for RPC ; (supervisorctl/web interface) to work, additional interfaces may be ; added by defining them in separate rpcinterface: sections [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket ; The [include] section can just contain the "files" setting. This ; setting can list multiple files (separated by whitespace or ; newlines). It can also contain wildcards. The filenames are ; interpreted as relative to this file. Included files *cannot* ; include files themselves. [include] files = /etc/supervisor/conf.d/*.conf
"
[include] files = /etc/supervisor/conf.d/*.conf
"
即可在/etc/supervisor/conf.d/ 目录下$vi tornado_demo.conf
[program:tornado_demo] command=python /var/www/tornado_example/munger/main.py --port=8880 autostart=true autorestart=true redirect_stderr=true stdout_logfile = /var/log/munger/munger.log stderr_logfile = /var/log/munger/error.log
关于tornado
实例使用 http://demo.pythoner.com/itt2zh/ch2.html
2.3 复杂示例:The Alpha Munger 例子即可。
其中 重点需要关注的是supervisord的用法。
1. sudo supervisorctl stop tornado_demo
2. sudo supervisorctl start tornado_demo
3. sudo supervisorctl status
4. sudo /etc/init.d/supervisor start/stop/restart/reload
修改*.conf文件后,需要reload
参考链接:
1. http://gracece.com/2014/03/Tornado-supervisor+nginx/
2. http://blog.csdn.net/tengzhaorong/article/details/12833157
3. https://serholiu.com/tornado-nginx-supervisord