如何在 Debian 12 或 11 上安装 GitLab

GitLab 是一个全面的 DevOps 平台,提供广泛的版本控制、持续集成、部署和项目管理功能。它将 DevOps 生命周期的各个阶段集成到一个应用程序中,使团队能够高效协作。GitLab 社区版 (CE) 是 GitLab 的开源版本,提供强大的工具来管理存储库、跟踪问题和自动化 CI/CD 管道。

要在 Debian 12 或 11 上安装 GitLab CE,您可以使用官方 GitLab Bash 脚本设置 GitLab CE APT 存储库,然后安装和配置该软件。本指南将引导您完成整个过程,确保您在 Debian 系统上拥有强大的 GitLab 设置。

在安装 Gitlab 之前更新 Debian

保持 Debian 操作系统的更新对于维护其稳定性和安全性至关重要。为确保 Debian 系统上所有现有软件包都是最新的,建议执行更新以提供最新的安全更新和错误修复,确保系统的稳定性和可靠性。

您可以通过运行以下命令轻松更新您的 Debian 操作系统:

sudo apt update && sudo apt upgrade 

安装 GitLab 所需的软件包

确保安装了 GitLab 的所有依赖项是安装过程中的关键步骤。这些依赖项是 GitLab 正常运行所依赖的必要组件。幸运的是,安装这些依赖项是一个简单的过程。

您可以通过打开终端并运行以下命令轻松安装它们:

sudo apt install curl ca-certificates apt-transport-https tzdata perl

导入 GitLab CE APT 存储库

默认情况下,GitLab 在 Debian 的默认存储库中不可用。这意味着您必须手动创建存储库才能安装 GitLab。但是,GitLab 提供了一个 APT 脚本来帮助完成此过程,使用户更轻松地安装平台。使用此脚本,您可以创建一个 GitLab 存储库,这将使您能够使用标准 APT 包管理器安装 GitLab。

要下载脚本,请在终端中输入以下命令:

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

执行此命令后,脚本将下载并将 GitLab 存储库添加到您的 Debian 系统。它还将更新软件包列表,使您能够使用标准 APT 软件包管理器安装 GitLab。

通过 APT 命令完成 GitLab 安装

下一步是安装 GitLab。请记住,脚本已经使用“apt update”命令同步新创建和修改的存储库。完成后,您现在可以通过运行以下命令继续执行安装命令:

sudo apt install gitlab-ce

此命令将安装 GitLab 社区版 (CE),即 GitLab 的免费开源版本。安装过程可能需要一些时间,具体取决于您的互联网速度和系统规格。

如果 GitLab 在 Debian 上安装成功,则示例输出:

配置 GitLab

要在 Debian 上配置 GitLab,必须仔细遵循几个步骤。本节将逐步描述该过程,包括配置主机名、设置防火墙和配置电子邮件设置。

配置主机名

要访问您的 GitLab 实例,配置 GitLab 服务器的主机名至关重要,因此请选择一个易于记忆和访问的名称。请按照以下步骤配置主机名:

使用文本编辑器打开 GitLab 配置文件:

sudo nano /etc/gitlab/gitlab.rb

找到 external_url 设置并将示例 URL 替换为您所需的主机名:

external_url 'https://gitlab.example.com'

保存文件并退出文本编辑器。

现在重新配置 GitLab 以应用更改:

sudo gitlab-ctl reconfigure

为 Gitlab 设置 UFW 防火墙

GitLab 默认使用端口 80 作为 HTTP 端口,使用端口 443 作为 HTTPS 端口。务必配置防火墙以允许这些端口上的流量,并确保 GitLab 实例可访问。

请按照以下步骤设置防火墙:

首先,安装 UFW 防火墙,因为 Debian 默认未安装该防火墙,请使用以下命令:

sudo apt install ufw

接下来,安装完成后,使用以下命令启用 UFW 防火墙:

sudo ufw enable

使用文本编辑器打开防火墙配置文件:

sudo nano /etc/ufw/applications.d/gitlab

将以下行复制并粘贴到文件中:

[GitLab]
title=GitLab
description=GitLab application
ports=80,443/tcp

保存文件并退出文本编辑器。

在防火墙中启用 GitLab 应用程序:

sudo ufw app update GitLab
sudo ufw allow GitLab

配置电子邮件设置

GitLab 使用电子邮件通知来告知用户有关项目活动,例如新问题、合并请求和评论。

请按照以下步骤配置电子邮件设置:

使用文本编辑器打开 GitLab 配置文件:

sudo nano /etc/gitlab/gitlab.rb

找到 gitlab_rails['smtp_enable'] 设置并将其设置为 true:

gitlab_rails['smtp_enable'] = true

将以下行添加到文件以配置您的电子邮件提供商(例如 Gmail)的 SMTP 服务器设置:

gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "example@gmail.com"
gitlab_rails['smtp_password'] = "your_password"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true

保存文件并退出文本编辑器。

重新配置 GitLab 以应用更改:

sudo gitlab-ctl reconfigure

值得注意的是,执行“gitlab-ctl reconfigure”命令后,您可能会发现终端输出以以下消息结束:

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.
Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours.

要查看 root(GitLab)密码,请在终端中执行以下命令:

sudo cat /etc/gitlab/initial_root_password

执行此命令将在终端中显示 root 密码。务必确保此密码安全,不要与未经授权的用户共享。

如果需要重置root密码,可以使用以下命令:

sudo gitlab-rake "gitlab:password:reset[root]"

执行此命令后,root 密码将重置为终端输出中显示的随机字符串。必须记住,重置 root 密码将使所有现有和个人访问令牌失效,因此用户必须在重置密码后创建新的访问令牌。

出于安全原因,建议您在初始设置后尽快将 root 密码更改为强且唯一的密码,并避免使用默认密码。您可以通过登录 GitLab Web 界面,转到“用户设置”>“帐户”,然后选择“更改密码”选项来更改 root 密码。

访问 GitLab 用户界面

后端配置完成后,就可以登录并访问 GitLab 了。为此,请在配置文件中打开分配给 GitLab 的域路径。

https://gitlab.example.com

接下来,使用用户名“root”和安装时收到的密码登录 GitLab。如上一节的密码打印输出中所述,指南的密码为图中的“4zB2mbBLCcRLRAkv3qHfmSZULJ/6ocJNe2XK8zNx9nU=”。

您已成功以 root 帐户登录并将到达默认登陆页面。

其他提示

以下是首次登录 GitLab 用户界面时有关安全、自定义或任何其他常规首次提示的一些建议:

  • 更改默认密码: 为了增强 GitLab 实例的安全性,更改 root 用户的默认密码至关重要。使用默认用户名和密码登录 GitLab,导航至“用户设置”>“密码”,然后输入新密码。
  • 设置双因素身份验证 (2FA): 在登录过程中添加身份验证因素(例如发送到手机或由应用程序生成的代码)是 2FA 提供的额外安全层。要在 GitLab 中启用 2FA,请导航至“用户设置”>“帐户”>“双因素身份验证”,然后按照说明进行操作。
  • 创建项目: 要在 GitLab 中创建新项目,请转到“项目”页面并单击“新建项目”按钮。您可以创建一个空项目或从 Git 存储库导入现有项目。
  • 自定义用户界面: GitLab 允许多种自定义选项,例如更改主题、添加自定义徽标和配置导航栏。导航至“管理区域”>“设置”,然后选择适当的选项来自定义用户界面。
  • 配置访问控制: GitLab 强大的访问控制功能可让您控制谁可以访问您的项目以及他们可以做什么。导航至“项目设置”>“成员”,添加或删除具有不同访问级别的成员以配置访问控制。
  • 使用 GitLab CI/CD: GitLab 强大的 CI/CD 功能可自动测试和部署代码。通过在项目的根目录中创建“.gitlab-ci.yml”文件并定义管道的阶段和作业来配置 CI/CD 管道。
  • 设置 GitLab Runner: GitLab Runner 是一个轻量级代理,可运行 CI/CD 作业并将结果发送回 GitLab。按照 GitLab 文档中的说明在 Debian 系统上安装和配置 GitLab Runner。
  • 备份你的 GitLab 实例: 定期备份您的 GitLab 实例,以防止在发生硬件故障或其他灾难时丢失数据。在终端中运行“gitlab-rake gitlab:backup:create”命令来备份您的 GitLab 实例。

为 GitLab 自动备份创建 Cronjob

在 Debian 上设置用于 GitLab 自动备份的 cronjob 对于确保数据安全至关重要。cronjob 是一种计划任务,它会以特定间隔自动运行以执行 GitLab 实例的备份。请按照以下步骤在 Debian 上创建用于 GitLab 自动备份的 cronjob。

创建 Gitlab 备份脚本

第一步是创建一个备份脚本来执行 GitLab 实例的备份。请按照以下步骤操作:

使用文本编辑器为您的备份脚本创建一个新文件。以下是示例:

sudo nano /usr/local/bin/gitlab-backup.sh

将以下代码粘贴到文件中:

#!/bin/bash

BACKUP_DIR=/var/opt/gitlab/backups
TIMESTAMP=$(date +%s)

sudo gitlab-rake gitlab:backup:create

sudo cp ${BACKUP_DIR}/$(ls -t ${BACKUP_DIR} | head -1) ${BACKUP_DIR}/gitlab_backup_${TIMESTAMP}.tar
  • 保存文件并退出文本编辑器。

