zoukankan      html  css  js  c++  java
  • 项目 11 部署与运行

    项目 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页面头部的代码
    
    #安装curl
    pyvip@Vip:~$ sudo apt-get install curl
    ps -ef|grep python #查看当前运行进程

    Supervisor

     安装supervisor

    #安装supervisor
    sudo pip2 install supervisor

      修改pip安装源

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

      pip升级

    #修改相源
    
    wumenghua:~ root# mkdir .pip
    wumenghua:.pip root# touch pip.conf
    
    [global] 
    index-url=http://pypi.douban.com/simple
    
    cat .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.conf
    echo_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     ; 启动失败自动重试次数,默认是 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

      

    #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、安装nginx
    sudo 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、运行nginx
    sudo nginx
    
    sudo netstat -anop|grep 8888 #查看监听端口
    sudo nginx -s reload #nginx的重启
  • 相关阅读:
    yzoj P2344 斯卡布罗集市 题解
    yzoj P2350 逃离洞穴 题解
    yzoj P2349 取数 题解
    JXOI 2017 颜色 题解
    NOIP 2009 最优贸易 题解
    CH 4302 Interval GCD 题解
    CH4301 Can you answer on these queries III 题解
    Luogu2533[AHOI2012]信号塔
    Luogu3320[SDOI2015]寻宝游戏
    Luogu3187[HNOI2007]最小矩形覆盖
  • 原文地址:https://www.cnblogs.com/xuchengcheng1215/p/9259941.html
Copyright © 2011-2022 走看看