博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
项目 11 部署与运行
阅读量:5977 次
发布时间:2019-06-20

本文共 3983 字,大约阅读时间需要 13 分钟。

项目 11 部署与运行

#为什么要运行多个tornado实例#网页响应不是特别的计算密集型处理,对于计算机来说不会消耗太多的CPU,运行多个实例可以充分利用CPU#多实例又会有多端口的问题,在下面的Nginx来处理;通过打开多个端口来表示多个Web服务
#在同时打开8000和8001端口,出现无法打开8001端口的现象,试看一下是不是端口转发未做好

 

#curl命令#在Xshell里面显示页面代码pyvip@Vip:~$ curl 127.0.0.1:8000/login#显示的就是html页面代码pyvip@Vip:~$ curl 127.0.0.1:8000/login|head#显示的就是html页面头部的代码#安装curlpyvip@Vip:~$ sudo apt-get install curl

 

ps -ef|grep python #查看当前运行进程

 

Supervisor

 安装supervisor

#安装supervisorsudo pip2 install supervisor

  修改pip安装源

#修改pip安装源vi .pip/pip.conf[global]timeout = 60index-url = https://pypi.doubanio.com/simple

  pip升级

#修改相源wumenghua:~ root# mkdir .pipwumenghua:.pip root# touch pip.conf[global] index-url=http://pypi.douban.com/simplecat .pip/pip.conf   #显示如下[global] index-url=http://pypi.douban.com/simple#在执行pip install --upgrade pip#升级成功wumenghua:~ root# pip --version pip 10.0.1 from /Library/Python/2.7/site-packages/pip (python 2.7)

 

  

#1、在etc目录下创建supervisor目录sudo mkdir supervisor#2、切换用户,由于用户权限不够,所以使用root用户sudo su -#3、将信息导入到etc/supervisor/supervisord.confecho_supervisord_conf > /etc/supervisor/supervisord.conf#4、修改supervisor文件cd etc/supervisor #进入目录,可能需要先 cd ..vim supervisor.conf #打开文件files = /etc/supervisor/conf.d/*.conf #在倒数第二行include里面添加这一行代码,将上面的include的注释取消掉#5、创建配置文件目录mkdir conf.d#6、退出root用户exit#7、写入部署文件#在pycharm里面创建一个deploy目录下的Instagram_super.conf

  Instagram_super.conf

# 增加一个tornadoes组[group:tornadoes]programs=tornado-8000,tornado-8001,tornado-8002# 分别定义三个tornado的进程配置[program:tornado-8000]directory=/home/pyvip/ws/tudo/ ; 程序的启动目录command=/home/pyvip/.virtualenvs/tornado/bin/python app.py --port=8000 ; 启动命令,与手动在命令行启动的命令是一样的,注意这里home不可用~代替autostart=true     ; 在 supervisord 启动的时候也自动启动startsecs=5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了autorestart=true   ; 程序异常退出后自动重启startretries=3     ; 启动失败自动重试次数,默认是 3user=pyvip         ; 用哪个用户启动redirect_stderr=true  ; 把 stderr 重定向到 stdout,默认 falsestdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MBstdout_logfile_backups = 20     ; stdout 日志文件备份数; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)stdout_logfile = /tmp/tornado_app_8000.logloglevel=info[program:tornado-8001]directory=/home/pyvip/ws/tudo/command=/home/pyvip/.virtualenvs/tornado/bin/python app.py --port=8001autostart=truestartsecs=5autorestart=truestartretries=3user=pyvipredirect_stderr=truestdout_logfile_maxbytes = 20MBstdout_logfile_backups = 20stdout_logfile = /tmp/tornado_app_8001.logloglevel=info[program:tornado-8002]directory=/home/pyvip/ws/tudo/command=/home/pyvip/.virtualenvs/tornado/bin/python app.py --port=8002autostart=truestartsecs=5autorestart=truestartretries=3user=pyvipredirect_stderr=truestdout_logfile_maxbytes = 20MBstdout_logfile_backups = 20stdout_logfile = /tmp/tornado_app_8002.logloglevel=info

  

#8、建立远链接,将Instagram_super.conf与etc目录下的文件做远链接sudo ln -s ~/tmp/instragram/deploy/Instagram_super.conf /etc/supervisor/conf.d/ls -l /etc/supervisor/conf.d/ #检查是否已经建立远链接#9、运行部署sudo supervisord#10、查看状态sudo supervisorctl#11、基本操作stop tornadoes:tornado-8000 #停止8000端口的运行start tornadoes:tornado-8000 #开始8000端口的运行status #查看当前状态sudo supervisorctl reload #重启部署在外面kill掉8000进程,会自动重启这个进程(可以用于修复bug,用户卡顿等等)

 

Nginx

#1、安装nginxsudo apt-get install nginx#2、查看nginx是否运行ps -ef|grep nginx#如果发现root在运行nginx,就用sudo kill杀掉该进程#3、在pycharm里面创建一个nginx.conf,导入下列代码

  nginx.conf

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;    }}

 

#4、将nginx.conf拷贝到指定目录下sudo cp ~/tmp/instragram/deploy/nginx.conf sites-enabled/sudo nginx -t #测试是否可以运行nginx#5、运行nginxsudo nginxsudo netstat -anop|grep 8888 #查看监听端口sudo nginx -s reload #nginx的重启

 

转载于:https://www.cnblogs.com/xuchengcheng1215/p/9259941.html

你可能感兴趣的文章
通过jsp请求Servlet来操作HBASE
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
mysql多实例实例化数据库
查看>>
javascript 操作DOM元素样式
查看>>
HBase 笔记3
查看>>
【Linux】Linux 在线安装yum
查看>>
Atom 编辑器系列视频课程
查看>>
[原][osgearth]osgearthviewer读取earth文件,代码解析(earth文件读取的一帧)
查看>>
mybatis update返回值的意义
查看>>