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静态资源
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.配置完后没有写分号,或者少大括号