vue2+django4项目部署

335 阅读2分钟

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 uriuri 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或者域名。