django\+vue前后端分离项目部署nginx服务器


  1. 准备

    1. 前端vue打包后代码

    2. 后端程序源代码

    3. 服务器安装nginx, 数据库安装配置等

  2. 部署

    1. 部署前端项目:

      1. 前端代码放在 /home/www/dict 下;
    2. 部署后端项目:

      1. 上传后端代码到 /home/www/order 下;

      2. 安装所依赖库

      3. 收集静态资源

        1. 在setting.py 中指定地址:
        
        STATIC_ROOT = os.path.join(BASE_DIR, 'static_file')
        
        ```1. 执行收集静态资源命令
        
        ```python
        
        python manage.py collectstatic
        
        
      4. 同步数据库

      
      python manage.py makemigrations    # 生成迁移文件
      
      python manage.py migrate            # 同步数据库
      
      ```1. 配置uwsgi
      
      ```python
      
      [uwsgi]
      
      scoket = 127.0.0.1:8000
      
      home = /root/.virtualenvs/order    # 虚拟环境地址
      
      chdir = /home/www/order            # 后端程序地址
      
      wsgi-file = order/wsgi.py
      
      processes = 4
      
      threads = 2
      
      master = true
      
      pidfile = uwsgi.pid
      
      vacuum = true
      
      daemonize = uwsgi.log
      
      ```1. 开启uwsgi
      
      ```python
      
      uwsgi --ini uwsgi.ini    # 开启uwsgi
      
      uwsgi --stop uwsgi.pid    # 关闭uwsgi
      
      uwsgi --reload uwsgi.pid    # 重启uwsgi
      
      
    3. 配置nginx:

      1. 切换到nginx文件下
      
      cd /etc/nginx
      
      
            2\. 打开nginx配置文件
      
      
      vim nginx.conf
      
      

      3. 配置编辑nginx服务器

      
      # 在http{}中新增 server{...}
      
      server{
      
          listen 80;
      
          server_name (ip / domain name);
      
          
      
          #配置前端 vue打包后的程序
      
          location / {
      
              root /home/www/dict;        # 前端代码的绝对路径
      
              index /index.html            # 前端指定访问文件
      
              try_files $uri $uri/ /index.html;
      
          }
      
          # 配置后端 django程序, 后端接口是什么就写什么,多域名和多服务器部署除外
      
          location /api {
      
              include uwsgi_params;
      
              uwsgi_pass 127.0.0.1:8000    # 部署后端程序时 uwsgi 指定的端口
      
          }
      
          # 配置后端 静态资源
      
          location /static {
      
              alias /home/www/order/static_file;    # 部署后端程序时收集静态资源地址
      
          }
      
      }
      
      
              4\. 重启服务器
      
         `       nginx -s reload             `
      
### DjangoVue进行前后端分离开发的具体步骤 #### 一、项目初始化 在开始之前,需要分别创建Django后端和Vue前端的独立环境。 1. **安装依赖** 需要确保已安装Python以及Node.js。通过pip工具安装Django框架,并使用npm或yarn来管理Vue项目的依赖项[^1]。 2. **创建Django项目** 使用命令`django-admin startproject my_project` 创建一个新的Django项目。随后,在settings.py文件中配置静态资源路径并注册自定义的应用程序[^2]。 3. **设置Vue项目** 利用Vue CLI或其他脚手架工具(如Vite),执行如下命令建立Vue工程: ```bash vue create front_end_app ``` #### 二、API接口设计 为了实现前后端分离架构中的数据交互,需借助RESTful API完成通信过程。 1. **集成DRF (Django Rest Framework)** 安装Django REST framework扩展包以简化JSON序列化逻辑处理工作流。修改requirements.txt加入对应版本号之后运行 `pip install -r requirements.txt` 进行同步加载。 2. **构建模型类与视图集** 在models.py里声明实体对象结构;接着于views.py或者serializers.py编写关联业务方法及其返回格式描述规则。 ```python from rest_framework import serializers, viewsets from .models import Student class StudentSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Student fields = ['id', 'name', 'age'] class StudentViewSet(viewsets.ModelViewSet): queryset = Student.objects.all() serializer_class = StudentSerializer ``` #### 三、跨域资源共享(CORS)支持 由于浏览器同源策略限制,默认情况下不允许不同域名下的请求访问服务器资源。因此有必要引入corsheaders中间件解决该问题。 编辑INSTALLED_APPS列表新增'corsheaders'条目,并调整MIDDLEWARE顺序使其生效: ```python INSTALLED_APPS += [ ... 'rest_framework', 'corsheaders' ] MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', ... ] CORS_ORIGIN_ALLOW_ALL = True # 开发阶段可暂时允许所有来源连接测试效果 ``` #### 四、部署方案考虑事项 当实际生产环境中上线服务时,则推荐采用Nginx反向代理机制统一转发HTTP流量至各自对应的Web容器实例上运行[Docker Compose](https://docs.docker.com/compose/)能够很好地满足这一需求场景下的一键启动多进程协作模式。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值