美文网首页Python/Go
使用uwsgi和gunicorn部署Django项目

使用uwsgi和gunicorn部署Django项目

作者: momoxiaoming | 来源:发表于2018-11-06 10:56 被阅读0次

    1.首先上两者的官方文档

    uwsgi

    gunicorn

    一. uwsgi部署


    先了解下相关杀进程命令

    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
    
    

    相关文章

      网友评论

        本文标题:使用uwsgi和gunicorn部署Django项目

        本文链接:https://www.haomeiwen.com/subject/odwyxqtx.html