{{< details >}}
- Tier: 基础版,专业版,旗舰版
- Offering: 私有化部署
{{< /details >}}
如果您使用自编译安装方法安装了极狐GitLab,您可以将您的实例转换为 Linux 软件包实例。
在转换自编译安装时:
- 您必须转换为完全相同版本的极狐GitLab。
- 您必须在
/etc/gitlab/gitlab.rb
中配置设置,因为诸如gitlab.yml
、puma.rb
和smtp_settings.rb
等文件中的设置会丢失。
{{< alert type=”warning” >}}
转换自编译安装尚未经过极狐GitLab 测试。
{{< /alert >}}
要将您的自编译安装转换为 Linux 软件包安装:
-
从当前的自编译安装创建备份:
cd /home/git/gitlab sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
- 使用 Linux 软件包安装极狐GitLab。
- 将备份文件复制到新服务器的目录
/var/opt/gitlab/backups/
。 -
在新安装中恢复备份(详细说明):
# 此命令将覆盖极狐GitLab 数据库的内容! sudo gitlab-backup restore BACKUP=<FILE_NAME>
根据您的数据库和 Git 数据的大小,恢复过程需要几分钟。
- 因为所有设置都存储在 Linux 软件包安装中的
/etc/gitlab/gitlab.rb
中,您必须重新配置新安装。个别设置必须从诸如gitlab.yml
、puma.rb
和smtp_settings.rb
等自编译安装文件中手动移动。有关所有可用选项,请参阅gitlab.rb
模板。 - 将密钥从旧的自编译安装复制到新的 Linux 软件包安装:
- 恢复与 Rails 相关的密钥。从
/home/git/gitlab/config/secrets.yml
(自编译安装)复制db_key_base
、secret_key_base
、otp_key_base
、encrypted_settings_key_base
、openid_connect_signing_key
和active_record_encryption
的值到/etc/gitlab/gitlab-secrets.json
(Linux 软件包安装)中的相应值。 -
将
/home/git/gitlab-shell/.gitlab_shell_secret
(自编译安装)的内容复制到/etc/gitlab/gitlab-secrets.json
(Linux 软件包安装)中的secret_token
。它看起来像这样:{ "gitlab_workhorse": { "secret_token": "..." }, "gitlab_shell": { "secret_token": "..." }, "gitlab_rails": { "secret_key_base": "...", "db_key_base": "...", "otp_key_base": "...", "encrypted_settings_key_base": "...", "openid_connect_signing_key": "...", "active_record_encryption_primary_key": [ "..."], "active_record_encryption_deterministic_key": ["..."], "active_record_encryption_key_derivation_salt": "...", } ... }
- 恢复与 Rails 相关的密钥。从
-
重新配置极狐GitLab 以应用更改:
sudo gitlab-ctl reconfigure
-
如果您迁移了
/home/git/gitlab-shell/.gitlab_shell_secret
,您必须重启 Gitaly:sudo gitlab-ctl restart gitaly
将外部 PostgreSQL 转换为使用备份的 Linux 软件包安装
您可以通过使用备份将外部 PostgreSQL 安装转换为 Linux 软件包 PostgreSQL 安装。执行此操作时,您必须使用相同的极狐GitLab 版本。
要通过使用备份将外部 PostgreSQL 安装转换为 Linux 软件包 PostgreSQL 安装:
- 从非 Linux 软件包安装创建备份
- 在 Linux 软件包安装中恢复备份。
-
运行
check
任务:sudo gitlab-rake gitlab:check
-
如果您收到类似
No such file or directory @ realpath_rec - /home/git
的错误,请运行:find . -lname /home/git/gitlab-shell/hooks -exec sh -c 'ln -snf /opt/gitlab/embedded/service/gitlab-shell/hooks $0' {} \;
这假设 gitlab-shell
位于 /home/git
。
原地将外部 PostgreSQL 转换为 Linux 软件包安装
您可以原地将外部 PostgreSQL 安装转换为 Linux 软件包 PostgreSQL 安装。
这些说明假定:
- 您在 Ubuntu 上使用 PostgreSQL。
- 您有一个与当前极狐GitLab 版本匹配的 Linux 软件包。
- 您的极狐GitLab 自编译安装使用所有默认路径和用户。
- Git 用户的现有主目录 (
/home/git
) 将更改为/var/opt/gitlab
。
要原地将外部 PostgreSQL 安装转换为 Linux 软件包 PostgreSQL 安装:
-
停止并禁用极狐GitLab、Redis 和 NGINX:
# Ubuntu sudo service gitlab stop sudo update-rc.d gitlab disable sudo service nginx stop sudo update-rc.d nginx disable sudo service redis-server stop sudo update-rc.d redis-server disable
- 如果您使用配置管理系统在服务器上管理极狐GitLab,请在那里禁用极狐GitLab 及其相关服务。
-
为新设置创建一个
gitlab.rb
文件:sudo mkdir /etc/gitlab sudo tee -a /etc/gitlab/gitlab.rb <<'EOF' # 在这里使用您自己的极狐GitLab URL external_url 'http://gitlab.example.com' # 我们假设您的存储库位于 /home/git/repositories(源安装的默认位置),并且 Gitaly 在 /home/git/gitlab/tmp/sockets/private/gitaly.socket 上监听一个 socket gitaly['configuration'] = { storage: [ { name: 'default', path: '/home/git/repositories' } ] } gitlab_rails['repositories_storages'] = { default: { gitaly_address: '/home/git/gitlab/tmp/sockets/private/gitaly.socket' } } # 重用系统上已经运行的 PostgreSQL postgresql['enable'] = false # 此 db_host 设置适用于 Debian PostgreSQL 软件包 gitlab_rails['db_host'] = '/var/run/postgresql/' gitlab_rails['db_port'] = 5432 # 我们假设您将极狐GitLab 数据库用户称为 'git' gitlab_rails['db_username'] = 'git' EOF
-
现在安装 Linux 软件包并重新配置安装:
sudo gitlab-ctl reconfigure
-
由于
gitlab-ctl reconfigure
运行更改了 Git 用户的主目录,并且 OpenSSH 无法再找到其authorized_keys
文件,请重建密钥文件:sudo gitlab-rake gitlab:shell:setup
您现在应该可以通过 HTTP 和 SSH 访问极狐GitLab 服务器,并具有之前存储库和用户。
- 如果您可以登录极狐GitLab Web 界面,请重新启动您的服务器,以确保没有旧服务干扰 Linux 软件包安装。
- 如果您使用特殊功能(如 LDAP),您必须将设置放入
gitlab.rb
。有关更多信息,请参阅设置文档。