9.生产环境部署(Django+Uwsgi+Nginx)

1.目标
◆ 机器人:nginx,80端口,机器人通过接口访问后台管理系统获取数据;
◆ 后台管理系统:nginx->uwsgi,uwsgi8088端口,nginx代理设置8001端口;
2.Django
◆ 提取静态文件:python manage.py collectstatic;
◆ 修改配置:settings.py -> DEBUG = False;
3.Uwsgi
◆ 安装:pip3 install uwsgi;
◆ 命令测试启动:uwsgi --http 0.0.0.0:8002 --file AIQA/wsgi.py --static-map=/static=static;
◆ 配置:
◆ 在django项目同级目录创建script目录存放配置脚本;
◆ cd script,vim uwsgi.ini
# uwsig使用配置文件启动
[uwsgi]
# 项目目录
chdir=/opt/project/product/AIQA/
# 指定项目的application
module=AIQA.wsgi:application
# 指定sock的文件路径
socket=/opt/project/product/script/uwsgi.sock
# 进程个数
workers=5
pidfile=/opt/project/product/script/uwsgi.pid
# 指定IP端口
http=0.0.0.0:8088
# 指定静态文件
static-map=/static=/opt/project/product/AIQA/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/opt/project/product/script/uwsgi.log
# 权限
chmod-socket=666
◆ 启动项目:uwsgi --ini uwsgi.ini;
◆ 关闭项目:uwsgi --stop uwsgi.pid;
注意:如果多次使用上一命令启动项目,则本命令可能会失效,需要使用lsof -i :port查询项目实际使用的进程id,然 后写入到uwsgi.pid,执行关闭操作;
4.Nginx
◆ 安装:
◆ 配置yum源
vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
◆ 配置验证:yum list |grep nginx;
◆ 安装:um -y install nginx(默认安装在/etc/nginx目录);
◆ 安装验证:rpm -q nginx;
◆ 启动:service nginx start(sevice nginx命令提示);
◆ 配置:
◆ 说明:nginx总的配置文件为nginx.conf,会加载conf.d目录里的所有配置,项目及uwsgi配置信息均不要放到某个用户的目录下,避免nginx访问不了的权限问题;
◆ 配置机器人:
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/robot.access.log main;
#**机器人页面
location / {
root /opt/project/product/AIQA/static;
index index.html index.htm;
}
#**机器人接口重定向到后台管理系统
location ~*/AIQA/ {
proxy_pass http://127.0.0.1:8001;
}
}
◆ 配置后台管理系统:
server {
listen 8001;
server_name localhost;
access_log /var/log/nginx/mgbase.access.log main;
#**uwsgi请求
location / {
include uwsgi_params;
uwsgi_connect_timeout 30;
uwsgi_pass unix:///opt/project/product/script/uwsgi.sock;
}
#**静态文件
location /static {
alias /opt/project/product/AIQA/static;
}
}
5.遇到的问题
◆ 关闭uwsgi时出现signal_pidfile()/kill(): No such process [core/uwsgi.c line 1627]
原因:uwsgi.pid 的进程ID不正确;
解决:lsof -i :port查询实际进程id,修改uwsgi.pid,重新关闭;
◆ nginx启动后出现connect() to unix:///mysite.sock failed (13: Permission denied)
原因:uwsgi生成的sock的无访问权限;
解决:uwsgi.ini添加配置chmod-socket=666;






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值