Tornado部署与运行
运行多个Tornado实例
网页响应不是特别的计算密集型处理
多个实例充分利用 CPU
多端口怎么处理
4.
使用Supervisor监控Tornado进程
安装(注意看是否需要指定使用python2版本)
sudo pip2 install supervisor
安装完之后先启动 sudo supervisord
1
2
检查配置文件 /etc/supervisor/supervisord.conf 没有的话自己创建
echo_supervisord_conf > /etc/supervisor/supervisord.conf
增加 Supervisor 配置文件到 /etc/supervisor/conf.d
增加一个tornadoes组
[group:tornadoes]
programs=tornado-8000,tornado-8001,tornado-8002
# 分别定义三个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=info
[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
启动和管理
启动supervisor
使用默认的配置文件 /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;
}
}
Tornado部署与运行的更多相关文章
- Xamarin 跨移动端开发系列(01) -- 搭建环境、编译、调试、部署、运行
如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!好了,废话不多说,就开始吧, ...
- 用Java为Hyperledger Fabric(超级账本)开发区块链智能合约链代码之部署与运行示例代码
部署并运行 Java 链代码示例 您已经定义并启动了本地区块链网络,而且已构建 Java shim 客户端 JAR 并安装到本地 Maven 存储库中,现在已准备好在之前下载的 Hyperledger ...
- 单点登录(五)-----遇到问题-----cas server 源码部署tomcat运行报错BeanCreationException:Error creating bean with name 's
我们在上一篇文章已经解决了把下载好的cas server源码部署到tomcat缺少子项目编辑文件或者jar包导致找不到class报错的问题 单点登录(四)-----遇到问题-----cas serve ...
- 单点登录(四)-----遇到问题-----cas server 源码部署tomcat运行报错ClassNotFoundException: org.jasig.cas.CasEnvironmentCo
情况 cas单点登录 cas server 源码部署tomcat运行报错 把cas server的代码下载下来后使用gradle插件或者maven插件以及转化成eclipse·后导入发现部署到tomc ...
- Linux:Ubuntu下部署Web运行环境
Linux:Ubuntu下部署Web运行环境 本次博客将会从三部分内容详述Ubuntu系统下Web运行环境的配置: 依次是:FTP服务器的搭建.MYSQL数据库的搭建.JDK的安装等. 参考文章如下: ...
- 腾讯云上面部署PHP运行环境
现在云服务器已经很普及了,其价格.安全优势等成为不少开发者的首选.本人由于兴趣爱好,从朋友那边借了一个过来玩了两天,下面就分享整个部署流程吧. 1. 先到腾讯云官网购买服务器,这边就不演示.很简单,跟 ...
- 笔记-爬虫部署及运行工具-scrapydweb
笔记-爬虫部署及运行工具-scrapydweb 1. 简介 scrapyd是爬虫部署工具,但它的ui比较简单,使用不是很方便. scrapydweb以scrapyd为基础,增加了ui界面和监 ...
- Centos7上一次War包的部署与运行
Centos7上一次War包的部署与运行 前言 由于前段时间第一次部署一个小型的项目,时间一长所以有些步骤有时候时间一长就忘了,在此做个简单的记录 一.原始系统开发环境 操作系统:Windows10: ...
- Kettle学习笔记(一)— 环境部署及运行
目录 Kettle学习笔记(一)-环境部署及运行 Kettle学习笔记(二)- 基本操作 kettle学习笔记(三)- 定时任务的脚本执行 Kettle学习笔记(四)- 总结 Kettle简介 Ket ...
随机推荐
- phalcon: dispatcher->forward地址转发/重定向
比如,我indexController里面的indexAction,因为用户没有穿参数,我要重定向到 errorAction里面 $this->dispatcher->forward(ar ...
- ArcMap加载在线地图
SimpleGIS 小小的SimpleGIS除了提供6大地图让人喜爱之外,更有其他的能耐同样让你爱不释手. 功能1:作为出图底图地图提供商中Bing.天地图两家提供的地图是无偏移的地图,所以可直接应用 ...
- eclipse使用lombok
1.下载lombok.jar,将lombok复制到eclipse的安装路径下,如图: 2.在eclipse.ini配置文件最后加入:-javaagent:D:\Program Files\Eclips ...
- Node-Media-Server
Node-Media-Server (相对稳定可用性高) 主要应用Node.js 实现的RTSP(结合ffmpeg)/RTMP/HTTP/WebSocket/HLS/DASH流媒体服务器 特性 跨平台 ...
- ansible入门七(实战)
Ansible实战:部署分布式日志系统 本节内容: 背景 分布式日志系统架构图 创建和使用roles JDK 7 role JDK 8 role Zookeeper role Kafka role ...
- jquery下跨域请求之代码示例
场景描述: 在域A下异步获取B域下的接口: 实现方法: $.ajax({ url : (Q.lottery.serverTimeUrl || 'about:blank'), error : funct ...
- iOS 数组集合操作(交集,并集,差集,子集)
1.求数组的 交集,并集,差集 NSArray *array1 = @[@"1",@"2",@"3"]; NSArray *array2 = ...
- Week09《java程序设计》第九次作业总结
Week09<java程序设计>第九次作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 答: 2. 书面作业 本次作业题集集合 1. Li ...
- ES的Zen发现机制
ES的Zen发现机制 Zen发现机制是ElasticSearch默认的发现模块.它提供的是单播发现,但是可被拓展为支持云环境下或者其他形式的发现机制.zen 发现模块集成了其他模块,如在发现期间,节点 ...
- win2008 服务器文件夹权限配置
通过控制文件夹权限来提高站点的安全性. 这一篇权限设置包括二个方面,一个是系统目录.盘符的权限,一个是应用程序的上传文件夹权限设置. 系统目录 确保所有盘符都是NTFS格式,如果不是,可以用命令 co ...