Django + Vue 使用Nginx + uWsgi部署

1 Django端

1.1 settings.py中更改

STATIC_ROOT = os.path.join(BASE_DIR, 'static/dist')
# 导入前后端静态资源后更改即可
​
DEBUG = True  # 为True不容易暴露项目信息,当然也不显示BUG信息
​
ALLOWED_HOSTS = ['*']
settings

1.2 django端打包静态资源

# 会在static 下生成
python manage.py collectstatic 
django

1.3 在uwsgi_conf中写入uwsgi.ini

# vim /root/shiyanlou_project/uwsgi_conf/uwsgi.ini
# vim中,A键进入插入模式,ESC退出,:wq保存并退出
# 或者pycharm中直接粘贴也可以
​
[uwsgi]
# 使用Nginx连接时使用,Django程序所在服务器地址和端口号
socket=127.0.0.1:8000
# 项目目录绝对路径
chdir=/home/worker/opwf_project/opwf
# 项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=opwf/wsgi.py
# 进程数(机器核数的1倍)
processes=4
# 线程数
threads=20
# uwsgi服务器的角色
master=True
# 存放进程编号的文件
pidfile=uwsgi.pid
# 日志文件
daemonize=uwsgi.log
# 指定依赖的虚拟环境
virtualenv=/root/.virtualenvs/syl
uwsgi.ini

2 打包Vue静态资源

2.1 打包命令

cnpm run build

2.2 提取dist静态资源

  • 将静态资源放置后端static下

3 Nginx写入配置文件

  • 写入etc/nginx/conf.d/django.conf

server {
        listen 1594;
        server_name 192.168.56.100;
                location /static {
                        alias /home/worker/opwf_project/opwf/static;
                }
​
                location / {
                        include uwsgi_params;
                        uwsgi_pass 127.0.0.1:8000;
                        uwsgi_ignore_client_abort on;
                }
}
​
server {
        listen 8888;
        server_name 192.168.56.100;
        #access_log logs/access_example.log  main;
        root /home/worker/opwf_project/opwf/static/dist;
        location / {
                try_files $uri $uri/ @router;
        }
        location @router {
                rewrite ^.*$ /index.html last;
        }
}
django.conf

4 Nginx启动

systemctl restart nginx                 # 开启nginx 
tail -f /var/log/nginx/access.log       # 查看nginx接入日志 
tail -f /var/log/nginx/error.log        # 查看nginx错误日志 
Nginx启动

5 uWSGI启动

cd /home/worker/opwf_project/uwsgi_conf 
# 进入项目目录 
​
uwsgi --ini uwsgi.ini 
# 启动uwsgi的 django项目 
# http://192.168.56.11:8888/ 访问项目 
​
uwsgi --stop uwsgi.pid 
# 关闭uwsgi
​
tail -f uwsgi.log 
# 查看uwsgi日志
​
ps -ef|grep uwsgi 
# 查看uwsgi服务是否启动
​
netstat -anptu | grep 8888      
# 查看8888端口被哪一个程序 占用
​
kill -9 端口号
uWSGI启动

6 杂项

"""
如果之前有过部署的项目 只是删除原来的 django.conf 是不够的  nginx部署的时候会生成一个.django.conf.swp 的文件 切记一并删除
"""
原文地址:https://www.cnblogs.com/pythonqwertytre/p/14122098.html