将私有化部署的自行编译安装转换为 Linux 软件包安装
如果您使用自行编译安装方法安装了极狐GitLab,您可以将您的实例转换为 Linux 软件包实例。
在转换自行编译安装时:
- 您必须转换为完全相同版本的极狐GitLab。
- 您必须在
/etc/gitlab/gitlab.rb
中配置设置,因为gitlab.yml
、puma.rb
和smtp_settings.rb
等文件中的设置会丢失。
要将您的自行编译安装转换为 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>
根据您的数据库和极狐GitLab数据大小,恢复过程需要几分钟。
- 因为所有设置都存储在 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
的值到/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": "...", } ... }
- 恢复与 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(源安装的默认值) git_data_dirs({ 'default' => { 'path' => '/home/git' } }) # 重用已经在您系统上运行的 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
中。有关更多信息,请参见设置文档。