uwsgi+nginx部署vue+django前后端分离项目

Posted adidasshe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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安装

一切配置无误 项目就可以正常运行起来了

以上是关于uwsgi+nginx部署vue+django前后端分离项目的主要内容,如果未能解决你的问题,请参考以下文章

vue+uwsgi+nginx部署前后端分离项目

nginx + uwsgi 部署 Django+Vue项目

Django+uwsgi+vue部署(不使用nginx)

Nginx+uwsgi+celery+supervisor部署Django前后端分离项目

如何将django部署从顶级目录迁移到子目录下(NGINX UWSGI DJANGO)

Django + Uwsgi + Nginx 实现生产环境部署