Skip to content

离线安装(不能联网的服务器) ​

这一篇是干什么的:服务器不能上外网时怎么装。做法是:先在一台能上网的机器上打好一个"安装包",拷进服务器,再安装。

导出离线包后,生成的安装包和指纹文件

整件事分三步 ​

  1. 在能上网的机器上,导出离线包
  2. 把包拷进离线服务器,校验文件完整
  3. 在服务器上执行安装

开始之前 ​

要准备的说明
离线服务器已装好 Docker Engine 和 Docker Compose v2。这两个没法从包里带,要提前装
一台"打包机"能上网、能跑 Docker 的 Linux 机器,用来导出安装包
验签公钥文件发行方随包提供,校验安装包真伪用

第一步:在打包机上导出离线包 ​

bash
./scripts/export-offline.sh 1.2.0

把 1.2.0 换成要导出的版本号。

导出前,这台机器上要有签名好的发布制品(发布清单、SBOM、checksum 和签名),缺一样都会导出失败——这是为了确保打出来的包是正式版本。

跑完生成两个文件:

  • offline/enterprise-scrm-1.2.0.tar.gz — 离线包本体
  • offline/enterprise-scrm-1.2.0.tar.gz.sha256 — 指纹文件

离线包里装着什么:

内容说明
程序镜像后端、网关,加 MySQL、Redis 和一个小工具镜像
安装材料Compose 配置、空数据库结构、安装和灾备脚本
不含什么任何运行密钥、任何业务数据

第二步:拷进离线服务器并校验 ​

用 U 盘、内网文件服务器都行,把两个文件拷到离线服务器上。

拷完先核对指纹,确认文件在传输中没有损坏:

bash
sha256sum -c enterprise-scrm-1.2.0.tar.gz.sha256

看到 OK 才算完整。

第三步:解压并安装 ​

bash
tar -xzf enterprise-scrm-1.2.0.tar.gz
cd enterprise-scrm-1.2.0
chmod +x scripts/*.sh
SCRM_INSTALL_PUBLIC_URL=https://你的域名 COSIGN_PUBLIC_KEY_FILE=/path/to/release-public-key.pem ./scripts/install-offline.sh .

命令里两处要换成你自己的:

  • SCRM_INSTALL_PUBLIC_URL:系统对外的网址,填你的域名。
  • COSIGN_PUBLIC_KEY_FILE:验签公钥文件的路径。

末尾那个 . 表示"就在当前文件夹里安装",照抄即可。

离线服务器上安装:校验签名、导入镜像、安装完成

安装脚本会按顺序做这些检查,任何一步不过都会停下来:

  1. 校验发布清单和数字签名(确认这个包是官方出的、没被改过)
  2. 校验包内每个文件的指纹
  3. 把程序镜像导入本机 Docker
  4. 走标准安装流程(和在线安装一样)

第四步:等自检通过 ​

安装脚本最后会等一个叫 /readyz 的自检——它会确认数据库和缓存都就绪才放行。看到安装完成提示、拿到一次性管理员密码,就装好了。

"活着"和"能干活"是两回事

系统有两个体检指标:/healthz 只说明程序活着;/readyz 才说明数据库和缓存都就绪、能接活。安装、升级、回滚看的都是 /readyz。

第五步:配 HTTPS、接企业微信 ​

和在线安装完全一样:

出错了怎么办 ​

屏幕上显示什么意思怎么办
COSIGN_PUBLIC_KEY_FILE is required没填验签公钥找到发行方给的公钥文件,把路径填上
signed release manifest is missing包里缺发布清单包不完整,找发行方重新获取
images.tar not found没在解压出来的文件夹里执行先 cd 进解压出来的目录再跑
校验不通过(checksum 错误)文件在传输中损坏重新拷一遍;还不行就重新导出

常见问题 ​

Q:离线包里会不会带着别人的数据?

不会。包里只有程序,没有任何密钥,也没有任何业务数据。装出来是一个干净的空系统。

Q:以后升级也要离线操作吗?

是。拿到新版本的镜像包后,用升级脚本的离线模式。见升级与回滚。

Q:打包机用什么系统?

用装好 Docker 的 Linux 机器最稳妥。导出脚本本身也要用到 Docker。

Q:离线服务器能不能先装一半、以后联网了再补?

不建议。在线和离线只是获取安装材料的渠道不同,装完的系统是一样的,没必要换来换去。

相关页面 ​

本说明书为企业 SCRM 私有化部署产品的配套文档