vue2+django4项目部署
基于阿里云服务器ubantu20.04的前后端分离项目的部署
整个过程需要用到vue、django、mysql、redis、nginx、uwsgi。
需要先配置一下虚拟环境,并安装django中需要的插件。
大致思路:浏览器发起请求经由nginx转发给uwsgi,再有uwsgi转向后端代码。
1、nginx 跨域等处理
nginx.conf配置
server {
listen 80; #监听的端口
index index.html;
server_name 101.200.233.144; #ip地址或者域名
charset utf-8;
root /var/www/html/dist; #vue项目打包之后的存放位置
location /media { #django的一些图片地址
alias /var/www/datavis/blog_back/media;
}
#这里我前端请求的接口是 101.200.233.144/v1/xxx/xxx
# 意思是将所有请求路径带有v1的ajax请求经过反向代理转到本地的5001端口
本地的5001端口用来运行django
location /v1 { #非常重要!!!!!!!!
#alias /var/www/html/dist;
uwsgi_pass 127.0.0.1:5001; #要与uwsgi中
#try_files uri/ /index.html;
include /etc/nginx/uwsgi_params;
}
location /api { #应该没什么用
proxy_pass http://101.200.233.144/api;
}
}
2、uwsgi 用于启动后端服务,django中自带的runserver性能不够
uwsgi.ini
[uwsgi]
#http=127.0.0.1:5001
socket=127.0.0.1:5001
chdir=/var/www/datavis/blog_back #项目路径
module=blog_back.wsgi #django项目自带的项目名.wsgi位置
home=/var/www/datavis #虚拟环境位置
process=4 #进程数
threads=2 #线程数
pidfile=uwsgi.pid #uwsgi进程id
chmod-socket = 666 #权限
daemonize=uwsgi.log #输出日志
master = true
注意:如果我们想直接将uwsgi用作服务器(例如Apache和nginx那样)直接暴露在公网那么就使用http;如果有单独的服务器(例如Apache或者nginx),由服务器将请求转发给uwsgi处理,并且使用http协议,那么此时使用socket。
3、mysql
我使用的是mysql-8 一开始本打算在docker中进行部署项目,但是造docker中总是安装不上mysql,
所以按照本文开始的链接配了一个虚拟环境进行安装,sudo apt-get mysql。
4、redis
这个插件非常好安装 sudo apt-get redis
主要用于博客项目的文章列表缓存功能,虽然好像nginx也会有缓存功能。
redis-cli开启之后,ping过了就可以。
前端注意
项目中所有ajax/axios请求地址在部署到服务器上之前都要将地址改为公网ip或者域名。