v4.2.4
- 禁止桶写入
python manage.py bucket_lock --lock=1 --all
- 选择一个服务节点跟新代码
停止服务
git status 如果有标红的文件 记录文件中修改的内容,弃用修改的内容执行 (git checkout .) 命令,代码更新后还原文件修改内容
拉取代码
git pull origin master
拉取版本号
git fetch --tags
# 如果是centos stream 10 注意查看下 python manage.py migrate --plan 有没有迁移文件
收集静态文件
echo yes | python manage.py collectstatic
-
同步其他节点代码
-
开放桶写入
python manage.py bucket_lock --lock=0 --all
- 启动服务
v4.2.3
- 禁止桶写入
python manage.py bucket_lock --lock=1 --all
- 选择一个服务节点跟新代码
停止服务
git status 如果有标红的文件 记录文件中修改的内容,弃用修改的内容执行 (git checkout .) 命令,代码更新后还原文件修改内容
拉取代码
git pull origin master
拉取版本号
git fetch --tags
收集静态文件
echo yes | python manage.py collectstatic
-
同步其他节点代码
-
开放桶写入
python manage.py bucket_lock --lock=0 --all
- 启动服务
v4.2.2
由4.1.3 更新到 4.2.2 注意: 第二步操作
- 禁止桶写入
python manage.py bucket_lock --lock=1 --all
- nextcloud 数据库信息修改,下面字典信息替换到站点参数 nextCloudDatabase
{
"ENGINE": "django.db.backends.mysql",
"NAME": "nextcloud",
"USER": "xxx",
"PASSWORD": "xxx",
"HOST": "127.0.0.1",
"PORT": "3306",
"CONN_MAX_AGE": 3600,
"OPTIONS": {
"init_command": "SET sql_mode='STRICT_TRANS_TABLES'",
"charset": "utf8mb4"
},
"ATOMIC_REQUESTS": false,
"AUTOCOMMIT": true,
"CONN_HEALTH_CHECKS": false,
"TIME_ZONE": null,
"TEST": {
"CHARSET": null,
"COLLATION": null,
"MIGRATE": true,
"MIRROR": null,
"NAME": null
}
}
- 选择一个服务节点跟新代码
停止服务
git status 如果有标红的文件 记录文件中修改的内容,弃用修改的内容执行 (git checkout .) 命令,代码更新后还原文件修改内容
拉取代码
git pull origin master
拉取版本号
git fetch --tags
# 更新依赖包
pip install -r /home/uwsgi/iharbor/00_script/depend/requirements.txt
python manage.py migrate # 迁移的文件
python manage.py check_global_config
收集静态文件
echo yes | python manage.py collectstatic
-
将代码推送到其他节点 重启服务: 站点参数增加了nextcloud 管理员信息和nextlcoud 域名信息
nextlcoud 域名信息需要配置公网地址和私网地址, 例如:https://xxx,http://xxx。 -
开放桶写入
python manage.py bucket_lock --lock=0 --all
- 启动服务
v4.1.3
由4.1.2直接更新到 v4.1.3
- 禁止桶写入
python manage.py bucket_lock --lock=1 --all
- 选择一个服务节点跟新代码
停止服务
git status 如果有标红的文件 记录文件中修改的内容,弃用修改的内容执行 (git checkout .) 命令,代码更新后还原文件修改内容
拉取代码
git pull origin master
拉取版本号
git fetch --tags
python manage.py check_global_config
收集静态文件
echo yes | python manage.py collectstatic
- 将代码推送到其他节点,重启服务: 站点参数增加了nextcloud基本信息需要配置
- 开放桶写入
python manage.py bucket_lock --lock=0 --all
5.启动服务
v4.1.2
由4.1.1直接更新到 v4.1.2
注意:
v1.3.0版本之后,增加ceph信息需要重新启动iharbor服务
ceph集群配置参数disable_choice(新数据写入启用) 逻辑修改:true 为 数据可写入
- 禁止桶写入
python manage.py bucket_lock --lock=1 --all
- 选择一个服务节点跟新代码
停止服务
git status 如果有标红的文件 记录文件中修改的内容,弃用修改的内容执行 (git checkout .) 命令,代码更新后还原文件修改内容
拉取代码
git pull origin master
拉取版本号
git fetch --tags
添加站点参数(参数 USE_S3_API 配置)
python manage.py check_global_config
收集静态文件
echo yes | python manage.py collectstatic
-
将代码推送到其他节点,重启服务:后端站点参数 USE_S3_API s3 服务是否启动
-
开放桶写入
python manage.py bucket_lock --lock=0 --all
5.启动服务
v4.1.1
由4.0.1直接更新到 v4.1.1
注意:此次更新涉及到数据库字段的删除,请做好数据备份
- 禁止桶写入
python manage.py bucket_lock --lock=1 --all
- 选择一个服务节点跟新代码
git status 如果有标红的文件 记录文件中修改的内容,弃用修改的内容执行 (git checkout .) 命令,代码更新后还原文件修改内容
拉取代码
git pull origin master
拉取版本号
git fetch --tags
迁移步骤:
python manage.py migrate # 迁移的文件
更新依赖包 提前启用代理
pip install -r /home/uwsgi/iharbor/00_script/depend/requirements.txt
添加站点参数(邮件相关)
python manage.py check_global_config
收集静态文件
echo yes | python manage.py collectstatic
-
将代码推送到其他节点,重启服务:后端站点参数配置ftp域名、邮箱信息、用户注册开关
-
开放桶写入
python manage.py bucket_lock --lock=0 --all
注意:
v1.3.0版本之后,增加ceph信息需要重新启动iharbor服务
ceph集群配置参数disable_choice(新数据写入启用) 逻辑修改:true 为 数据可写入
v4.0.1
注意:此次更新没有数据库字段更改,只更改目录结构,重新配置iharbor服务文件软连接
00_shell 更名为 00_script
webserver 更名为 django_site
依赖包信息文件放置到 00_script/depend/目录下
- 禁止桶写入
python manage.py bucket_lock --lock=1 --all
- 选择一个服务节点跟新代码
备份 /home/uwsgi/iharbor/webserver/security_settings.py
git status 如果有标红的文件 记录文件中修改的内容,弃用修改的内容执行 (git checkout .) 命令,代码更新后还原文件修改内容
拉取代码
git pull origin master
拉取版本号
git fetch --tags
迁移步骤:
python manage.py migrate --plan # 显示有迁移的文件, 如果为 No planned migration operations 可跳过迁移步骤,否则执行 python manage.py migrate 命令
收集静态文件
echo yes | python manage.py collectstatic
将备份的 security_settings.py 复制到 /home/uwsgi/iharbor/django_site/
删除 webserver 目录
执行 00_script/config_systemctl.sh 重新配置 iharbor service 服务文件
. /home/uwsgi/iharbor/00_script/config_systemctl.sh # 如果服务不起ftp, 编辑配置文件禁掉 systemctl enable iharbor_ftp 这一行
-
更新完代码后,目录结构如下图,多余的文件删除掉,
-
将代码推送到其他节点,重启服务
每个节点都要执行 . /home/uwsgi/iharbor/00_script/config_systemctl.sh 命令 -
开放桶写入
python manage.py bucket_lock --lock=0 --all
v4.0.0
更新完版本后, 先不要解除桶的设置,先进后台修改ceph集群的配置信息(新数据写入启用参数):原来没有选中修改为选中状态,选中状态修改为不选中状态
- 禁止桶写入
python manage.py bucket_lock --lock=1 --all
- 做好数据备份
mysqldump -u root -p 数据库名称 > 文件
- 停止服务: iharbor 和 ftp
systemctl stop iharbor
systemctl stop iharbor_ftp
- 选择一个服务节点跟新代码
git status 如果有标红的文件 记录文件中修改的内容,弃用修改的内容执行 (git checkout .) 命令,代码更新后还原文件修改内容
拉取代码
git pull origin master
拉取版本号
git fetch --tags
下载依赖包
pip install -r requirements.txt
迁移步骤:
python manage.py migrate --plan # 显示有迁移的文件, 如果为 No planned migration operations 可跳过迁移步骤,否则执行 python manage.py migrate 命令
收集静态文件
echo yes | python manage.py collectstatic
执行站点参数检测命令:
python manage.py check_global_config # 原来修改的数据不变,缺少的数据会默认添加 参考 版本 v1.4.0 第5部分修改
- 启动服务(代码更新节点,其他节点服务不启动)
python manage.py runserver 0:8000 # 通过IP:端口方式访问 admin 后端 配置ceph 集群信息
先不要解除桶锁,先进后台修改ceph集群的配置信息(新数据写入启用参数):原来没有选中修改为选中状态,选中状态修改为不选中状态
- 将代码同步到其他节点
rsync -avP --delete ip:/home/uwsgi/iharbor/ /home/uwsgi/iharbor/
并到每个节点服务中执行 pip install -r requirements.txt 下载依赖包
- 启动服务
systemctl start iharbor
#systemctl start iharbor_ftp
- 开放桶写入
python manage.py bucket_lock --lock=0 --all
v1.4.1
按照 v1.4.0 更新
注意:默认站点参数增加resourceAdministrator 资源管理员,更新后重新配置此参数值(云坤后端上查看)。并将资源管理用户权限设置为 权限:有效 角色权限: 第三方APP超级用户
v1.4.0
目录(/home/uwsgi/iharbor/)
先找一个节点更新代码
- 禁止桶写入
python manage.py bucket_lock --lock=1 --all
- 做好数据备份
mysqldump -u root -p 数据库名称 > 文件
- 停止服务: iharbor 和 ftp
systemctl stop iharbor
systemctl stop iharbor_ftp
- 选择一个服务节点跟新代码
git status 如果有标红的文件 记录文件中修改的内容,弃用修改的内容执行 (git checkout .) 命令,代码更新后还原文件修改内容
拉取代码
git pull origin master
拉取版本号
git fetch --tags
下载依赖包
pip install -r requirements.txt
迁移步骤:
python manage.py migrate --plan # 显示有迁移的文件, 如果为 No planned migration operations 可跳过迁移步骤,否则执行 python manage.py migrate 命令
收集静态文件
echo yes | python manage.py collectstatic
执行站点参数检测命令:
python manage.py check_global_config # 原来修改的数据不变,缺少的数据会默认添加
- 启动服务(代码更新节点,其他节点服务不启动)
v4.0.0 之后 webserver 更名为 django_site
python manage.py runserver 0:8000 # 通过IP:端口方式访问 admin 后端 配置站点信息
必须填写:
1. passportJwt 配置, 原始内容在 django_site/security_settings.py 中 PASSPORT_JWT['xxx']
将 """xxx""" 都放置在 passportJwt 内容中保持格式不变
2. s3DomainName 配置s3 域名, 可以在 security_settings.py或settings.py 中 S3_SERVER_HTTP_HOST_NAME 查看 或从nginx 配置文件中查看
3. 检查 ftpCertFilePath ftp 证书路径是否正确
配后将 django_site/security_settings.py 中 PASSPORT_JWT['xxx'] 注释掉 settings.py 文件中的 S3_SERVER_HTTP_HOST_NAME 删除掉
例如:
#PASSPORT_JWT['xx'] = """
#xxx
#"""
s3 域名配置也有注释掉 (security_settings.py和settings.py)
# S3_SERVER_HTTP_HOST_NAME = [xxxx]
- 将代码同步到其他节点
rsync -avP --delete ip:/home/uwsgi/iharbor/ /home/uwsgi/iharbor/
并到每个节点服务中执行 pip install -r requirements.txt 下载依赖包
- 启动服务
systemctl start iharbor
#systemctl start iharbor_ftp
- 开放桶写入
python manage.py bucket_lock --lock=0 --all
v1.3.1
目录(/home/uwsgi/iharbor/)
- 所有服务禁止写入
python manage.py bucket_lock --lock=1 --all
- 做好数据备份
mysqldump -u root -p 数据库名称 > 文件
- 停止服务: iharbor 和 ftp
systemctl stop iharbor
systemctl stop iharbor_ftp
- 选择一个服务节点跟新代码
git status 如果有标红的文件 记录文件中修改的内容,如果弃用修改的内容执行 (git checkout .) 命令,否则代码更新后还原文件修改内容
拉取代码
git pull origin master
拉取版本号
git fetch --tags
下载依赖包
pip install -r requirements.txt
迁移步骤:
python manage.py migrate --plan # 显示有迁移的文件, 如果为 No planned migration operations 可跳过迁移步骤
收集静态文件
echo yes | python manage.py collectstatic
- 将代码同步到其他节点
rsync -avP --delete ip:/home/uwsgi/iharbor/ /home/uwsgi/iharbor/
并到每个节点服务中执行 pip install -r requirements.txt 下载依赖包
python manage.py bucket_lock --lock=0 --all
- 启动服务
systemctl start iharbor
systemctl start iharbor_ftp
v1.3.0
目录(/home/uwsgi/iharbor/)
- 所有服务禁止写入
python manage.py bucket_lock --lock=1 --all
- 做好数据备份
mysqldump -u root -p 数据库名称 > 文件
- 停止服务: iharbor 和 ftp
systemctl stop iharbor
systemctl stop iharbor_ftp
- 选择一个服务节点跟新代码
git status 如果有标红的文件 记录文件中修改的内容,如果弃用修改的内容执行 (git checkout .) 命令,否则代码更新后还原文件修改内容
拉取代码
git pull origin master
拉取版本号
git fetch --tags
下载依赖包
pip install -r requirements.txt
迁移步骤:
python manage.py migrate --plan # 显示有迁移的文件, 如果为 No planned migration operations 可跳过迁移步骤
收集静态文件
echo yes | python manage.py collectstatic
- 启动服务
systemctl start iharbor
systemctl start iharbor_ftp
- 将代码同步到其他节点
rsync -avP --delete ip:/home/uwsgi/iharbor/ /home/uwsgi/iharbor/
python manage.py bucket_lock --lock=0 --all
v1.2.0
-
所有服务禁止写入
python manage.py bucket_lock --lock=1 --all -
做好数据备份
-
增加字段
说明如果手动操作数据库执行这行命令且 table_name 需要一个一个添加 :mysql 和 tidb : ALTER TABLE {table_name} ADD COLUMN
json_tags JSON DEFAULT NULL ;
如果想批量添加 执行这行命令: python manage.py buckettable --all --sql="ALTER TABLE {table_name} ADD COLUMN json_tags
JSON DEFAULT NULL;" -
更新代码
选择一个节点 更新代码
git pull origin master
git fetch --tags
python manage.py collectstatic
将该节点的代码同步到其它节点后,启动服务 -
恢复写入权限
python manage.py bucket_lock --lock=0 --all
v1.1.3
依照 v1.1.0 更新操作
v1.1.2
依照 v1.1.0 更新操作
v1.1.1
依照 v1.1.0 更新操作
v1.1.0
- 停止服务更新代码
- 更新依赖包
pip install -r requirements.txt
- 拉去版本号
git fetch --tags
- 收集文件
echo yes | python manage.py collectstatic
- 启动服务
v1.1.0
django 版本升级
django-3.2.13 --> django-4.2.5
注:本次版本升级不涉及到数据库字段的更改
升级前准备:
停止 备份服务
一、 测试一个节点升级:
- 更新一个节点
- 停止服务更新代码
- 更新依赖包
pip install -r requirements.txt
- 拉去版本号
git fetch --tags
- 收集文件
python manage.py collectstatic
- 测试服务
二、 更新 剩下的web节点:
pip install -r requirements.txt
git fetch --tags
python manage.py collectstatic
三、 更新 ftp 节点:
代码更新 注:ceph配置文件检查
pip install -r requirements.txt
git fetch --tags
python manage.py collectstatic
四、 启动备份服务
从v0.9.0升级到v1.0.0
数据库变动:
- cephcluster model移除字段“alias”,添加“priority_stored_value”。
- 对象元数据model增加字段“pool_id”、“sync_start1”、“sync_end1”、“sync_start2”、“sync_end2”。
- 增加对象同步错误记录表;
升级过程简述
- 先找一个web节点,停止Web服务,然后更新代码。
- 先保留 cephcluster model的字段“alias”,避免影响线上的服务,升级完后再手动删除此字段。
先注释掉ceph下的迁移文件0002_auto_20230217_1026.py中的移除字段“alias”的代码。 - 执行数据库迁移文件,python3 manage.py migrate。
- v1.0.0版本每个对象通过pool_id字段记录自己存储在那个ceph的那个pool中,bucket的对象元数据表
增加字段“pool_id”,并填充对象元数据pool_id字段的值(已上传的对象实际存储所在的ceph和pool,
对应的 cephcluster 记录的id)。
使用自定义命令 bucketfilepoolid 来完成,此过程中服务上传功能会受影响,因为旧版本代码没
有pool_id,pool_id不填充数据无法创建新的对象元数据记录。
根据服务中 cephcluster 表,修改命令文件 bucketfilepoolid.py 中 ceph_pool_id_mapping,配
置 cephcluster 的别名alias和id的对应关系,然后执行命令python3 manage bucketfilepoolid
,
为所有bucket的对象元数据表增加字段“pool_id”,并填充实际 cephcluster 记录的id。 - 手动为所有桶 对象元数据表添加字段“sync_start1”、“sync_end1”、“sync_start2”、“sync_end2”。
- 更新ftp部署节点代码,web节点代码。
- 删除cephcluster model表的字段“alias”。