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评论