原创

Django-Nginx-gunicorn项目部署

一、上传Django项目,安装虚拟环境

# 进入项目根目录(django项目)
cd /data/www/wwwroot/super_blogs

# 安装virtualenv  (确定安装了Python3)
pip3 install virtualenv

# 创建虚拟环境,并指定Python3,虚拟环境名称为venv(其他名称也可以)
virtualenv -p python3 venv

# 进入虚拟环境
source venv/bin/activate

# 安装所需的包(Python可以导出requirements.txt文件,直接用文件方式安装)
pip install -r requirements.txt

# 测试启动django,看是否缺少依赖,缺少的手动安装一下
python manage.py runserver

# 迁移数据库
python manage.py makemigrations
python manage.py migrate

二、安装配置gunicorn

# 继续在虚拟环境中操作
# 安装gunicorn
pip install gunicorn

# 创建gunicorn.conf配置文件
    # 配置端口
    bind = "127.0.0.1:8000"
    # workers是工作线程数,一般设置成:服务器CPU个数 + 1
    workers = 2
    # 日志
    errorlog = './logs/gunicorn.error.log'
    accesslog = './logs/gunicorn.access.log

# 创建日志目录
mkdir logs

# 启动测试  gunicorn 项目.wsgi -c 配置文件
gunicorn super_blogs(项目).wsgi -c gunicorn.conf

# 如上面启动没有问题,创建启动脚本
vim start.sh
 ---------------------start.sh脚本内容-----------------------------------------------------------
#!/bin/sh
#service name
#项目的目录
SERVICE_DIR=/data/www/wwwroot/super_blogs
#gunicorn的名字
SERVICE_NAME=gunicorn
#gunicorn的配置文件名
SERVICE_CONF=gunicorn.conf
#虚拟环境的路径
VIRTUAL_DIR=/data/www/wwwroot/super_blogs/venv/bin/activate
#pid存放的位置
PID=gunicorn\.pid
#项目启动入口
OBJECT_APP=super_blogs.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

# 添加权限 
chmod +x start.sh

# 脚本命令
./start.sh start #启动
./start.sh stop  # 停止
./start.sh restart # 重启

三、Nginx配置

# Nginx方法为反向代理
# 配置
    location / {
       proxy_pass http://127.0.0.1:8000;
       proxy_redirect off;
       proxy_set_header        Host    $host;
       proxy_set_header        REMOTE_ADDR     $remote_addr;
       proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }

# 配置静态文件访问
    location /static {
        alias /data/www/wwwroot/super_blogs/static;
    }  
正文到此结束
评论

登录后才能发表评论 登录/注册

0评论
  • 还没有评论,快来抢沙发吧!