• 5.前后端不分离项目的部署


     

     

     

    本次将一个前后端不分离的项目部署到web上,采用如上的架构,并使用supervisor进行进程的管理

    项目访问路径:https://www.kunmzhao.cn/login/ 

    项目源码下载网盘地址:

    https://pan.baidu.com/s/1sGSnrHendFImTC-extkLww

    提示:小编不易,提取码只需要1元,添加以下小编微信索要提货码

     

    1.将项目复制到服务器上

    这有很多方式,可以通过FTP或者scp等,我这边采用SFTP的方式
     注意点:
       1. 如果我们之前项目中有虚拟环境,则将虚拟环境的目录删除
       2. 将之前需要用的环境记得导出一并上传到服务器
            pip list --format=freeze > requirements.txt

     

     

    2.为此项目创建虚拟环境

    复制代码
    虚拟环境做好和之前的环境保持一致,如python版本等
    
    1. 创建虚拟环境
        virtualenv --python=python3 env
    2. 激活虚拟环境
    source env/bin/activate
    3. 安装依赖包
    # 有时候可能会失败,我们可以将失败的依赖手动添加
    pip install -r requirement.txt
    复制代码

     

     

     

    3.创建数据库

    1. 我们需要确认对应的数据库已经在后台运行 

       

    2. 将项目的数据库数据导出

      mysqldump -u 用户名 -p 数据库 > 导出的文件

       

    3. 将生成的数据上传的服务器 

    4. 在服务器上创建数据库 

       

    5. 导入数据

       1. 首先创建一个数据库
       create database orderSystem charset utf8;
       2. 使用数据库
       use orderSystem;
       3. 导入数据
       source sb.sql

       

    6. 配置Django中关于mysql的配置

       配置成服务端的数据库

    4.配置redis

    1. 确认redis已运行 

    2. 配置django中的redis设置 

       

    3. 测试django能否运行

        python3 manage.py runserver
       ​
       # 自己在在方面花了很长时间操作数据库,或者模块的引入,需要有耐心

    5.配置uwsgi

    1. 创建uwsgi.ini的配置文件

       touch uwsgi.ini

    2. 写入配置如下

      复制代码
      [uwsgi]
       #  填写项目的第一层绝对路径
       chdir     = /home/ubuntu/kunmzhao/orderPlatform/orderPlatform
       # 填写项目第二层的相对路径,找到第二层目录下的wsgi.py
       # 这里填写的不是路径,是以上一个参数为相对,找到第二层项目目录下的wsgi.py文件
       module    = orderPlatform.wsgi
       # 填写虚拟环境解释器的第一层工作目录 
       home      = /home/ubuntu/kunmzhao/orderPlatform/env
       master    = true
       # 代表定义uwsgi运行的多进程数量,官网给出的优化建议是 2*cpu核数+1 ,单核的cpu填写几?
       processes  = 3
       # 这里的socket参数,是用于和nginx结合部署的unix-socket参数
       socket          = 0.0.0.0:8000
       vacuum    = true
      复制代码
    3. 使用uwsgi启动项目

      uwsgi --ini ./uwsgi.ini  --plugin python3

       

    6.配置supervisor

    1. 生成supervison配置文件

       echo_supervisord_conf > supervisord.conf

    2. 写入配置如下

      复制代码
       在配置文件末尾添加
       [program:my_uwsgi]        
       command= /usr/bin/uwsgi --ini /home/ubuntu/kunmzhao/orderPlatform/uwsgi.ini --plugin python3
       autostart=true    
       startsecs=10         
       autorestart=true     
       stopasgroup=true     
       killasgroup=true    
      复制代码
    3. 启动supervisor

       sudo supervisord -c supervisord.conf 

       

    4. 使用supervisorctl查看任务

       sudo supervisorctl -c supervisord.conf 

       

    7.配置nginx

    1. 写入配置如下

      复制代码
       server {
               listen       80;
               server_name  localhost;
               charset utf-8;
               error_page  404  /40x.html;
       ​
               location / {
                       uwsgi_pass   0.0.0.0:8000;
                       include  uwsgi_params;
               }
      复制代码

       

    2. 启动nginx

       sudo nginx 

       

    8.静态文件处理

    此时是可以访问项目的,但会发现静态资源缺失

     

    1. 设置django的配置文件

      收集所有的静态文件,放入一个统一管理的目录
       打开项目配置文件,加入
       STATIC_ROOT='/home/ubuntu/kunmzhao/orderPlatform/orderPlatform/my_static/'

       

    2. 用命令收集静态文件

      python3 manage.py collectstatic

       

    3. 配置nginx

       在上面的基础上添加:
       # 将客户端关于/static的请求全部转移到指定的目录
       location /static {
                      alias /home/ubuntu/kunmzhao/orderPlatform/orderPlatform/my_static/;
              }

       

    4. 再次访问 

    9.域名和https证书

    • 域名可以到各大平台购买,但需要备案,备案时间一般在10-15个工作日

    • 证书有免费的,我们使用免费的即可,需要将证书下载到项目部署服务器上

     

    在nginx的配置文件中,添加配置如下

    复制代码
      server {
             listen       443 ssl;
             server_name  www.kunmzhao.cn;
             ssl_certificate /home/ubuntu/kunmzhao/orderPlatform/ssl/public.pem;
             ssl_certificate_key /home/ubuntu/kunmzhao/orderPlatform/ssl/private.key;
             ssl_session_timeout  5m;
             ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配
             ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配
             ssl_prefer_server_ciphers   on;
             }
    复制代码

     

    如果希望全站https,可以将http请求重定向为https,添加配置如下

     server {
     ​
         listen 80;
         server_name www.kunmzhao.cn;
         rewrite ^(.*) https:$host$1 permanent;
         }

     

     

     

     


     

     



     

  • 相关阅读:
    wazuh自定义规则-检测内网扫描行为
    机器学习笔记之高斯过程(四)高斯过程回归——基于函数空间角度的预测任务求解
    springboot+人事信息管理系统 毕业设计-附源码221507
    python连接mysql数据库报错pymysql.err.OperationalError
    Java 局部类访问局部变量为什么必须添加 final 关键字
    【Git系列】01_Git概述
    『Java安全』Unsafe类
    C语言操作符(按位与 ,按位或,按位异或,整形提升)
    使用Vue脚手架
    Python列表的复制
  • 原文地址:https://www.cnblogs.com/victor1234/p/16882839.html