一、新环境搭建步骤
v2.10.2及之前版本需要Python3.9,推荐部署环境 CentOS9。
v3.0.0开始支持Python3.12,推荐部署环境 CentOS10 + Python3.12。
-
安装python和Git
请自行安装python和Git。
项目部署路径为 /home/uwsgi/,使用Git拉取代码:cd /home/uwsgi/ git clone https://gitee.com/cstcloud-cnic/zhongkun.git git clone https://github.com/GOSC-CNIC/zhongkun.git # 备用
-
安装python运行环境
使用系统python3.9环境,在代码工程根目录下,即文件requirements.txt同目录下运行命令:
pip3 install -r 00_script/depend/requirements.txt
-
安全敏感信息配置文件
- 复制安全信息配置demo文件security_demo.py,并命名文件名为security.py,根据自己情况完成配置。配置项主要包括 数据库、邮箱配置;
-
数据库安装
数据库和版本支持MySQL(8.0+)、MariaDB(10.4+)和TiDB(7.5.0+),请自行安装mysql、Mariadb或TiDB数据库,根据自己的情况修改security.py文件中数据库的配置项。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # mysql数据库引擎 # 'ENGINE': 'django_tidb', # TiDB数据库 'NAME': 'xxx', # 数据的库名,事先要创建之 'HOST': '127.0.0.1', # 主机 'PORT': '3306', # 数据库使用的端口 'USER': 'xxx', # 数据库用户名 'PASSWORD': 'xxx', # 密码 'OPTIONS': { 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 'charset': 'utf8mb4' } }, }
特别注意
创建数据库时,数据库字符集(CHARACTER)使用“utf8mb4”,字符集校对(COLLATION)推荐“utf8mb4_bin”。
通过sql导入旧数据库数据时请一定确保旧数据库和新建数据库的字符集校对一致,例如必须同时为“utf8mb4_bin”,或者同时为“utf8mb4_general_ci”。因为表主键id是字符串型,后续新建表外键字符集校对会跟随新数据库,如果通过sql导入的旧表和新表字符集校对不一致,创建外键约束会失败。 -
运行服务
-
下面推荐一种部署方式,Python3.9+、Nginx、uwsgi。
-
数据库迁移,在项目根目录下运行如下命令完成数据库迁移。
# 可以加参数 --plan 先查看将执行的迁移计划 python3 manage.py migrate --plan # 执行数据库迁移 python3 manage.py migrate
-
收集静态文件
python3 manage.py collectstatic --noinput
-
项目根目录下00_script目录中有uwsgi的配置文件和几个sh脚本可以方便控制uwsgi启动关闭;
-
也可以使用systemctl管理服务,执行一下脚本config_systemctl.sh,会配置好zhongkun.service服务;
systemctl start/stop/reload zhongkun.service
-
有些接口需要获取客户端的ip地址,所以nginx需要配置标头X-Forwarded-For
X-Forwarded-For 可能伪造,需要在服务一级代理防范处理 比如nginx: uwsgi_param X-Forwarded-For $remote_addr; 不能使用 $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $remote_addr; 不能使用 $proxy_add_x_forwarded_for;
-
服务有一些定时任务使用crontab实现,可以使用crontabtask命令管理,具体使用可以查看scripts/readme.md文件
python3 manage.py crontabtask [subcommand] [comment] crontabtask list-setting # 列举查看配置文件中所有定时任务配置 crontabtask add # 添加所有任务到crontab的配置文件 crontabtask add task1 # 添加所有注释以"task1"开头的所有任务 crontabtask show # 列举当前所有已添加激活的定时任务 crontabtask remove # 移除所有任务 crontabtask remove task1 # 移除所有注释以"task1"开头的所有任务
-
站点参数配置
一些站点服务的配置项需要在admin后台(全局配置 > 站点参数)完成配置,包括服务名称、AAI认证、钱包等相关配置。
(a). 支付钱包配置(v3.1.2之前版本,配置项在配置文件中配置)
钱包可以支持多个外部服务接入结算,一个服务接入钱包都需要在钱包中先注册一个APP,用于钱包接口的权限验证和交易流水所属记录。
本服务中云主机、云硬盘等功能模块的资源订购支付和计量扣费依赖钱包结算模块,
本服务需要在钱包结算模块中注册一个应用APP,启动服务后,在后台钱包添加一个APP,然后配置站点参数“本服务内支付结算对应的钱包app_id”,需要配置成上面注册的云服务器APP的id。
因为钱包在本服务中,所以本服务的结算不会通过钱包网络接口调用,会直接在服务内部函数接口调用。
钱包接口加签验签需要配置钱包的密钥对(私钥和公钥),可以通过命令python3 manage.py generat_rsa_key --keysize=2048
生成一个密钥对。(b). AAI登录认证
需要先去AAI认证服务提交接人申请,然后完成AAI登录相关的参数配置。 -
二、 服务新版本更新上线步骤
版本更新的基础步骤
特别注意:
版本更新前请先确认线上服务当前版本号A,假如要升级到新版本D,请务必先查看 “中坤 旧版本升级注意事项” 文档,确认从版本A升级到版本D的版本升级步骤。A是否可以一步直接升级到D,或者A需要先升级到C,再从C升级到D。
以下为V1升级V2版本的大致步骤
-
进入项目根目录下
cd /home/uwsgi/zhongkun/
,执行命令systemctl stop zhongkun.service
停止服务; -
更新代码
- 使用命令
git status
查看本地代码是否有改动,如果有改动先执行命令git stash
暂存改动; - 执行命令
git checkout master
切换到主分支; - 执行命令
git fetch origin --tags
拉取版本信息; - 如果要更新到最新的代码,执行命令
git pull origin master
拉取maste主分支最新代码; - 如果要需要更新到指定版本的代码,比如软件最新版本是V5,想从V1升级到V2,执行命令
git checkout V2
切到V2版本代码; - 如果 上面执行了
git stash
暂存了改动,可以执行git stash pop
把暂存的改动恢复;
- 使用命令
-
服务升级
- 执行命令
pip3 install -r 00_script/depend/requirements.txt
安装更新环境依赖包; - 执行命令
python3 manage.py migrate
完成可能的数据库迁移; - 执行命令
python3 manage.py collectstatic --noinput
收集静态文件; - 确认是否需要添加和移除定时任务,使用命令
python3 manage.py crontabtask xxx
管理定时任务;
- 执行命令
-
执行命令
systemctl start zhongkun.service
启动服务;
中坤v2.10.2升级v3.1.2版本步骤
【注意事项】:
-
升级前请备份数据库。
-
升级涉及版本:
v3.0.0,发布时间: 2024-12-09;
v3.1.0,发布时间: 2024-12-26;
v3.1.1,发布时间: 2024-12-31;
v3.1.2,发布时间: 2025-01-02; -
大量依赖包升级,支持python3.12。
-
python环境依赖包文件requirements.txt移动到了00_script/depend/下。
-
本次升级需要执行数据库迁移:
- “站内公告”、“管理员资源订购交付任务”表新建;
- “资源券申请”表增加2个字段,钱包“资源券”增加适用范围和适用订单编号字段;
【升级步骤】:
-
进入项目根目录下(cd /home/uwsgi/zhongkun/),执行命令 systemctl stop zhongkun.service 停止服务;
-
更新代码
- 使用命令 git status 查看本地代码是否有改动,如果有改动先执行命令 git stash 暂存改动;
- 执行命令 git checkout master 切换到主分支;
- 执行命令 git fetch origin --tags 拉取版本信息;
- 执行命令 git pull origin master 拉取maste主分支最新代码;
- 如果 上面执行了 git stash暂存了改动,可以执行 git stash pop 把暂存的改动恢复;
-
服务升级
- 执行命令 pip3 install -r 00_script/depend/requirements.txt 安装更新环境依赖包;
- 执行命令 python3 manage.py migrate 完成可能的数据库迁移;
- 执行命令 python3 manage.py collectstatic --noinput 收集静态文件;
-
执行命令 systemctl start zhongkun.service 启动服务;
中坤V3.1.2升级到V3.2.2、v3.2.3步骤
【注意事项】:
-
升级前请备份数据库。
-
升级涉及版本:
- v3.2.0,发布时间: 2025-01-22;
- v3.2.1,发布时间: 2025-02-19;
- v3.2.2,发布时间: 2025-02-28;
- v3.2.3,发布时间: 2025-03-12;
-
本次升级需要执行数据库迁移
- 用户模型增加了机构外键字段
- 资源券增加了来源类型字段
- 管理员订购交付云主机任务模型增加“来源类型”字段。
- 资源操作日志模型增加“备注”字段
- 新增AIHub服务单元模型。
-
钱包app_id和RSA key的配置从配置文件改到了后台 站点参数 中配置;执行数据库迁移时,迁移脚本会尝试把 钱包app_id和RSA key的配置从配置文件中获取并保存到数据库,但需要人为比对确认一下。
-
uwsgi配置sock文件名修改,需要修改nginx中对应sock文件路径配置;
【更新步骤】:
-
进入项目根目录下(cd /home/uwsgi/zhongkun/),执行命令 systemctl stop zhongkun.service 停止服务;
-
更新代码
- 使用命令 git status 查看本地代码是否有改动,如果有改动先执行命令 git stash 暂存改动;
- 执行命令 git checkout master 切换到主分支;
- 执行命令 git fetch origin --tags 拉取版本信息;
- 执行命令 git pull origin master 拉取maste主分支最新代码;
- 如果 上面执行了 git stash暂存了改动,可以执行 git stash pop 把暂存的改动恢复;
-
服务升级
- 执行命令 pip3 install -r 00_script/depend/requirements.txt 安装更新环境依赖包;
- 执行命令 python3 manage.py migrate 完成可能的数据库迁移;
- 执行命令 python3 manage.py collectstatic --noinput 收集静态文件;
-
执行命令 systemctl start zhongkun.service 启动服务;
-
需要修改nginx中服务sock文件的路径为
/home/uwsgi/zhongkun/uwsgi.sock
,重新加载nginx -s reload
; -
进admin后台,全局配置/站点参数中,检查是否添加配置项 “钱包签名验签RSA密钥对私钥”、“钱包签名验签RSA密钥对公钥”和“本服务内支付结算对应的钱包app_id”,并检查参数内容和配置文件(zhongkun/django_site/security.py)中参数内容是否一致。
中坤V3.2.3升级到V3.3.0步骤
【注意事项】:
-
升级前请备份数据库。
-
升级涉及版本:
- v3.3.0,发布时间: 2025-03-24;
-
本次升级需要执行数据库迁移
- AAI proxy 定义代理配置、用户信息、客户端域名白名单3个数据库表。
【更新步骤】:
-
进入项目根目录下(cd /home/uwsgi/zhongkun/),执行命令 systemctl stop zhongkun.service 停止服务;
-
更新代码
- 使用命令 git status 查看本地代码是否有改动,如果有改动先执行命令 git stash 暂存改动;
- 执行命令 git checkout master 切换到主分支;
- 执行命令 git fetch origin --tags 拉取版本信息;
- 执行命令 git pull origin master 拉取maste主分支最新代码;
- 如果 上面执行了 git stash暂存了改动,可以执行 git stash pop 把暂存的改动恢复;
-
服务升级
- 执行命令 pip3 install -r 00_script/depend/requirements.txt 安装更新环境依赖包;
- 执行命令 python3 manage.py migrate 完成可能的数据库迁移;
- 执行命令 python3 manage.py collectstatic --noinput 收集静态文件;
-
执行命令 systemctl start zhongkun.service 启动服务;
-
进admin后台,在AAI proxy配置参数中,配置代理对应的AAI接入信息,“client id”,“client secret”,“jwt公私密钥”,“代理服务地址”和“代理服务的登出回调地址”等。