uwsgi+nginx部署vue+django前后端分离项目
vue部署
把打包好的vue项目 dist上传至服务器/opt文件夹中
nginx配置vue项目
server { listen 80; server_name localhost; location / { root /opt/dist; index index.html; } }
如需安装nginx 请移步至 Nginx安装
django部署
上传django包至 /opt目录为例
1.通过命令保证环境的一致性,导出python开发环境的包
pip3 freeze > requirements.txt
激活虚拟环境ipm,在虚拟环境下,安装项目所需的依赖模块(requirements.txt文件上传到与虚拟环境同级的目录)
pip3 install -r requirements.txt
如何使用虚拟环境请移步 虚拟环境配置
uwsgi (Django框架运行依赖wsgi,众多模块实现了wsgi规范,而django框架中默认使用wsigiref模块来实现,他由于性能比较低,所以用于本地开发和测试,而线上部署时需要使用uwsgi来代替)
退出虚拟环境,安装uwsgi
pip3 install uwsgi
在/opt目录下建立文件
vi /opt/uwsgi.ini
配置如下
[uwsgi] # 项目目录 chdir=/opt/ipm2020 module=ipm2020.wsgi:application # the virtualenv (虚拟环境的绝对路径) home = /root/Envs/ipm #热重载 #touch-reload = /opt/ipm2020 #py-auto-reload = 1 # 指定sock的文件路径 #socket=/root/proj/script/uwsgi.sock #或者指定地址直接(指定文件路径就是相当于单独写了个配置导入,相当于import导入,可以修改和删除,可维护性高点) #socket=127.0.0.1:9090 socket=0.0.0.0:9090 #直接做服务器用http模式 ; http=0.0.0.0:9500 # 进程个数 workers=1 pidfile=/opt/uwsgi/uwsgi.pid # 指定静态文件,这个项目中没有,如果你的项目中有静态文件的话按这个目录结构配置 #static-map=/static=/root/proj/ # 启动uwsgi的用户名和用户组 uid=root gid=root # 启用主进程 master=true # 自动移除unix Socket和pid文件当服务停止的时候 vacuum=true # 序列化接受的内容,如果可能的话 #thunder-lock=true # 启用线程 enable-threads=true # 设置自中断时间 #harakiri=30 # 设置缓冲 post-buffering=4096 # 设置日志目录 #daemonize=/opt/uwsgi/uwsgi.log
测试启动uwsgi
/usr/local/python3/bin/uwsgi --ini /opt/uwsgi.ini
nginx配置
#user nginx; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; gzip on; # 开启Gzip server { listen 80; server_name localhost; location / { root /opt/dist; index index.html; } } server { listen 8000; server_name localhost; location / { uwsgi_pass localhost:9090; include /usr/local/nginx/conf/uwsgi_params; } } }
使用Supervisor管理 uwsgi Supervisor安装
一切配置无误 项目就可以正常运行起来了