港泊软件版本更新步骤

v4.2.4

  1. 禁止桶写入
     python manage.py bucket_lock --lock=1 --all
  1. 选择一个服务节点跟新代码
   停止服务
   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
  1. 同步其他节点代码

  2. 开放桶写入

    python manage.py bucket_lock --lock=0 --all
  1. 启动服务

v4.2.3

  1. 禁止桶写入
     python manage.py bucket_lock --lock=1 --all
  1. 选择一个服务节点跟新代码
   停止服务
   git status  如果有标红的文件 记录文件中修改的内容,弃用修改的内容执行 (git checkout .) 命令,代码更新后还原文件修改内容
   拉取代码
   git pull origin master
   拉取版本号
   git fetch --tags 

   收集静态文件
   echo yes | python manage.py collectstatic
  1. 同步其他节点代码

  2. 开放桶写入

    python manage.py bucket_lock --lock=0 --all
  1. 启动服务

v4.2.2

由4.1.3 更新到 4.2.2 注意: 第二步操作

  1. 禁止桶写入
     python manage.py bucket_lock --lock=1 --all
  1. 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
 }
}
  1. 选择一个服务节点跟新代码
   停止服务
   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
  1. 将代码推送到其他节点 重启服务: 站点参数增加了nextcloud 管理员信息和nextlcoud 域名信息
    nextlcoud 域名信息需要配置公网地址和私网地址, 例如:https://xxx,http://xxx

  2. 开放桶写入

    python manage.py bucket_lock --lock=0 --all
  1. 启动服务

v4.1.3

由4.1.2直接更新到 v4.1.3

  1. 禁止桶写入
     python manage.py bucket_lock --lock=1 --all
  1. 选择一个服务节点跟新代码
   停止服务
   git status  如果有标红的文件 记录文件中修改的内容,弃用修改的内容执行 (git checkout .) 命令,代码更新后还原文件修改内容
   拉取代码
   git pull origin master
   拉取版本号
   git fetch --tags 
   python manage.py check_global_config
   收集静态文件
   echo yes | python manage.py collectstatic
  1. 将代码推送到其他节点,重启服务: 站点参数增加了nextcloud基本信息需要配置
  2. 开放桶写入
    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 为 数据可写入

  1. 禁止桶写入
     python manage.py bucket_lock --lock=1 --all
  1. 选择一个服务节点跟新代码
   停止服务
   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
  1. 将代码推送到其他节点,重启服务:后端站点参数 USE_S3_API s3 服务是否启动

  2. 开放桶写入

    python manage.py bucket_lock --lock=0 --all

5.启动服务


v4.1.1

由4.0.1直接更新到 v4.1.1
注意:此次更新涉及到数据库字段的删除,请做好数据备份

  1. 禁止桶写入
python manage.py bucket_lock --lock=1 --all
  1. 选择一个服务节点跟新代码
   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
  1. 将代码推送到其他节点,重启服务:后端站点参数配置ftp域名、邮箱信息、用户注册开关

  2. 开放桶写入

    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/目录下

  1. 禁止桶写入
     python manage.py bucket_lock --lock=1 --all
  1. 选择一个服务节点跟新代码
   备份 /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 这一行
  1. 更新完代码后,目录结构如下图,多余的文件删除掉,
    img.png

  2. 将代码推送到其他节点,重启服务
    每个节点都要执行 . /home/uwsgi/iharbor/00_script/config_systemctl.sh 命令

  3. 开放桶写入

    python manage.py bucket_lock --lock=0 --all

v4.0.0

更新完版本后, 先不要解除桶的设置,先进后台修改ceph集群的配置信息(新数据写入启用参数):原来没有选中修改为选中状态,选中状态修改为不选中状态

  1. 禁止桶写入
     python manage.py bucket_lock --lock=1 --all
  1. 做好数据备份
    mysqldump -u root -p  数据库名称 > 文件
  1. 停止服务: iharbor 和 ftp
   systemctl stop iharbor
   systemctl stop iharbor_ftp
  1. 选择一个服务节点跟新代码
   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部分修改
  1. 启动服务(代码更新节点,其他节点服务不启动)
   python manage.py runserver 0:8000   # 通过IP:端口方式访问 admin 后端 配置ceph 集群信息
   先不要解除桶锁,先进后台修改ceph集群的配置信息(新数据写入启用参数):原来没有选中修改为选中状态,选中状态修改为不选中状态
  1. 将代码同步到其他节点
    rsync -avP --delete ip:/home/uwsgi/iharbor/  /home/uwsgi/iharbor/
    并到每个节点服务中执行 pip install -r requirements.txt 下载依赖包
  1. 启动服务
   systemctl start iharbor
   #systemctl start iharbor_ftp
  1. 开放桶写入
    python manage.py bucket_lock --lock=0 --all

