如何在 Rocky Linux 9 上安装 Gitlab如何在 Rocky Linux 9 上安装 Gitlab如何在 Rocky Linux 9 上安装 Gitlab如何在 Rocky Linux 9 上安装 Gitlab
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Rocky Linux 9 上安装 Gitlab

发表 admin at 2025年2月28日
类别
  • 未分类
标签

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\\.ssh 目录。将以下代码粘贴到文件末尾。

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 向其中提交了一个文件。如果您有任何疑问,请在下面的评论中发表。

©2015-2025 Norria support@norria.com