supervisor部署tornado
- supervisord常见命令
supervisorctl shutdown 关闭命令 supervisord -c /etc/supervisord.conf 启动supervisord supervisorctl restart all // 重启所有 supervisorctl restart program-name // 重启某一进程,program-name为[program:xx]中的xx supervisorctl status //查看supervisord状态
- 生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
- 编辑配置文件
由于配置文件生成在etc目录下,我们要做进一步配置
带有;的行是被注释的,并不真正发挥作用
[program:olddream]
command=python3 /dingshub/olddream/server.py --port=
; 注意上面一行配置,由于我在linux为python建立的软链接名为python3,各程序员实践的时候需要按照情况作调整
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs= ; number of processes copies to start (def )
directory=/dingshub/olddream/ ; 网站文件夹实际路径,这一路经下放着tornado的起始配置文件server.py
;umask= ; umask for process (default None)
;priority= ; the relative start priority (default )
autostart=true ; start at supervisord start (default: true)
;autorestart=unexpected ; whether/when to restart (default: unexpected)
;startsecs= ; number of secs prog must stay running (def. )
;startretries= ; max # of serial start failures (default )
;exitcodes=, ; 'expected' exit codes for process (default ,)
;stopsignal=QUIT ; signal used to kill process (default TERM)
;stopwaitsecs= ; max num secs to wait b4 SIGKILL (default )
;stopasgroup=false ; send stop signal to the UNIX process group (default false)
;killasgroup=false ; SIGKILL the UNIX process group (def false)
;user=chrism ; setuid to this UNIX account to run the program
redirect_stderr=true ; redirect proc stderr to stdout (default false)
stdout_logfile=/dingshub/olddream/dings.log ; 最好设置一个log日志文件
;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups= ; # of stdout logfile backups (default )
;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default )
;stdout_events_enabled=false ; emit events on stdout writes (default false)
;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups= ; # of stderr logfile backups (default )
;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default )
;stderr_events_enabled=false ; emit events on stderr writes (default false)
;environment=A="",B="" ; process environment additions (def no adds)
;serverurl=AUTO ; override serverurl computation (childutils)
loglevel=info ; 这是一个中等级别的日志
- nginx配置(一个地址多个站点)
分站点配置---这是tornado网站的配置细节 我的nginx是通过编译源代码安装的,在nginx的安装目录下,新建一个vhosts文件夹(如果没有的话)
在vhosts文件夹下建立以 .conf为后缀的文件
例如:
upstream tornados{
     server 127.0.0.1:8989; #可以发现这里8989端口与supervisord中的端口一致
        server 127.0.0.1:8021;
        server 127.0.0.1:8022;
  }
  proxy_next_upstream error;
  server {
    listen    8989;
    server_name sniffcpcssocks.com;
    root /dingshub/olddream;
    index server.py;
  # 静态文件直接由Nginx处理
      location /static/{
          alias /data/web/advance_python/tornado_asyn/img/;
          expires 24h;
      }
      location /{
          proxy_pass_header Server;
          proxy_set_header Host $http_host;
          proxy_redirect off;
          proxy_set_header X-Real-IP $remote_addr;
          # 把请求方向代理传给tornado服务器,负载均衡
          proxy_pass http://tornados;
      }
 }
