zoukankan      html  css  js  c++  java
  • 项目部署

    代码部署功能测试

    部署功能测试代码,后端程序使用python3基于Django框架开发, 以pipenv作为包管理工具.

    .env 文件为项目环境变量配置文件

    代码目录结构

    ├── Dockerfile  Dockerfile文件
    ├── Pipfile  包管理文件
    ├── Pipfile.lock  包文件依赖
    ├── Readme.md
    ├── apps  默认app目录
    │   ├── __init__.py
    │   └── api
    │       ├── __init__.py
    │       ├── admin.py
    │       ├── apps.py
    │       ├── migrations
    │       │   ├── __init__.py
    │       ├── models.py
    │       ├── tests.py
    │       └── views.py
    ├── db.sqlite3
    ├── deploy  部署配置文件
    │   ├── nginx  nginx配置
    │   │   └── deployment.conf
    │   ├── supervisor  supervisor配置
    │   │   └── deployment.ini
    │   └── uwsgi  uwsgi配置
    │       ├── deployment_http.ini
    │       └── deployment_socket.ini
    ├── deployment
    │   ├── __init__.py
    │   ├── asgi.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── docker-compose.yml  docker-compose.yml配置文件
    ├── manage.py
    ├── setup.sh  一键部署脚本
    ├── start.sh  项目启动文件
    ├── static  静态资源文件
    └── templates  静态模板
    
    

    前期准备

    如未说明,数据库采用postgresql,缓存配置redis,服务器采用Ubuntu16.04 ,python3 默认版本为3.5,系统使用python版本为3.6.x

    1. 卸载默认python3.5(可不卸载)
    sudo apt-get remove python3.5
    sudo apt-get remove --auto-remove python3.5
    
    2. 安装python3.6
    sudo apt-get install software-properties-common
    sudo add-apt-repository ppa:jonathonf/python-3.6    
        - sudo add-apt-repository ppa:deadsnakes/ppa
    sudo apt-get update
    sudo apt-get install python3.6 python3.6-dev
    
    3. 系统依赖
    sudo apt install gcc libgmp-dev libmpfr-dev libmpc-dev
    sudo apt install libpq-dev python3-dev
    
    4. pip3 安装 
    wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate
    python3.6 get-pip.py
    
    1. 搭建基础Django框架
    2. 通过编译器运行

    基础部署

    1. 代码放在服务器直接运行 代码直接通过run运行

      最老掉牙的部署方式(各系统通用) 
      
      1. 后台直接运行python manage.py runserver 127.0.0.1 8888 
      2. nginx监听 http://127.0.0.1:8888端口
      
    2. 阉割部署 通过supervisor代替后台指令,可加nginx

      基于方式一部署可增加supervisor管理,nginx做转发
      
    3. 常规化部署 uwsgi+supervisor+nginx

      进阶部署(windows 不可用)
      
      1. uwsgi_http: 跟部署方式一类型,中间加了一层uwsgi层
          1.1: nginx监听HTTP端口
      2. uwsgi_socket: 相比http部署小路更高
          1.2: nginx监听socket端口
      
      socket(4)层通信优于HTTP(7)层通信 | 正式环境建议采用socket部署方式
      
    4. 静态文件配置

      # STATIC_CONFIG
      STATIC_URL = '/static/'
      STATIC_ROOT = Path.joinpath(BASE_DIR, "static/")
      # STATICFILES_DIRS = [Path.joinpath(BASE_DIR, 'static')]
      
    5. 静态文件收集

      pipenv run python manage.py collectstatic
      
    6. nginx静态文件配置

      server {
        listen                          80;
        server_name                     localhost;
        chunked_transfer_encoding       on;
      
        location /static {
          expires                       30d;
          alias                         /root/deployment/static;
          # root                          /root/deployment/static;
        }
      
        location / {
          proxy_pass                   http://172.17.0.1:8888;
        }
      }
      

    单机docker部署

    1. 代码上传至服务器

    2. 代码打包镜像

      docker build -t deployment .
      代码打包可能遇到一些坑。根据实际情况处理即可
      
    3. 容器运行

      Dockerfile部署 | 部署方便,代码统一用0.0.0.0 启动
      项目打包成docker镜像 | 打包可能有坑!
      避免了环境的安装,半一键部署
      1. host模式启动
          docker run -itd  --name deployment -v /root/deployment:/app -p 8888:8888 --network=host deployment:latest
      2. 非host模式启动
          docker run -itd  --name deployment -v /root/deployment:/app -p 8888:8888 deployment:latest
      不指定network=host,则需要修改Dockerfile
      
    4. compose构建

      docker-compose up -d
      docker-compose ps
      

    多机部署

    1. 服务器镜像推送至docker-hub

    2. docker-compose.yml一键部署 基础部署

      su sh setup.sh 一键部署
      
    3. docker-compose.yml一键部署 进阶部署

  • 相关阅读:
    bzoj1455-罗马游戏
    bzoj1206-[HNOI2005]虚拟内存
    bzoj2762-[JLOI2011]不等式组
    bzoj2729-[HNOI2012]排队
    [模板] 高精度加/减/乘
    bzoj1013-[JSOI2008]球形空间产生器
    bzoj1002-[FJOI2007]轮状病毒
    什么是Redis缓存穿透、缓存雪崩和缓存击穿
    CentOS 7 中英文桌面安装步骤详细图解
    Redis数据操作
  • 原文地址:https://www.cnblogs.com/52-qq/p/14949050.html
Copyright © 2011-2022 走看看