zoukankan      html  css  js  c++  java
  • 使用uwsgi和gunicorn部署Django项目

    https://uwsgi-docs.readthedocs.io/en/latest/Management.html

    https://uwsgi-docs.readthedocs.io/en/latest/Management.html

    先了解下相关杀进程命令

    ps -ef|grep uwsgi|grep -v grep|awk '{print $2}'|xargs kill -9
    
    //查看uwsgi相关接口
    ps -ef|grep uwsgi
    #查看相关端口
    netstat -anp|grep 80 
    # 杀死进程
    kill -s 9 端口号
    

    编写ini配置文件

    随便在一个文件夹下新建 项目名.ini文件

    [uwsgi]
    #项目目录
    chdir=/data/web/momoxiaoming_django   
    #项目启动模块
    module=momoxiaoming_django.wsgi  
    master=True
    pidfile=/data/web/uwsgi_config/momoxiaoming_django.pid  #进程id存放文件
    vacuum=True
    max-requests=5000  #最大请求数为5000
    daemonize=/data/web/uwsgi_config/momoxiaoming_django.log #日志文件目录,设置了此项可以让程序后台运行
    http=:9100 #监听9100端口,注意这里不是socket,当时困恼了几天
    env = LANG=en_US.UTF-8 #防止部分文件名特殊字符乱码
    

    启动新项目

    uwsgi --ini 项目名.ini文件
    

    二. gunicorn 部署

    在项目根目录新建配置文件gunicorn.confg

    bind = "0.0.0.0:8000"
    # workers是工作线程数,一般设置成:服务器CPU个数 + 1
    workers = 2
    #./代表当前目录
    errorlog = './logs/gunicorn.error.log'
    accesslog = './logs/gunicorn.access.log'
    

    项目启动

    普通命令行启动
    gunicorn 项目名.wsgi -c gunicorn.confg
    
    脚本启动(推荐)

    新建gunicorn_start.sh
    将上面的变量修改成自己的项目即可

    #!/bin/sh
    #service name
    #项目的目录
    SERVICE_DIR=/data/web/momoxiaoming_django
    #gunicorn的名字
    SERVICE_NAME=gunicorn
    #gunicorn的配置文件名
    SERVICE_CONF=gunicorn.conf
    #虚拟环境的路径
    VIRTUAL_DIR=/data/web/momoxiaoming_django/venv/bin/activate
    #pid存放的位置
    PID=gunicorn.pid
    #项目启动入口
    OBJECT_APP=momoxiaoming_django.wsgi
    
    cd $SERVICE_DIR
    
    source $VIRTUAL_DIR
    
    case "$1" in
    
        start)
            gunicorn $OBJECT_APP -c $SERVICE_DIR/$SERVICE_CONF >/dev/null 2>&1 &
            echo $! > $SERVICE_DIR/$PID
            echo "*** start $SERVICE_NAME ***"
            ;;
        stop)
            kill `cat $SERVICE_DIR/$PID`
            rm -rf $SERVICE_DIR/$PID
            echo "*** stop $SERVICE_NAME ***"
    
            sleep 2
            P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
            if [ "$P_ID" == "" ]; then
                echo "*** $SERVICE_NAME process not exists or stop success ***"
            else
                echo "*** $SERVICE_NAME process pid is:$P_ID ***"
                echo "*** begin kill $SERVICE_NAME process,kill is:$P_ID ***"
                kill -9 $P_ID
            fi
            ;;
        restart)
            $0 stop
            sleep 2
            $0 start
            echo "*** restart $SERVICE_NAME ***"
            ;;
    
        *)
            ## restart
            $0 stop
            sleep 2
            $0 start
            ;;
    esac
    exit 0
    

    启动项目

    sh gunicorn_start.sh start
    
    

    停止项目

    sh gunicorn_start.sh stop
    


    作者:momoxiaoming
    链接:https://www.jianshu.com/p/6a9f242e9083
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    C++实现反射
    ubuntu下安装secureCRT(含破解方法)
    2018 年力扣高频算法面试题汇总-难题记录-鸡蛋掉落
    对于opencv全面貌的认识和理解
    关于c++类的一些知识的总结
    vs2017+opencv4.0.1安装配置详解(win10)
    leetcode-120-三角形最小路径和
    leetcode-64-最小路径和
    leetcode-917-仅仅反转字母
    leetcode-914-卡牌分组
  • 原文地址:https://www.cnblogs.com/Andy-Shi/p/11057489.html
Copyright © 2011-2022 走看看