Django + Vue 使用Nginx + uWsgi部署(前后端分离)

1 Django端

1.1 settings.py中更改

STATIC_ROOT = os.path.join(BASE_DIR, 'static/dist')
# 导入前后端静态资源后更改即可

DEBUG = True

ALLOWED_HOSTS = ['*']

1.2 django端打包静态资源

python manage.py collectstatic

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

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;
        }
}

4 Nginx启动

systemctl restart nginx 				# 开启nginx 
tail -f /var/log/nginx/access.log 		# 查看nginx接入日志 
tail -f /var/log/nginx/error.log 		# 查看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 端口号

6.uwsgi报错处理

6.1 问题报错

realpath() of uwsgi.ps failed: No such file or directory [core/utils.c line 3654]

6.2 解决问题

# 原因:
当前目录下有一个uwsgi.pid。因为执行了uwsgi的初始化操作之后。pid号是变更的。但是这个uwsgi.pid中存储的还是旧有的pid号。所以报错。
# 解决
删除uwsgi.pid,然后重新执行uwsgi --ini uwsgi.ini。然后会重新生成一个uwsgi.pid。这时候在查看uwsgi进程,就正常了

7.nginx

7.1 问题报错

Job for nginx.service failed because the control process exited with error code. See "systemctl stat

7.2 解决问题

# 1.配置完后没有写分号,或者少大括号
posted @ 2020-12-10 17:24  狐狸大大爱吃糖  阅读(795)  评论(0编辑  收藏  举报