vue2+django4项目部署
基于阿里云服务器ubantu20.04的前后端分离项目的部署
整个过程需要用到vue、django、mysql、redis、nginx、uwsgi。
1、需要先配置一下虚拟环境,并安装django中需要的插件。
大致思路:使用nginx反向代理后端接口
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 $uri/ /index.html; include /etc/nginx/uwsgi_params; } location /api { #应该没什么用 proxy_pass http://101.200.233.144/api; } }
uwsgi
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
。
mysql
我使用的是mysql-8 一开始本打算在docker中进行部署项目,但是造docker中总是安装不上mysql,
所以按照本文开始的链接配了一个虚拟环境进行安装,sudo apt-get mysql。
redis
这个插件非常好安装 sudo apt-get redis
主要用于博客项目的文章列表缓存功能,虽然好像nginx也会有缓存功能。
redis-cli开启之后,ping过了就可以。
####
前端注意
项目中所有ajax/axios请求地址在部署到服务器上之前都要将地址改为公网ip或者域名。
||||||有一种思路,不需要经常改动请求中的url,拿本项目来讲,只需要将url改为ip/v1/xxxx/xxxx,因为需要改动的只有域名或者ip,请求路径并不需要,设置一个全局变量为服务器ip或者申请下来的域名(若是国内服务器和国内域名需备案)。!!!并没有尝试。