Skip to content

Latest commit

 

History

History
295 lines (222 loc) · 7.54 KB

部署手册.md

File metadata and controls

295 lines (222 loc) · 7.54 KB

部署手册

部署需要提供以下环境

  • 操作系统:Ubuntu 20.04.4 LTS
  • Nginx:nginx 1.18.0 (Ubuntu)
  • 数据库:MySQL 8.0 版本及以上
  • Anaconda:conda 4.10.3
  • Python:Python 3.8.1

此项目依赖 LibCity 运行,所以事先还需要安装配置 LibCity 环境,推荐 LibCity 的依赖和此项目的依赖放同一个虚拟环境进行管理。

LibCity 安装文档:https://bigscity-libcity-docs.readthedocs.io/zh_CN/latest/get_started/install.html

推荐使用 Conda 创建虚拟环境并配置使用。

1 后端部署

  1. 将虚拟环境切换为运行 LibCity 的虚拟环境

    conda activate admin
  2. 将后端代码上传至服务器,进入项目目录,并安装依赖

    pip install -r requirements.txt
  3. 安装 Uwsgi

    pip install uwsgi
  4. 在项目文件夹同级目录下创建 uwsgi 工作目录

    mkdir uwsgi
  5. 创建 uwsgi.ini 配置文件

    vim uwsgi.ini

    写入以下内容;其中 chdir、virtualenv、pidfile、daemonize 四项需要根据实际情况配置相应路径

    [uwsgi]
    # chdir 是后端项目路径
    chdir = /home/houge/Bigscity-LibCity-WebTool/smartcityms_backend
    # 你的 conda 虚拟环境路径
    virtualenv = /home/houge/anaconda3/envs/admin
    module = backend.wsgi:application
    master = True
    processes = 1
    harakiri = 60
    max-requests = 5000
    
    socket = 127.0.0.1:8090
    plugin = python3
    
    # 你的 uwsgi 进程 pid 文件存放路径
    pidfile = /home/houge/Bigscity-LibCity-WebTool/uwsgi/master.pid
    # uwsgi 后台启动后日志存放路径
    daemonize = /home/houge/Bigscity-LibCity-WebTool/uwsgi/backend.log
    vacuum = True
    # 启用多线程
    enable-threads = true
  6. 对项目配置文件进行配置

    vim smartcityms_backend/backend/settings.py

    需要修改的项有:

    # 邮件发送相关
    # 邮件发送者邮箱地址
    SENDER_ADDRESS = ''
    # 邮箱授权码
    SENDER_AUTHORIZATION_CODE = ''
    # SMTP 服务器地址 例如:smtp.163.com
    SMTP_SERVER_ADDRESS = ''
    # SMTP 服务器端口
    SMTP_SERVER_PORT = 0
    
    # 建议修改为服务器 IP = ?
    ALLOWED_HOSTS = ['?']
    
    # 数据库 注意修改数据库的 HOST USER PASSWORD
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'django',  # 指定的数据库名
            'USER': 'root',  # 数据库登录的用户名
            'PASSWORD': '123456',  # 登录数据库的密码
            'HOST': '192.168.3.1',
            'PORT': '3366',
        }
    }
    
    # 跨域设置 这里配置的是前端的请求地址 修改为前端项目的 IP 和端口
    CORS_ORIGIN_WHITELIST = (
        'http://?:8000',
    )
    
    # libcity 库程序相关
    # libcity 程序目录
    LIBCITY_PATH = '/home/houge/Bigscity-LibCity-WebTool/Bigscity-LibCity'
    # 激活 libcity 库虚拟环境命令 配置为 None 代表就是当前环境(启动 uwsgi 时的虚拟环境)
    ACTIVE_VENV = None
    
    # 样例文件相关 分别是 数据集样例文件 和 参数配置样例文件
    DATASET_EXAMPLE_PATH = '/home/houge/Bigscity-LibCity-WebTool/smartcityms_backend/sample/T_DRIVE_SMALL.zip'
    TASK_PARAM_EXAMPLE_PATH = '/home/houge/Bigscity-LibCity-WebTool/smartcityms_backend/sample/config.json'
    
    # 前端项目路径 配置为前端打包后项目的存储路径
    ADMIN_FRONT_HTML_PATH = "/home/houge/Bigscity-LibCity-WebTool/smartcityms_front/dist/"
  7. 导入基本数据表

    登录mysql数据库,创建名为django的数据库,将django.sql输入导入。

    命令如下:

    create database django;
    use django;
    source django.sql;