- nginx conf文件夹下 nginx.conf主文件配置(我也并不了解nginx配置要诀---这种配置起码可以保证网站跑起来)
worker_processes  ;
events {
    worker_connections  ;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    include /nginx/vhosts/*.conf;   #这一句是一个ip地址,多个站点配置的关键
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       8999;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
- tornado网站主程序文件server.py(注意!这一程序文件里,不要出现任何注释符号,还有中文,因为supervisord执行时可能会出现异常)
import tornado.ioloop
import tornado.web
import tornado.httpserver
import os
..........
settings={
    'template_path':os.path.join(os.getcwd(),"templates"),
    'static_path':os.getcwd()+"//templates//static"
}
def App():
    return tornado.web.Application([
        (r'/loadcolspage',loadcolspage),
        .........
        (r'/xsfp/list', xsfp_v)],**settings)
if __name__=="__main__":
    app = App()
    print(("current_path:"),os.path.join(os.getcwd()+"//templates",'static'))
    myserver = tornado.httpserver.HTTPServer(app)
    myserver.listen()
    tornado.ioloop.IOLoop.current().start()
supervisor部署tornado的更多相关文章
- 第八章:部署Tornado
		到目前为止,为了简单起见,在我们的例子中都是使用单一的Tornado进程运行的.这使得测试应用和快速变更非常简单,但是这不是一个合适的部署策略.部署一个应用到生产环境面临着新的挑战,既包括最优化性能, ... 
- supervisor 部署文档
		supervisor 部署文档 supervisor 需要Python支持,如果不用系统的supervisor,单独安装python python 安装 #依赖 yum install python- ... 
- flask +gevent+nginx+Gunicorn+supervisor部署flask应用
		上篇 可以完美部署flask ,但是视乎在结合gevent+apscheduler 实现异步非阻塞后台和定时任务的时候视乎不是那么完美.请教了前辈,决定使用flask+gevent+nginx+g ... 
- CentOS 下部署Nginx+Gunicorn+Supervisor部署Flask项目
		原本之前有一部分东西是在Windows Server,但是由于Gunicorn不支持Windows部署起来颇为麻烦.最近转战CentOS,折腾一段时间,终于简单部署成功.CentOS新手,作为一个总结 ... 
- Linux+Nginx+Supervisor部署ASP.NET Core实操手册
		一.课程介绍 在上一节课程<ASP.NET Core托管和部署Linux实操演练手册>中我们学过net core的部署方式多样性和灵活性.我们通过远程工具输入dotnet 程序集名称.dl ... 
- flask+uwsgi+supervisor部署流程
		背景: 小鱼最近搞了个工程,python用的2.7(用3也可以),后端使用的是flask,服务器用的linux,使用 flask+uwsgi+supervisor部署 ,查阅相关博客.调试.实操,已经 ... 
- Nginx + tornado + supervisor部署
		参考链接:supervisor + Tornado + Nginx 使用详解, 用tornado ,Supervisord ,nginx架网站, tornado官方文档 项目文档树: . ├── ch ... 
- ubutu tornado python3.7.5 nginx supervisor 部署web api
		环境: 1.Ubuntu 服务器 2.python3.7.5 安装 1.python3.7.5 安装的话还是比较简单,流程大致是./configure ->make && mak ... 
- 阿里云服务器部署Tornado应用指南
		本篇详细介绍tornado应用部署到阿里云服务器上的全过程. Tornado程序地址:github https://github.com/ddong8/ihasy.git 准备工作:阿里云服务器Cen ... 
随机推荐
- 调用redis封装好的JedisUtils接口实现锁库
			1.在进行数据库操作的方法前先定义一个key值,并添加一个能区别每个key的标识 2.首先判断如果定义的key值存在的话,就直接return方法,如果不存在的话,就把key值放在jedisutil中, ... 
- BeanPostProcessor详解
			转自: https://www.jianshu.com/p/d26e8ec9c077? BeanPostProcessor也称为Bean后置处理器,它是Spring中定义的接口,在Spring容器的创 ... 
- 一加手机2 进入recovery 模式无法挂载USB存储器通过命令窗口上传ROM镜像
			试过3.0.3-0和3.0.3-1的recovery都无法使用“挂载USB大容量存储器”模式,这肯定让很多清掉系统(就是system分区)的小伙伴无力吐槽,因为这样子rom就无法在rec里面从电脑拷到 ... 
- python基础之元祖tuple
			元祖是只读列表,不可哈希,可循环查询,可切片*儿子不能改,孙子可更改--元祖里面单个元素不能更改---元祖内列表可更改增:tu1+tu2查:tu1[index] tu1[start_index:end ... 
- 【Linux开发】linux设备驱动归纳总结(六):2.分享中断号
			linux设备驱动归纳总结(六):2.分享中断号 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ... 
- HDU 1284 钱币兑换问题 (动态规划 背包方案数)
			钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ... 
- powershell 删除7天前的文件
			powershell 删除7天前的文件 $today=Get-Date #"今天是:$today" #昨天 #"昨天是:$($today.AddDays(-1))&quo ... 
- Kick Start 2019 Round F Teach Me
			题目链接 题目大意 有 $N$ 个人,$S$ 项技能,这些技能用 $1, 2, 3, \dots, S$ 表示 .第 $i$ 个人会 $c_i$ 项技能($ 1 \le c_i \le 5 $).对于 ... 
- [BZOJ2594] [WC2006]水管局长(Kruskal+LCT)
			[BZOJ2594] [WC2006]水管局长(Kruskal+LCT) 题面 SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可 ... 
- 使用正则实现php的trim函数,支持全角空格
			之前使用trim来移除一段文字开头的空格,移除不掉,发现是全角空格的锅. 便专门添加对全角空格的移除: trim($str," "); 但是效果并不好,因为trim函数对多字节字符 ... 