此脚本将通过运行 gitlab-rake gitlab:backup:create 命令来生成 GitLab 实例的备份。创建备份后,它会将最新备份复制到文件名中带有时间戳的新文件中。

设置权限和所有权

后续步骤是建立备份脚本的适当权限和所有权,以确保 cronjob 可以执行它。请按照以下步骤操作:

将备份脚本的所有者设置为与 GitLab 关联的用户:

sudo chown git:git /usr/local/bin/gitlab-backup.sh

设置备份脚本的权限,使其可以执行:

sudo chmod +x /usr/local/bin/gitlab-backup.sh

创建一个 Cronjob

下一步是创建一个 cronjob 来安排备份脚本定期运行。请按照以下步骤操作:

要打开 GitLab 用户的 crontab 配置文件,请按照以下步骤操作:

sudo crontab -u git -e

要安排备份脚本每天凌晨 1:00 运行,请在 GitLab 用户的 crontab 配置文件中添加以下行:

0 1 * * * /path/to/backup/script.sh

保存文件并退出文本编辑器。

此 cronjob 将在每天凌晨 1:00 自动执行备份脚本,生成一个文件名带有时间戳的新备份文件。

测试 Cronjob

您可以通过手动执行备份脚本并确保备份文件生成无错误来验证 cronjob 功能是否正确。要执行此测试,请在终端中输入以下命令:

sudo /usr/local/bin/gitlab-backup.sh

此命令将在目录“/var/opt/gitlab/backups”中生成一个新的备份文件。文件名将包含一个时间戳,以指示备份的创建时间。

GitLab 终端命令

GitLab-ctl 是用于在 Debian 上管理 GitLab 的命令行工具。它提供了一组终端命令,用于启动、停止、重新启动和管理 GitLab 服务等。以下是有关 GitLab-ctl 终端命令的详细部分,以及示例命令和带有说明的输出。

启动和停止 GitLab 服务

要启动和停止 GitLab 服务,请使用以下命令:

启动所有 GitLab 服务:

sudo gitlab-ctl start

停止所有 GitLab 服务:

sudo gitlab-ctl stop

重新启动所有 GitLab 服务:

sudo gitlab-ctl restart

重新加载 GitLab 服务:

sudo gitlab-ctl reload

这些命令将启动、停止、重新启动或重新加载所有 GitLab 服务。输出将指示正在启动或停止哪些服务以及操作是否成功。

检查 GitLab 服务的状态

要检查 GitLab 服务的状态,请使用以下命令:

sudo gitlab-ctl status

这些命令将启动、停止、重新启动或重新加载所有 GitLab 服务。执行命令后,输出将显示哪些服务受到影响以及操作是否成功。

备份和恢复 GitLab 数据

您可以使用以下命令创建 GitLab 数据的备份:

创建 GitLab 数据的备份:

sudo gitlab-rake gitlab:backup:create

提供的命令将创建一个包含所有 GitLab 数据(例如存储库、用户数据和配置文件)的备份文件。备份文件将存储在目录中:“/var/opt/gitlab/backups”。

恢复 GitLab 数据的备份:

sudo gitlab-rake gitlab:backup:restore BACKUP=<backup_file>

使用此命令,您可以从特定的备份文件恢复 GitLab 数据的备份。备份文件必须位于“var/opt/gitlab/backups”目录中,或者您可以指示备份文件的完整路径。

检查 GitLab 配置

您可以使用以下命令检查GitLab的配置:

sudo gitlab-rake gitlab:check

此命令可以扫描 GitLab 配置中的错误或警告,包括过时的版本、缺少的依赖项和配置错误的设置。输出将汇总扫描结果和有关任何检测到的问题的详细信息。

检查 GitLab 日志

以下是使用以下命令检查 GitLab 日志的方法:

查看 GitLab 日志:

sudo gitlab-ctl tail gitlab-rails/production.log

您可以使用以下命令查看 GitLab 生产日志的最后十行,其中详细说明了用户操作、警告和错误。

查看 GitLab NGINX 日志:

sudo gitlab-ctl tail nginx/gitlab_access.log

此命令将显示 GitLab NGINX 访问日志的最后十行,其中包含有关 HTTP 请求和响应的详细信息。

查看 GitLab PostgreSQL 日志:

sudo gitlab-ctl tail postgresql/current

此命令将显示 GitLab PostgreSQL 日志的最后十行,其中包含有关数据库查询和事务的信息。

结论

使用官方安装脚本成功安装 GitLab CE 到您的 Debian 系统后,您可以充分利用其强大的 DevOps 功能。此方法可确保您拥有最新版本并轻松访问更新。定期维护和更新您的 GitLab 实例,以从最新功能和安全增强功能中受益。享受 GitLab CE 为您的开发项目提供的无缝集成和协作工具。

Joshua James
跟我来
Joshua James 的最新帖子 (查看全部)

发表评论