-
保证Django、DRF、Vuecli在本地都可以运行,并且可以通信
打包Vuecli项目:npm run build
把dist文件拷贝到服务器磁盘上
Django项目:
整个项目拷贝到服务器磁盘上 -
CentOS7 下载安装Nginx
打开 /etc/nginx/nginx.conf
server {
# Ngix的端口80
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
# 服务器ip主页
location / {
# Vue项目
root /pais/web/blog/vueblog/dist;
# Vue项目的主页
index index.html;
# 如访问http://ip/test, $uri=/test,是相对于root的相对路径
# 访问非主页的时候 会用try_files 一个个查找
# 根据自身项目设置查找路线和表达式
try_files $uri $uri/ $uri.html;
}
# for uWsgi, uWsgi的端口开在8000,访问/api的时候会转发到uWsgi
# /api是我Django主页设置的路由
location /api {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_ignore_client_abort on;
}
# DRF找不到css和js, 按理应该在这里引入放着静态资源的static文件夹,但我没找到,反正不影响Vue获取数据,先这样
location /static {
alias /path/to/your/mysite/static; # your Django project's static files - amend as required
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
每次更新了设置,需要 nginx -s reload
重新加载
打开 http://ip
有欢迎页说明设置成功(可能是centos欢迎页,可能是Nginx欢迎页)
- 按照教程下载安装uWsgi
在Django项目目录下(放着manage.py的),新建yourfile.xml
<uwsgi>
# 端口8000
<socket>127.0.0.1:8000</socket>
# 项目路径(放着manage.py的)
<chdir>/pais/web/blog/djblog/emodj/emodj</chdir>
# 相对项目路径的wsgi.py
<module>emodj.wsgi</module>
# cpu核的两倍
<processes>4</processes>
# 日志,存储Django控制台输出
<daemonize>uwsgi.log</daemonize>
# 改变Django项目内容后,uwsgi自动更新
<py-autoreload>1</py-autoreload>
# 退出后删除日志和存储pid的文件(这里没设置pid文件)
<vacuum>true </vacuum>
# Django项目的settings.py
<touch-reload>/pais/web/blog/djblog/emodj/emodj/emodj/settings.py</touch-reload>
</uwsgi>
注意:#和后面的内容要删掉
很少有博客讲xml文件的参数定义,但是有很多讲ini文件参数的,可以参考ini,把它的参数写成xml的形式,效果一样。
然后在xml文件目录下执行 uwsgi -x yourfile.xml
查看ps -ef|grep uwsgi
如果有四五个进程,说明开启成功。
杀进程的时候使用 pkill -9 uwsgi
我这里不使用ini,是因为uwsgi -ini uwsgi.ini时,无法启动uwsgi,查了一下好像是套接字权限不够(?,需要用chmod赋予权限,没搞明白。
到这里就可以快乐转发路由了~