2 前端部署

前端项目可以自己编译打包再部署,也可以直接使用打包好的部署包,如果直接使用打包好的部署包,可以直接看 2.2 的内容。

2.1 项目编译打包

  1. 所需环境

    • node:v16.5.0
    • yarn:1.22.17
  2. node 安装

    下载地址:https://nodejs.org/download/release/v16.5.0/

    下载文件:node-v16.5.0-linux-x64.tar.gz

    解压并配置环境变量:

    # 解压
    tar -zxvf node-v16.5.0-linux-x64.tar.gz
    # 配置环境变量
    cd /etc/profile.d
    vim my_env.sh
    # 写入以下内容 NODE_HOME 要配置成你的解压路径
    export NODE_HOME=/home/houge/node-v16.5.0
    export PATH=$PATH:$NODE_HOME/bin
    # 保存后 使环境变量生效
    source /etc/profile
    # 验证
    node -v
  3. yarn 安装

    npm install --global yarn
    # 验证
    yarn -v
  4. 进入前端项目代码目录

    # 安装依赖
    yarn
    # 打包
    yarn build:prod

    打包后会在项目代码目录下多出一个 dist 文件夹,这就是部署包

2.2 前端项目部署

建议将打包好的 dist 部署包放入和后端项目同级的目录下,方便项目查找及管理。

  1. 配置 Nginx

    进入 Nginx 的站点配置目录,并创建站点配置文件

    cd /etc/nginx/sites-enabled
    # 创建站点配置文件
    vim mysite.conf

    写入以下内容,需要修改的地方只有 libcity 管理平台的 server 下的 root 配置,需要修改为前端项目的部署包 dist 文件夹路径。

        server {
            listen 8080;
            server_name 127.0.0.1;
            #charset koi8-r;
            #access_log logs/host.access.log main;
            location / {
                    # 配置 uwsgi 转发
                    include /etc/nginx/uwsgi_params;
                    uwsgi_pass 127.0.0.1:8090;
                    # root html;
                    # index index.html index.htm;
            }
        }
    
        # libcity 管理平台
        server {
            listen 8000;
            server_name 127.0.0.1;
            charset utf-8;
            proxy_buffer_size 8192k;
            proxy_buffers 32 8192k;
            proxy_busy_buffers_size 8192k;
            gzip on;
            gzip_buffers 32 4k;
            gzip_comp_level 6;
            gzip_min_length 200;
            gzip_types text/css text/xml application/javascript;
            gzip_vary on;
    
    
            location ~* \.(asp|aspx|php|jsp|cgi|7z)$ {
                return 404;
            }
            location ~* \.map$ {
                return 404;
            }
    		# 需要修改为前端项目的部署包 dist 路径
            root /home/houge/Bigscity-LibCity-WebTool/smartcityms_front/dist;
            index index.html;
    
            location ^~ / {
                add_header Access-Control-Allow-Origin '*';
                add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
                add_header Access-Control-Allow-Headers 'Authorization,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
    
                if ($request_method = 'OPTIONS') {
                    return 204;
                }
    
                try_files $uri $uri/ /index.html?/$request_uri;
            }
        }
  2. 进入 dist 目录,需要修改后端请求地址

    cd /home/houge/Bigscity-LibCity-WebTool/ai-admin-front/dist
    vim static/serverconfig.js
    # 只需要把 IP 修改为服务器 IP 即可
    window.global_url = {
      Base_url: 'http://?:8080/api'
    }
  3. Nginx 重启验证

    sudo nginx -s reload

3 启动验证

  1. 进入 uwsgi 的目录,启动项目

    uwsgi uwsgi.ini
  2. 访问页面进行验证:http://ip:8000

  3. 管理员用户

    账号:admin

    密码:123456