3. 部署手册

本文档主要说明如何在 Linux 服务器上部署 易科 1.0 系统。

3.1. 服务器环境

服务器需要安装的软件

  • Nginx 1.18.0
  • Python 3.10
  • Djanjo 5.0+
  • MariaDB 10.0+
  • Supervisor

3.2. 初始部署

第一次或者在全新环境进行部署的说明。

发布的文件直接从 GitHub 库 dashingsoft/eke 的发布中获取

第一次发布的版本号 v0.1

注解

用户需要权限才能访问 Github 库,用户启用 2fa 的简单方式:

  • 选择使用 App 方式验证,会弹出一个二维码

  • 使用微信扫描该二维码,会显示其对应的文本,其中 TOKEN 对应的是一串字符,例如 EHILBUEILMSHNK

  • 安装 Python 包 pip install pyotp

  • 执行下面的 Python 语句,注意需要替换 EHILBUEILMSHNK 为实际值

    $ python
    >>> import pyotp
    >>> pyotp.TOTP("EHILBUEILMSHNK").now()
    580286
    
  • 把最后打印出来的一串数字输入到 Github 验证页面即可

3.2.1. 输入文件

第一次发布的文件包 eke-0.1-py310.tar.gz 解压后的目录:

  • src/ 包括 Django 工程的源文件和其他相关的 Python 包
  • meta/ 相关的模版文件
  • webroot/ 所有需要放到 Web 服务器下面的文件

3.2.2. 服务器目录

第一次发布需要在服务器上创建一些目录

  • 代码目录,默认是 /opt/eke/ ,子目录对其他用户只读,包括

    • src/ 存放发布包中 src 下面的文件
    • meta/ 存放发布包中 meta 下面的文件
    • bin/ 存放辅助脚本
  • 数据目录,默认是 /var/eke/ ,子目录需要 web 用户可读可选,包括

    • usr/ 存放注册用户的数据
    • fly/ 存放临时用户的数据
  • 网站根目录,存放发布包中的 webroot 中的文件

  • 创建目录链接 /opt/eke/src/ekengineer

    cd /opt/eke/src
    ln -s /opt/eke/meta/ekengineer
    

3.2.4. Django 配置

Django 的配置文件为 src/ekesite/settings.py 需要进行相关的配置

  • SECRET_KEY 使用外部文件
  • STATIC_URL 默认配置为 https://eke.dashingsoft.com/static/
  • DEBUG 必须修改为 False
  • ALLOWED_HOSTS 默认配置为 [‘eke.dashingsoft.com’]
  • DATABASES 配置为使用 MariaDB 引擎的 ekedb

参考 Django Deployment checklist

接下来创建数据表:

$ cd /opt/eke/src
$ rm -rf {tasks,works,stacks}/migrations
$ python manage.py makemigrations
$ python manage.py migrate

以及后台管理超级用户:

$ python manage.py createsuperuser

参考 Writing your first Django app, part 2

3.2.5. 配置 Supervisor 后台启动 Django

创建 Django 的启动脚本 /opt/eke/bin/start-server.sh:

cd /opt/eke/src
python manage.py runserver 20528

创建配置文件 /etc/supervisor/eke.conf:

[program:eke]
command=bash bin/start-server.sh
user=eke
directory=/opt/eke
stopwaitsecs=60
stopasgroup=true
stdout_logfile=/opt/eke/log/supervisor_stdout.log
stderr_logfile=/opt/eke/log/supervisor_stderr.log
autostart = true

3.2.6. 配置 Nginx

外部访问地址 https://eke.dashingsoft.com

需要把下列路径的请求转发到 Django 后台

  • /admin/
  • /api/
  • /pub/

参考配置如下:

server {
    server_name eke.dashingsoft.com;
    ...
    location /admin/ {
      proxy_pass http://localhost:20528/admin/;
    }
    location /pub/ {
      proxy_pass http://localhost:20528/pub/;
    }
    location /api/ {
      proxy_pass http://localhost:20528/api/;
    }
}

3.2.7. 文档发布

使用下面的脚本进行发布:

$ cd /path/to/eke/docs
$ make build
$ cp _build/html /path/to/webroot/docs/

3.3. 更新部署

在发布版本升级之后的部署说明。

每次更新之后会有新的版本号 X.Y

3.3.1. 输入文件

根据输入的版本号 X.Y 可以从下面的地址:

https://github.com/dashingsoft/eke/releases/tag/vX.Y

下载发布包 eke-X.Y-py310.tar.gz

注意需要替换 X.Y 为实际的版本号,例如 0.2

发布的文件包解压后的目录基本同第一次发布是一样的

  • src/
  • meta/
  • webroot/

分别拷贝到相应的服务器目录,覆盖原来的文件

如果数据库结构发上了变化,需要执行下面的更新:

$ cd /opt/eke/src
$ python manage.py makemigrations
$ python manage.py migrate