• 项目 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的重启
  • 相关阅读:
    .Net Cache及(HttpRuntime.Cache与HttpContext.Current.Cache的区别)
    Autofac 属性注入的方式
    AutoFac创建实例的方法解析
    MongoDB 增删改查 CRUD 操作
    MongoDB 3.4版本在windows环境下的安装与配置
    Stack Overflow 2017 开发者调查报告
    使用SVN对GitHub进行版本管理
    MongoDB.Driver for C#
    Dapper.Net 轻量级的ORM 框架2
    Selenium webdriver 安装(一)
  • 原文地址:https://www.cnblogs.com/xuchengcheng1215/p/9259941.html
Copyright © 2020-2023  润新知