v1.4.1

按照 v1.4.0 更新
注意:默认站点参数增加resourceAdministrator 资源管理员,更新后重新配置此参数值(云坤后端上查看)。并将资源管理用户权限设置为 权限:有效 角色权限: 第三方APP超级用户

v1.4.0

目录(/home/uwsgi/iharbor/)
先找一个节点更新代码

  1. 禁止桶写入
     python manage.py bucket_lock --lock=1 --all
  1. 做好数据备份
    mysqldump -u root -p  数据库名称 > 文件
  1. 停止服务: iharbor 和 ftp
   systemctl stop iharbor
   systemctl stop iharbor_ftp
  1. 选择一个服务节点跟新代码
   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    # 原来修改的数据不变,缺少的数据会默认添加
  1. 启动服务(代码更新节点,其他节点服务不启动)
    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]
  1. 将代码同步到其他节点
    rsync -avP --delete ip:/home/uwsgi/iharbor/  /home/uwsgi/iharbor/
    并到每个节点服务中执行 pip install -r requirements.txt 下载依赖包
  1. 启动服务
   systemctl start iharbor
   #systemctl start iharbor_ftp
  1. 开放桶写入
    python manage.py bucket_lock --lock=0 --all

v1.3.1

目录(/home/uwsgi/iharbor/)

  1. 所有服务禁止写入
     python manage.py bucket_lock --lock=1 --all
  1. 做好数据备份
    mysqldump -u root -p  数据库名称 > 文件
  1. 停止服务: iharbor 和 ftp
   systemctl stop iharbor
   systemctl stop iharbor_ftp
  1. 选择一个服务节点跟新代码
   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
  1. 将代码同步到其他节点
    rsync -avP --delete ip:/home/uwsgi/iharbor/  /home/uwsgi/iharbor/
    并到每个节点服务中执行 pip install -r requirements.txt 下载依赖包
    python manage.py bucket_lock --lock=0 --all
  1. 启动服务
   systemctl start iharbor
   systemctl start iharbor_ftp

v1.3.0

目录(/home/uwsgi/iharbor/)

  1. 所有服务禁止写入
     python manage.py bucket_lock --lock=1 --all
  1. 做好数据备份
    mysqldump -u root -p  数据库名称 > 文件
  1. 停止服务: iharbor 和 ftp
   systemctl stop iharbor
   systemctl stop iharbor_ftp
  1. 选择一个服务节点跟新代码
   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
  1. 启动服务
   systemctl start iharbor
   systemctl start iharbor_ftp
  1. 将代码同步到其他节点
    rsync -avP --delete ip:/home/uwsgi/iharbor/  /home/uwsgi/iharbor/
    python manage.py bucket_lock --lock=0 --all

v1.2.0

  1. 所有服务禁止写入
    python manage.py bucket_lock --lock=1 --all

  2. 做好数据备份

  3. 增加字段
    说明如果手动操作数据库执行这行命令且 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;"

  4. 更新代码
    选择一个节点 更新代码
    git pull origin master
    git fetch --tags
    python manage.py collectstatic
    将该节点的代码同步到其它节点后,启动服务

  5. 恢复写入权限
    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

  1. 停止服务更新代码
  2. 更新依赖包 pip install -r requirements.txt
  3. 拉去版本号 git fetch --tags
  4. 收集文件 echo yes | python manage.py collectstatic
  5. 启动服务

v1.1.0

django 版本升级

django-3.2.13 --> django-4.2.5
注:本次版本升级不涉及到数据库字段的更改

升级前准备:
停止 备份服务

一、 测试一个节点升级:

  1. 更新一个节点
  2. 停止服务更新代码
  3. 更新依赖包 pip install -r requirements.txt
  4. 拉去版本号 git fetch --tags
  5. 收集文件 python manage.py collectstatic
  6. 测试服务
    二、 更新 剩下的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

数据库变动:

  1. cephcluster model移除字段“alias”,添加“priority_stored_value”。
  2. 对象元数据model增加字段“pool_id”、“sync_start1”、“sync_end1”、“sync_start2”、“sync_end2”。
  3. 增加对象同步错误记录表;

升级过程简述

  1. 先找一个web节点,停止Web服务,然后更新代码。
  2. 先保留 cephcluster model的字段“alias”,避免影响线上的服务,升级完后再手动删除此字段。
    先注释掉ceph下的迁移文件0002_auto_20230217_1026.py中的移除字段“alias”的代码。
  3. 执行数据库迁移文件,python3 manage.py migrate。
  4. 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。
  5. 手动为所有桶 对象元数据表添加字段“sync_start1”、“sync_end1”、“sync_start2”、“sync_end2”。
  6. 更新ftp部署节点代码,web节点代码。
  7. 删除cephcluster model表的字段“alias”。

Recent Comments

您尚未收到任何评论。