如何在 Rocky Linux 9 上安装 Gitlab
GitLab Server 是用于托管 Git 存储库的云托管 GitLab 版本控制的开源版本。与云托管相比,自托管存储库的优势在于可以完全控制您的代码。它具有您可以在云服务上找到的所有功能,使其成为您的开发团队的有用工具。它还附带 Mattermost 聊天服务,允许您的用户相互交谈并共享代码审查。
本指南将教您如何在 Ubuntu 22.04 服务器上使用 Docker 安装 GitLab Server。 GitLab 提供两个版本 - 免费社区版和付费企业版。我们将安装社区版。如果您需要更多功能,可以将其升级到企业版。
先决条件
运行 Rocky Linux 9 的服务器,至少具有 4GB RAM 和 4 个 CPU 核心,可支持最多 500 个用户。
具有 sudo 权限的非 root 用户。
配置为指向服务器 gitlab.example.com
的域名。根据您的要求,我们还将使用 mattermost.example.com
和 pages.example.com
。
一切都更新了。
$ sudo dnf update
您的系统需要的软件包很少。
$ sudo dnf install -y wget nano unzip yum-utils policycoreutils-python-utils
其中一些软件包可能已经安装在您的系统上。
第 1 步 - 配置防火墙
在安装任何软件包之前,第一步是将防火墙配置为打开 HTTP 和 HTTPS 端口。 Rocky Linux 使用 Firewalld 防火墙。检查防火墙的状态。
$ sudo firewall-cmd --state
running
防火墙适用于不同的区域,公共区域是我们将使用的默认区域。列出防火墙上所有活动的服务和端口。
$ sudo firewall-cmd --zone=public --list-all
它应该显示以下输出。
public
target: default
icmp-block-inversion: no
interfaces: enp1s0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
在防火墙中打开 HTTP 和 HTTPS 端口。
$ sudo firewall-cmd --zone=public --add-service=http
$ sudo firewall-cmd --zone=public --add-service=https
重新检查防火墙的状态。
$ sudo firewall-cmd --zone=public --list-all
您应该看到类似的输出。
public
target: default
icmp-block-inversion: no
interfaces: enp1s0
sources:
services: cockpit dhcpv6-client http https ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
使所有更改永久生效并重新加载防火墙以启用更改。
$ sudo firewall-cmd --runtime-to-permanent
$ sudo firewall-cmd --reload
第 2 步 - 安装依赖项
在安装 GitLab 之前,安装 GitLab 正常运行所需的软件包非常重要。所有这些软件包都可以在 Rocky Linux 存储库中找到。
发出以下命令来安装依赖项。
$ sudo dnf install -y curl policycoreutils openssh-server perl
GitLab 需要一个有效的电子邮件解决方案来发送通知电子邮件。有两种选择。其中之一是安装 Postfix。第二种是使用外部 SMTP 服务。如果您想使用 Postfix 选项,请使用以下命令安装它。
$ sudo dnf install postfix
在安装过程中,可能会询问您站点的类型。选择互联网站点作为继续选项,然后添加服务器的 FQDN 作为邮件名称
,然后按Enter继续。如果您看到任何其他屏幕,请按住Enter键选择默认选项。
您将需要更多信息才能将 Postfix 配置为 SMTP 服务器,这些说明超出了本文的范围。 GitLab 有一篇关于配置 Postfix 的文章,您可以查看。
第 3 步 - 安装 GitLab
下载并运行 GitLab 存储库安装程序脚本。
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
忽略有关缺少 pygpgme 软件包的警告,因为它在 Rocky Linux 9 上不可用。
GitLab 附带了很多软件包,这使得管理变得更加容易。例如,GitLab 附带 Nginx Web 服务器并支持创建 Let's Encrypt SSL 证书。
如果您在安装过程中为 GitLab 网站指定外部 URL,则会自动配置该 URL,并生成并应用 SSL 证书。您还可以在安装过程中指定管理员密码。如果您不这样做,GitLab 将生成一个临时密码,该密码会在一天后自动删除。
我们将指定外部 URL 和管理员密码。运行以下命令来安装 GitLab。
$ sudo GITLAB_ROOT_PASSWORD="<strongpassword>" EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ee
为您的安装选择一个强密码。这里我们安装的是 GitLab 企业版 (gitlab-ee
)。如果您不购买并申请许可证,那么它将像其免费社区版一样正常工作。但如果您安装了社区版(gitlab-ce
),那么您将需要再次安装企业版才能升级。因此,即使您不想升级,我们也建议您使用企业版。
安装完成后,您应该会得到类似的输出。
Notes:
Default admin account has been configured with following details:
Username: root
Password: You didn't opt-in to print initial root password to STDOUT.
NOTE: Because these credentials might be present in your log files in plain text, it is highly recommended to reset the password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
gitlab Reconfigured!
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab should be available at https://gitlab.example.com
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=16-9
Verifying : gitlab-ee-16.9.1-ee.0.el9.x86_64 1/1
Installed:
gitlab-ee-16.9.1-ee.0.el9.x86_64
Complete!
您还可以安装特定版本的 GitLab。首先,检查可用的 GitLab 版本列表。
$ sudo dnf --showduplicates list gitlab-ee*
您应该得到类似的输出。
Available Packages
gitlab-ee.x86_64 16.0.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.8-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.8-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.9-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.8-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.8.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.8.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.8.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.8.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.9.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.9.1-ee.0.el9 gitlab_gitlab-ee
让我们安装 16.7.0
版本。
$ sudo GITLAB_ROOT_PASSWORD="<strongpassword>" EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ee-16.7.0-ee.0.el9
检查 GitLab 和相关服务的状态。
$ sudo gitlab-ctl status
您应该看到以下输出。
run: alertmanager: (pid 6551) 1013s; run: log: (pid 6306) 1093s
run: crond: (pid 6507) 1018s; run: log: (pid 5663) 1251s
run: gitaly: (pid 6479) 1020s; run: log: (pid 5297) 1419s
run: gitlab-exporter: (pid 6522) 1016s; run: log: (pid 6183) 1118s
run: gitlab-kas: (pid 5553) 1400s; run: log: (pid 5566) 1399s
run: gitlab-workhorse: (pid 6455) 1021s; run: log: (pid 5766) 1233s
run: logrotate: (pid 5181) 1434s; run: log: (pid 5189) 1433s
run: nginx: (pid 6470) 1021s; run: log: (pid 5806) 1227s
run: node-exporter: (pid 6515) 1017s; run: log: (pid 6150) 1124s
run: postgres-exporter: (pid 6563) 1013s; run: log: (pid 6351) 1087s
run: postgresql: (pid 5360) 1411s; run: log: (pid 5385) 1408s
run: prometheus: (pid 6532) 1016s; run: log: (pid 6268) 1100s
run: puma: (pid 5666) 1247s; run: log: (pid 5673) 1246s
run: redis: (pid 5227) 1428s; run: log: (pid 5236) 1427s
run: redis-exporter: (pid 6524) 1016s; run: log: (pid 6233) 1110s
run: registry: (pid 6480) 1020s; run: log: (pid 5956) 1165s
run: sidekiq: (pid 5692) 1241s; run: log: (pid 5700) 1240s
您可以使用以下命令停止和启动 GitLab。
$ sudo gitlab-ctl stop
$ sudo gitlab-ctl start
GitLab 应该已启动并正在运行。
您还可以使用以下命令停止和启动单个服务。
$ sudo gitlab-ctl stop nginx
$ sudo gitlab-ctl start nginx
$ sudo gitlab-ctl restart nginx
您可以通过在浏览器中访问 https://gitlab.example.com
来访问您的 GitLab 安装。我们将在后面的步骤中回来配置 GitLab。
第 4 步 - 配置 SSL
GitLab 将其配置存储在 /etc/gitlab/gitlab.rb
文件中。打开它进行编辑。
$ sudo nano /etc/gitlab/gitlab.rb
找到 Let's Encrypt Integration
部分并更改值,如下所示。
letsencrypt['contact_emails'] = ['[email '] # This should be an array of email addresses to add as contacts
letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"
这将启用 Let's Encrypt,设置用于接收 SSL 到期通知的电子邮件,并将证书设置为每月 7 天和服务器时间 12:30 自动续订。
启用 DHParam 指令
生成 Diffie-Hellman 组证书。
$ sudo openssl dhparam -dsaparam -out /etc/gitlab/ssl/dhparams.pem 4096
在文件中设置以下选项。
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem" # Path to dhparams.pem, eg. /etc/gitlab/ssl/dhparams.pem
禁用 HTTP 严格传输安全 (HSTS)
启用 HTTPS 会自动启用 HSTS 服务。有时,当您以后不需要它时,它可能会导致问题。要禁用 HSTS,请配置以下变量。
nginx['hsts_include_subdomains'] = false
完成后,按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
使用新设置重新配置 GitLab。
$ sudo gitlab-ctl reconfigure
此过程可能需要一些时间才能完成。完成后,您可以通过在浏览器中访问 https://gitlab.example.com
来访问 GitLab 安装。您应该会看到以下登录页面。
第 5 步 - 配置 SMTP
GitLab 需要发送通知电子邮件,为此,我们需要为其启用 SMTP 设置。如果您使用的是 Postfix,则可以跳过此步骤。否则,我们继续。
打开 GitLab 配置文件进行编辑。
$ sudo nano /etc/gitlab/gitlab.rb
我们将在教程中使用 Amazon SES。在文件中找到 SMTP 部分并设置如下所示的值。
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "email-smtp.region-1.amazonaws.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "IAMmailerKey"
gitlab_rails['smtp_password'] = "IAMmailerSecret"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
# If your SMTP server does not like the default 'From: gitlab@localhost' you
# can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = '[email '
gitlab_rails['gitlab_email_display_name'] = 'Howtoforge GitLab'
gitlab_rails['gitlab_email_reply_to'] = '[email '
您可以通过设置以下选项来启用 SMTP 连接池。
gitlab_rails['smtp_pool'] = true
这允许 Sidekiq 工作人员为多个作业重复使用 SMTP 连接。
完成后,按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
您还可以加密 SMTP 身份验证详细信息。运行以下命令。
sudo gitlab-rake gitlab:smtp:secret:edit EDITOR=nano
在文件中输入 SMTP 用户名和密码,如图所示。
user_name: 'smtp user'
password: 'smtp password'
按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
从 /etc/gitlab/gitlab.rb
中删除变量 gitlab_rails['smtp_user_name'] 和 gitlab_rails['smtp_password']
。
完成 SMTP 设置后,重新配置 GitLab 设置。
$ sudo gitlab-ctl reconfigure
第 6 步 - 配置 Nginx
GitLab 内置的 Nginx 服务器可以进行广泛的配置。我们将介绍一些重要的选项。
打开 GitLab 配置文件进行编辑。
$ sudo nano /etc/gitlab/gitlab.rb
将 HTTP 重定向到 HTTPS。
更改以下值以自动将 HTTP 重定向到 HTTPS 链接。
nginx['redirect_http_to_https'] = true
设置 Referrer-Policy 标头
默认情况下,GitLab 将所有响应的 Referrer-Policy
标头设置为 strict-origin-when-cross-origin
。配置以下变量以将此标头设置为不同的值。
nginx['referrer_policy'] = 'same-origin'
将自定义 Nginx 设置插入 GitLab 服务器块
使用以下变量将自定义设置插入到 GitLab 服务器块中。
# Example: block raw file downloads from a specific repository
nginx['custom_gitlab_server_config'] = "location ^~ /foo-namespace/bar-project/raw/ {\n deny all;\n}\n"
将自定义设置插入 Nginx 配置中
使用以下设置插入自定义设置。
# Example: include a directory to scan for additional config files
nginx['custom_nginx_config'] = "include /etc/gitlab/nginx/sites-enabled/*.conf;"
创建 /etc/gitlab/nginx/sites-available 目录。
$ sudo mkdir /etc/gitlab/nginx/sites-available
在其中创建块文件。
$ sudo touch /etc/gitlab/nginx/sites-enabled/example.conf
编辑它并添加您的设置。
$ sudo nano /etc/gitlab/nginx/sites-enabled/example.conf
完成后,返回终端,运行以下命令创建 /etc/gitlab/nginx/sites-enabled
目录。
$ sudo mkdir /etc/gitlab/nginx/sites-enabled
运行以下命令来创建符号链接。
sudo ln -s /etc/gitlab/nginx/sites-available/example.conf /etc/gitlab/nginx/sites-enabled/example.conf
完成 Nginx 配置后,按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
重新配置 GitLab 设置。
$ sudo gitlab-ctl reconfigure
第 7 步 - 启用容器注册表
如果您使用内置的 Let’s Encrypt 集成,容器注册表会自动启用并在您的 GitLab 域端口 5050 上可用。
打开 GitLab 配置文件。
$ sudo nano /etc/gitlab/gitlab.rb
设置 GitLab 容器注册表的外部 URL。
registry_external_url 'https://gitlab.example.com:5050'
通过在上述行下方添加以下行,将 HTTP 设置为 HTTPS 重定向。
registry_nginx['redirect_http_to_https'] = true
按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
重新配置 GitLab 设置。
$ sudo gitlab-ctl reconfigure
在防火墙中打开端口 2425。
$ sudo firewall-cmd --zone=public --add-port=5050/tcp
$ sudo firewall-cmd --runtime-to-permanent
$ sudo firewall-cmd --reload
使用以下命令进行验证。
$ openssl s_client -showcerts -servername gitlab.example.com -connect gitlab.example.com:5050 > cacert.pem
您应该能够使用以下命令使用 GitLab 凭据从 Docker 登录容器注册表。
$ docker login gitlab.example.com:5050
您可以为容器注册表使用不同的 URL,例如 https://registry.gitlab.example.com
,这将需要额外的配置。您还可以为容器配置 S3 存储。检查 GitLab 容器注册表文档以获取说明。
第 8 步 - 启用 GitLab 页面
您需要拥有一个不是 GitLab URL 子域的域。出于我们的目的,我们将使用 https://pages.example.com
托管 GitLab 页面。我们还假设我们不使用通配符 DNS。
打开 GitLab 配置文件。
$ sudo nano /etc/gitlab/gitlab.rb
如图所示设置以下变量。
pages_external_url 'https://pages.example.com'
.....
# Experimental - Enable namespace in path
gitlab_pages["namespace_in_path"] = true
在 GitLab Pages NGINX
部分为 GitLab 页面配置 Nginx。
# Below you can find settings that are exclusive to "GitLab Pages NGINX"
pages_nginx['enable'] = true
pages_nginx['redirect_http_to_https'] = true
pages_nginx['ssl_certificate'] = "/etc/letsencrypt/live/pages.example.com/fullchain.pem"
pages_nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/pages.example.com/privkey.pem"
按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
重新配置 GitLab 设置。
$ sudo gitlab-ctl reconfigure
如果您想托管基于通配符 DNS 的域,请参阅 GitLab Pages 文档。
第 9 步 - 启用 MatterMost
Mattermost 是一个开源在线聊天服务,具有文件共享、表情符号、GIF、Markdown 支持、语法突出显示和多语言支持等功能。 GitLab 附带了 MatterMost,您可以启用它并允许共享 GitLab 实例的公司用户相互通信。
GitLab Mattermost 默认处于禁用状态。要启用它,请打开 GitLab 配置文件。
$ sudo nano /etc/gitlab/gitlab.rb
添加 Mattermost 外部 URL。 GitLab 将使用 Let's Encrypt 自动为 URL 生成 SSL。
mattermost_external_url 'https://mattermost.example.com'
通过添加以下行,确保将 Mattermost 的 HTTP 到 HTTPS 配置设置设置为 true。
mattermost_nginx['redirect_http_to_https'] = true
按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
重新配置 GitLab 设置。
$ sudo gitlab-ctl reconfigure
您应该能够通过 https://mattermost.example.com
访问 Mattermost。当您启动 URL 时,您应该会看到以下页面。
如果您安装了 Mattermost 应用程序,请选择在桌面应用程序中查看按钮或选择在浏览器中查看按钮选项。请务必选中记住我的偏好选项,以免系统再次询问您。我们将在下一步中重新配置 Mattermost。
为 Mattermost 配置 SMTP
Mattermost 将其配置存储在 /var/opt/gitlab/mattermost/config.json
文件中。打开它进行编辑。
$ sudo nano /var/opt/gitlab/mattermost/config.json
找到“EmailSettings”
部分并按所示进行配置。 FeedbackEmail
、ReplyToAddress
、EnableSMTPAuth
、SMTPUsername
、SMTPPassword
、SMTPServer
、SMTPPort
、ConnectionSecurity
和 SkipServerCertificateVerification
是我们需要对其进行设置的设置。
"EmailSettings": {
"EnableSignUpWithEmail": true,
"EnableSignInWithEmail": true,
"EnableSignInWithUsername": true,
"SendEmailNotifications": true,
"UseChannelInEmailNotifications": false,
"RequireEmailVerification": false,
"FeedbackName": "Howtoforge Mattermost",
"FeedbackEmail": "[email ",
"ReplyToAddress": "[email ",
"FeedbackOrganization": "",
"EnableSMTPAuth": true,
"SMTPUsername": "AmazonSESUsername",
"SMTPPassword": "AmazonSESPassword",
"SMTPServer": "email-smtp.us-west-2.amazonaws.com",
"SMTPPort": "465",
"SMTPServerTimeout": 10,
"ConnectionSecurity": "TLS",
"SendPushNotifications": true,
"PushNotificationServer": "https://push-test.mattermost.com",
"PushNotificationContents": "full",
"PushNotificationBuffer": 1000,
"EnableEmailBatching": false,
"EmailBatchingBufferSize": 256,
"EmailBatchingInterval": 30,
"EnablePreviewModeBanner": false,
"SkipServerCertificateVerification": true,
"EmailNotificationContentsType": "full",
"LoginButtonColor": "#0000",
"LoginButtonBorderColor": "#2389D7",
"LoginButtonTextColor": "#2389D7"
},
按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
第 10 步 - 访问和配置 GitLab Web
访问 GitLab
在浏览器中打开 URL https://gitlab.example.com
,您将看到以下登录屏幕。
输入 root
作为您在上一步中登录到 GitLab 仪表板时获得的用户名和密码。登录后,您将进入以下仪表板屏幕。
如您所见,GitLab 已经创建了一个项目来监控实例。
关闭 GitLab 进行维护
如果您想在执行服务器任务时对 GitLab 实例进行维护,请使用以下命令。
$ sudo gitlab-ctl deploy-page up
cp /opt/gitlab/embedded/service/gitlab-rails/public/deploy.html /opt/gitlab/embedded/service/gitlab-rails/public/index.html
当用户访问 GitLab 网站时,他将看到部署进行中
页面。
要删除该页面,请运行以下命令。
$ sudo gitlab-ctl deploy-page down
如果要将项目设为只读,请运行以下命令打开 Rails 控制台。
$ sudo gitlab-rails console
看起来像下面这样。
--------------------------------------------------------------------------------
Ruby: ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux]
GitLab: 16.9.2-ee (0d71d32d321) EE
GitLab Shell: 14.33.0
PostgreSQL: 14.10
------------------------------------------------------------[ booted in 78.60s ]
Loading production environment (Rails 7.0.8)
irb(main):001:0>
使用以下命令将所有项目设置为只读。
Project.all.find_each { |project| project.update!(repository_read_only: true) }
输入 exit
退出控制台。要将项目恢复到正常状态,请在控制台中使用以下命令。
Project.all.find_each { |project| project.update!(repository_read_only: false) }
限制公开注册
默认情况下,任何人都可以创建帐户并获得访问权限。如果您不想要它,您可以将其关闭。幸运的是,它的设置以仪表板上弹出屏幕的形式显示。单击关闭按钮以限制 GitLab 实例上的公共注册。这样做会将您重定向到以下设置页面。
取消选中已启用注册选项来限制它们。按保存更改按钮应用设置。
如果您在仪表板中没有看到弹出窗口,可以通过单击左下角菜单中的管理区域按钮访问设置页面。
进入管理面板后,将鼠标悬停在左侧边栏中的设置选项上,然后单击常规子菜单。从那里您可以访问注册限制面板。
配置 GitLab 配置文件
您的默认配置文件非常平淡,没有任何可显示的内容。要更改此设置,请单击左上角的用户图标以显示下拉菜单,然后选择编辑个人资料选项。
您将进入个人资料设置页面,您可以在其中添加您的姓名、电子邮件和有关您自己的其他信息。完成后点击更新个人资料设置。不要返回主页,因为我们还有更多东西需要配置。
更改根密码
这是最重要的步骤之一。您应该立即更改默认 root 密码。在早期版本中,GitLab 要求您在安装过程中对其进行更改,但现在它已成为可选的。要更改密码,请单击左侧边栏中的密码菜单。
输入您的密码详细信息,然后点击保存密码进行更改。您将从实例中注销,并且必须重新登录。
更改用户名并启用双因素身份验证
您可以将默认的 GitLab 用户名从 root
更改为您选择的任何名称。为此,请点击左侧边栏中的帐户菜单。
进入页面后,输入您的新用户名,然后单击更新用户名按钮进行更改。系统将再次提示您进行确认。再次按更新用户名按钮以确认更改。
您还应该在此处启用双因素身份验证以提高您的帐户安全性。
禁用 Prometheus Metrics 并改善隐私
在上一步中,我们讨论了增加 Droplet 的共享内存大小并将其保持在至少 256 MB。主要需要将Prometheus指标相关的数据存储在磁盘上。如果您不使用该功能,则应禁用该功能。您只能在安装后执行此操作。要禁用它,请从菜单栏打开管理面板。
进入管理面板后,打开设置>>指标和分析菜单选项。
在“指标”页面上,展开指标 - Prometheus 部分,然后取消选中启用运行状况和性能指标端点选项。单击保存更改按钮以实施更改。
GitLab 还收集每次安装的使用信息。如果您重视隐私并且不希望这种情况发生,请展开同一页面上的使用情况统计选项,然后取消选中启用服务 Ping 选项。单击保存更改按钮以实施更改。
配置 Mattermost
打开 URL https://mattermost.example.com
,您将进入以下登录页面。
单击 GitLab 按钮进行注册。这会将您的 Mattermost 帐户与您的 GitLab 帐户集成。您将进入 GitLab 登录页面,在其中输入凭据并单击登录按钮继续。您将被带到如下所示的授权页面。
单击授权按钮继续。您将返回到 Mattermost 应用程序,该应用程序要求您提供组织的名称。
输入您的组织名称,然后单击继续页面。接下来,系统会询问您在工作中使用哪些工具。
单击 GitLab 图标,然后单击继续按钮继续。您以后随时可以添加其他工具。接下来,系统会要求您邀请您的团队成员,并会收到一个邀请链接。
保存链接供以后使用,然后单击完成设置以完成 Mattermost 安装。您将被带到 Mattermost 仪表板,您可以从那里开始使用它。
GitLab 仅被授权用于登录 Mattermost 实例。 Mattermost 实例预装了一个 GitLab 插件,可以将提交和通知从您的存储库发送到您的 Mattermost 实例。我们也需要对其进行配置。
访问 GitLab >> 编辑个人资料 页面,然后从左侧边栏中选择应用程序 菜单。您应该看到现有的 Mattermost 登录应用程序已注册。
单击添加新应用程序按钮为 GitLab 插件创建另一个应用程序。
为项目命名。将 https://mattermost.example.com/plugins/com.github.manland.mattermost-plugin-gitlab/oauth/complete
设置为重定向 URI。检查机密、api 和read_user 选项。单击页面底部的保存申请按钮即可完成。
您将被带到以下页面。复制并保存您稍后需要的应用程序 ID 和应用程序密钥。 应用程序密钥只会显示一次,因此请确保这一点。
单击继续按钮完成。
打开您的 Mattermost 网站并单击最左上角的按钮以显示以下弹出菜单。
单击应用程序市场按钮打开以下弹出窗口。
单击 GitLab 插件旁边的配置按钮继续。
输入之前生成的 GitLab URL、OAuth 客户端 ID 和 OAuth 客户端密钥,然后单击保存按钮完成。
现在每个用户都需要在 Mattermost 中连接他们的 GitLab 帐户。访问 Mattermost 上的 GitLab 频道,输入以下命令启动 /gitlab connect
并按 Enter 键,您将收到以下消息。
单击链接按钮,您将进入一个新页面,要求授权连接。单击连接,您将返回到 Mattermost 页面,并且您应该看到以下确认连接的消息。
第 11 步 - 创建您的第一个项目
让我们尝试创建我们的第一个项目并推送提交。
添加您的 SSH 密钥
在继续之前,我们应该添加 SSH 密钥。这使我们能够在不使用任何密码的情况下与我们的安装进行交互。如果您有 SSH 密钥,则可以跳过以下命令。如果您没有,可以使用以下命令创建一个。
$ ssh-keygen -t ed25519 -C "gitlab.example.com"
此命令对于 macOS、Linux 和 Windows 上的 Git Bash/WSL 很常见。接受默认值并输入强密码。我们正在 Windows Powershell 终端上创建 SSH 密钥。
Generating public/private rsa key pair.
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\<username>/.ssh/id_ed25519):
Enter same passphrase again:
Your identification has been saved in C:\Users\<username>/.ssh/id_ed25519.
Your public key has been saved in C:\Users\<username>/.ssh/id_ed25519.pub.
SHA256:CI3Ja1LSTN+j4LQnDYkAoP+DvZB8SWrD26zDyUBRbUY gitlab.example.com
+--[ED25519 256]--+
|* ..+E |
|. + / o o |
| o = B o . |
|. o B = S |
|.o X + |
| +X.* |
| .=B o |
+----[SHA256]-----+
将私钥身份添加到 SSH 身份验证代理。如果您使用的是 Windows,请确保 OpenSSH 身份验证代理 服务正在运行。如果您使用的是 Linux 或 macOS,请运行以下命令。
$ eval $(ssh-agent -s)
添加密钥。
$ ssh-add C:\Users\<username>/.ssh/id_ed25519
在 Linux 和 macOS 上,命令将更改为
$ ssh-add ~/.ssh/id_ed25519
系统将提示您输入密码。输入它,密钥将被添加。
接下来,我们需要将这些设置保存到 ~/.ssh/config
文件中。在 Windows 上,这将是 C:\Users\
目录。将以下代码粘贴到文件末尾。
Host gitlab.example.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_ed25519
在此文件中,路径名在所有操作系统中都保持相同。保存文件。
接下来,我们需要将公钥复制到我们的 GitLab 帐户。您可以通过以下命令显示您的公钥。路径名将再次在所有操作系统上有效。
$ cat ~/.ssh/id_ed25519.pub
您将得到类似的输出。
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGCEIN84O/9tcvE5wsTswY76xeJyY7TwkMW6uCvYulm1 gitlab.example.com
在 GitLab 中打开您的配置文件设置,然后从左侧边栏中选择 SSH 密钥 菜单。
将 SSH 密钥粘贴到提供的框中,然后单击添加密钥继续。您将获得一个默认的到期日期。您可以根据您的需要更改它。
接下来,我们需要测试 SSH 连接是否成功。在 PC 终端上运行以下命令。
$ ssh -T [email
您将得到类似的输出。首先,系统会要求您将 SSH 密钥添加到系统的已知主机列表中。输入yes继续。接下来,您将收到一条成功消息,确认您已连接到 GitLab 实例。
The authenticity of host 'gitlab.example.com (178.62.213.105)' can't be established.
ECDSA key fingerprint is SHA256:x1647s5G1iL/cnRFoBuE6qzRZF775fVLZzcLJTGaIvQ.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitlab.example.com,178.62.213.105' (ECDSA) to the list of known hosts.
Welcome to GitLab, @navjot!
现在,我们可以继续创建我们的第一个存储库并进行一些提交。
创建项目
GitLab 中的每个存储库都属于一个项目。项目包括存储库、问题跟踪器、合并请求、wiki、持续集成、持续交付 (CI/CD) 管道以及许多其他功能。
要创建您的第一个存储库,请单击主页上的创建项目部分。
您将进入“新建项目”页面,其中将提供有关如何创建新项目的多个选项。
选择创建空白项目选项继续。在下一页上,输入项目名称。从选择组或命名空间框中的项目 URL选项的下拉菜单中选择您的用户名。如果您想更改默认项目,请设置您的项目别名。根据您的需要更改项目的可见性级别。您可以使用 README 文件初始化您的存储库。如果您希望 GitLab 分析代码中的安全漏洞,请选中启用 SAST 选项。
完成后,单击创建项目即可完成。您将被带到只有一个空白 README.md 文件的存储库页面。
现在我们的存储库已上线,让我们尝试从命令行添加更改日志。在您的计算机上输入以下命令以创建 CHANGELOG
文件并将其推送回您的存储库。确保您的计算机上安装了 Git。
第一步是克隆存储库。您可以使用 SSH 或 HTTPS 进行克隆。使用 SSH 克隆。系统会要求您输入密码。
$ git clone [email :user/howtoforge-test.git
您应该看到类似的输出。
Cloning into 'howtoforge-test'...
Enter passphrase for key '/c/Users/navjo/.ssh/id_ed25519':
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
输入其余命令以创建并推送 CHANGELOG
文件。
$ cd howtoforge-test
$ touch CHANGELOG # Or create the file in your editor and enter a project description
$ git add CHANGELOG
$ git commit -m "add Changelog"
[main d6c7a9c] add Changelog
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 CHANGELOG
$ git push -u origin main
Enter passphrase for key '/c/Users/navjo/.ssh/id_ed25519':
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 958 bytes | 958.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To gitlab.example.com:navjot/howtoforge-test.git
523db9a..d6c7a9c main -> main
branch 'main' set up to track 'origin/main'.
在推送命令期间,系统将再次提示您输入密码。
返回到您的 GitLab 项目页面,您将在其中看到 CHANGELOG
文件。恭喜!您已成功创建第一个项目并向其提交文件。
我们的第一个 GitLab 项目就到此结束了。
第 12 步 - 备份 GitLab
GitLab 提供了一个命令行界面来备份整个实例,包括数据库、附件、存储库数据、CI/CD 作业工件、CI/CD 作业输出日志、LFS 对象、Terraform 状态、容器注册表映像、GitLab 页面内容、包、片段、组 wiki、合并请求差异和项目级安全文件。
备份不包括 Mattermost 数据、Redis 数据、Sidekiq 作业和对象存储。
运行以下命令来执行备份。
$ sudo gitlab-backup create STRATEGY=copy
STRATEGY=copy
选项是为了防止数据快速变化时出现错误。这会将数据复制到临时位置并避免可能的错误。
您应该看到类似的输出。
2024-03-07 11:48:37 UTC -- Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
2024-03-07 11:48:45 UTC -- Dumping database ... done
2024-03-07 11:48:45 UTC -- Dumping repositories ...
{"command":"create","gl_project_path":"navjot/howtoforge-test","level":"info","msg":"started create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git","storage_name":"default","time":"2024-03-07T11:48:45.720Z"}
{"command":"create","gl_project_path":"navjot/howtoforge-test","level":"info","msg":"completed create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git","storage_name":"default","time":"2024-03-07T11:48:45.772Z"}
{"command":"create","gl_project_path":"navjot/howtoforge-test.wiki","level":"info","msg":"started create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git","storage_name":"default","time":"2024-03-07T11:48:45.874Z"}
{"command":"create","gl_project_path":"navjot/howtoforge-test.wiki","level":"info","msg":"completed create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git","storage_name":"default","time":"2024-03-07T11:48:45.894Z"}
2024-03-07 11:48:45 UTC -- Dumping repositories ... done
2024-03-07 11:48:45 UTC -- Dumping uploads ...
2024-03-07 11:48:46 UTC -- Dumping uploads ... done
2024-03-07 11:48:46 UTC -- Dumping builds ...
2024-03-07 11:48:46 UTC -- Dumping builds ... done
2024-03-07 11:48:46 UTC -- Dumping artifacts ...
2024-03-07 11:48:46 UTC -- Dumping artifacts ... done
2024-03-07 11:48:46 UTC -- Dumping pages ...
2024-03-07 11:48:46 UTC -- Dumping pages ... done
2024-03-07 11:48:46 UTC -- Dumping lfs objects ...
2024-03-07 11:48:46 UTC -- Dumping lfs objects ... done
2024-03-07 11:48:46 UTC -- Dumping terraform states ...
2024-03-07 11:48:46 UTC -- Dumping terraform states ... done
2024-03-07 11:48:46 UTC -- Dumping container registry images ...
2024-03-07 11:48:46 UTC -- Dumping container registry images ... done
2024-03-07 11:48:46 UTC -- Dumping packages ...
2024-03-07 11:48:46 UTC -- Dumping packages ... done
2024-03-07 11:48:46 UTC -- Dumping ci secure files ...
2024-03-07 11:48:46 UTC -- Dumping ci secure files ... done
2024-03-07 11:48:46 UTC -- Creating backup archive: 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar ...
2024-03-07 11:48:46 UTC -- Creating backup archive: 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar ... done
2024-03-07 11:48:46 UTC -- Uploading backup archive to remote storage ... [SKIPPED]
2024-03-07 11:48:46 UTC -- Deleting old backups ... [SKIPPED]
2024-03-07 11:48:46 UTC -- Deleting tar staging files ...
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/backup_information.yml
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/db
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/repositories
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/uploads.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/builds.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/artifacts.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/pages.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/lfs.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/terraform_state.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/registry.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/packages.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/ci_secure_files.tar.gz
2024-03-07 11:48:46 UTC -- Deleting tar staging files ... done
2024-03-07 11:48:46 UTC -- Deleting backups/tmp ...
2024-03-07 11:48:46 UTC -- Deleting backups/tmp ... done
2024-03-07 11:48:46 UTC -- Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.
2024-03-07 11:48:46 UTC -- Backup 1709812117_2024_03_07_16.9.1-ee is done.
2024-03-07 11:48:46 UTC -- Deleting backup and restore PID file ... done
您的备份文件存储在 /var/opt/gitlab/backups
目录中。
$ sudo ls /var/opt/gitlab/backups
1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar
如输出中所述,您的 GitLab 配置和机密不包含在备份中。手动将这些文件复制到安全位置以进行恢复。
复制它们。
$ sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json /var/opt/gitlab/backups
您可以配置 cron 来进行每日备份。
打开 root
用户的 crontab。
$ sudo su -
$ EDITOR = nano crontab -e
将以下行添加到其中。
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
CRON=1
选项用于在没有错误的情况下隐藏所有输出。这有助于限制 cron 垃圾邮件。但是,如果您正在调试,请将 CRON=1
替换为 --trace
以详细记录。
您可以查看官方 GitLab 备份文档以获取更多选项以及如何确保您的备份自动复制到 S3 兼容服务。
第 13 步 - 恢复 GitLab
在恢复 GitLab 之前,请确保满足以下要求。
GitLab 版本和版本应与从中进行备份的版本相匹配。
您已运行命令 sudo gitlab-ctl reconfigure
至少一次。
GitLab 应该正在运行。
必须恢复 GitLab 机密和设置。
$ sudo cp gitlab.rb gitlab-secrets.json /etc/gitlab
将备份文件复制到 /var/opt/gitlab/backups
目录。
$ sudo cp 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar /var/opt/gitlab/backups/
设置正确的权限。
$ sudo chown git:git /var/opt/gitlab/backups/1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar
停止连接到数据库的进程。您可以让 GitLab 的其余部分照常运行。
$ sudo gitlab-ctl stop puma
$ sudo gitlab-ctl stop sidekiq
验证流程。
$ sudo gitlab-ctl status
run: alertmanager: (pid 68055) 76797s; run: log: (pid 66127) 78476s
run: crond: (pid 68045) 76798s; run: log: (pid 65624) 78566s
run: gitaly: (pid 66424) 78414s; run: log: (pid 65273) 78710s
run: gitlab-exporter: (pid 66466) 78411s; run: log: (pid 66002) 78497s
run: gitlab-kas: (pid 65535) 78691s; run: log: (pid 65547) 78690s
run: gitlab-pages: (pid 68003) 76801s; run: log: (pid 67700) 76996s
run: gitlab-workhorse: (pid 66392) 78415s; run: log: (pid 65727) 78550s
run: logrotate: (pid 106163) 3124s; run: log: (pid 65169) 78724s
run: mattermost: (pid 68027) 76799s; run: log: (pid 67820) 76890s
run: nginx: (pid 72647) 75588s; run: log: (pid 65781) 78544s
run: node-exporter: (pid 66458) 78411s; run: log: (pid 65968) 78505s
run: postgres-exporter: (pid 66505) 78407s; run: log: (pid 66162) 78470s
run: postgresql: (pid 65341) 78702s; run: log: (pid 65362) 78699s
run: prometheus: (pid 66476) 78410s; run: log: (pid 66070) 78483s
down: puma: 14s, normally up; run: log: (pid 65649) 78562s
run: redis: (pid 65207) 78719s; run: log: (pid 65216) 78718s
run: redis-exporter: (pid 66468) 78410s; run: log: (pid 66034) 78490s
run: registry: (pid 66414) 78414s; run: log: (pid 65864) 78528s
down: sidekiq: 5s, normally up; run: log: (pid 65681) 78554s
恢复备份。确保您正在执行的操作,因为它会覆盖您的数据库。您不需要在命令中给出完整的文件名。只是文件名 -ee_gitlab_backup.tar
之前的部分。
$ sudo gitlab-backup restore BACKUP=1709812117_2024_03_07_16.9.1-ee
这应该会成功恢复您的 GitLab 安装。
第 14 步 - 升级 GitLab
在升级 GitLab 之前创建备份。升级 GitLab 就像运行 sudo dnf update 命令一样简单。
$ sudo dnf update
通过这种方式执行较小的升级是安全的。
DigitalOcean Agent 40 kB/s | 3.3 kB 00:00
DigitalOcean Droplet Agent 44 kB/s | 3.3 kB 00:00
gitlab_gitlab-ee 1.4 kB/s | 1.0 kB 00:00
gitlab_gitlab-ee-source 1.2 kB/s | 951 B 00:00
Dependencies resolved.
========================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================
Upgrading:
gitlab-ee x86_64 16.9.2-ee.0.el9 gitlab_gitlab-ee 1.1 G
Transaction Summary
========================================================================================================================
Upgrade 1 Package
Total download size: 1.1 G
Is this ok [y/N]: y
输入 y
并按 Enter
开始升级。对于主要版本,您应该在执行升级之前检查任何重大更改。
执行升级时,该站点将变得不可用,或者您将在浏览器中收到正在部署
消息。
完成升级后,请执行以下升级后检查以确保一切正常工作。
检查常规配置。
$ sudo gitlab-rake gitlab:check
确认加密的数据库值可以解密。
$ sudo gitlab-rake gitlab:doctor:secrets
检查用户是否可以登录、项目列表是否可见、项目问题和合并请求是否可访问、用户是否可以克隆存储库以及他们可以在 GitLab UI 中将提交推送到 GitLab。
对于 GitLab CI/CD,检查运行程序是否可以获取作业并且 Docker 注册表是否正常工作。
结论
我们的教程到此结束,您学习了如何在 Rocky Linux 9 服务器上安装和配置 GitLab。您还创建了第一个项目并从 PC 向其中提交了一个文件。如果您有任何疑问,请在下面的评论中发表。