基于 Linux 搭建 GitLab 服务器教程 – wiki基地


手把手教你:基于 Linux 搭建 GitLab 服务器超详细教程 (约 3000字)

引言:为何选择自建 GitLab 服务器?

在当今软件开发和DevOps的浪潮中,版本控制系统的重要性不言而喻。Git 已经成为事实上的标准,而 GitLab 作为一个强大的 Git 仓库管理工具,集成了CI/CD、项目管理、代码审查等多种功能,为团队协作提供了全面的解决方案。

虽然有像 GitLab.com 这样的托管服务可供选择,但对于许多企业或个人而言,自建 GitLab 服务器具有独特的优势:

  1. 数据安全与隐私: 代码是企业的核心资产。将代码托管在自己的服务器上,可以最大程度地控制数据,满足合规性要求,避免潜在的数据泄露风险。
  2. 高度可定制性: 自建服务器可以根据团队需求进行灵活配置和优化,包括硬件资源、网络环境、集成其他内部系统等。
  3. 成本控制: 对于用户量较大或有特定需求的团队,自建服务器在长期来看可能比使用托管服务更具成本效益。
  4. 性能与控制力: 可以根据实际负载调整服务器资源,优化访问速度和稳定性,完全掌控服务器的运行状态。

本教程将详细介绍如何在 Linux 系统上搭建一个稳定、可用的 GitLab 服务器。我们将采用 GitLab 官方推荐的 Omnibus 包安装方式,这种方式包含了 GitLab 及其所有依赖项,安装过程相对简单方便。

前期准备:知己知彼,百战不殆

在开始安装之前,我们需要做好充分的准备工作,包括选择合适的 Linux 发行版、评估硬件需求、配置网络等。

1. 选择 Linux 发行版

GitLab 官方支持多种 Linux 发行版,其中最常用和推荐的是:

  • Ubuntu LTS (长期支持版): 如 Ubuntu 20.04 (Focal Fossa), 22.04 (Jammy Jellyfish)。这是 GitLab 测试最充分的平台之一。
  • Debian: 如 Debian 10 (Buster), 11 (Bullseye)。
  • CentOS Stream / RHEL / Rocky Linux / AlmaLinux: CentOS Stream 8/9, RHEL 8/9, Rocky Linux 8/9, AlmaLinux 8/9。CentOS Linux 7 仍然支持但生命周期将结束,新部署推荐使用其继任者。

本教程将以 Ubuntu LTS 和 CentOS Stream/RHEL/Rocky/AlmaLinux 为例,介绍对应的命令。请选择其中一个你熟悉或偏好的发行版。

2. 评估硬件需求

GitLab 对硬件资源的需求取决于你的用户数量、仓库大小、CI/CD 使用频率等。官方提供了一些最低和推荐配置,你可以此为基础进行评估:

  • CPU: 推荐 4 核或更多。对于少量用户和项目,2 核勉强可用,但性能可能会受限。
  • 内存 (RAM):
    • 建议 8GB 或更多用于支持 500 个用户。
    • 对于少量用户 (<100) 和轻量级使用,4GB 是最低要求,但可能会频繁使用交换空间,影响性能。
    • 开启 GitLab CI/CD runner 并运行大量作业会显著增加内存需求。
  • 硬盘空间:
    • 建议 50GB 可用空间用于基础安装和存储仓库数据。
    • 随着仓库数量、代码量、CI/CD 产物和备份的增加,所需的空间会快速增长。建议使用 SSD 硬盘以获得更好的性能。
  • 架构: 支持 x86_64 架构。

重要提示: 这些是基本建议。如果你的团队规模较大,或者计划重度使用 CI/CD、容器注册表等功能,强烈建议分配更多的 CPU、内存和磁盘资源。在生产环境中,资源不足是导致 GitLab 性能问题的主要原因之一。

3. 网络配置

  • 静态 IP 地址: 服务器应配置静态 IP 地址,避免重启后 IP 变化。
  • 域名解析 (DNS): 强烈建议为你的 GitLab 服务器设置一个域名或子域名(例如 gitlab.yourcompany.com),并将其解析到服务器的静态 IP 地址。这不仅方便用户访问,也是配置 HTTPS/SSL 的前提。
  • 端口开放: 确保防火墙允许外部访问以下端口:
    • HTTP: 80 (如果使用 HTTP 访问)
    • HTTPS: 443 (如果使用 HTTPS 访问,强烈推荐)
    • SSH: 22 (用于 Git 命令的 SSH 协议)

4. 操作系统准备

  • 拥有一个安装好所选 Linux 发行版的服务器或虚拟机。
  • 以 root 用户身份登录,或者拥有一个具有 sudo 权限的非 root 用户。教程中的命令将默认使用 sudo

步骤一:更新系统并安装依赖项

在安装任何新软件之前,总是建议先更新现有的系统软件包,以确保获取最新的安全补丁和软件版本。同时,GitLab Omnibus 包依赖于一些基础工具,需要提前安装。

1. 更新系统

  • 对于 Debian/Ubuntu 系统:

    bash
    sudo apt update
    sudo apt upgrade -y

  • 对于 CentOS Stream/RHEL/Rocky/AlmaLinux 系统:

    bash
    sudo yum update -y # 或者 sudo dnf update -y

update 命令用于更新软件包列表,upgrade 命令用于升级所有已安装的软件包。-y 选项表示对所有提示自动回答“是”。

2. 安装必要的依赖项

GitLab Omnibus 包需要 curl 来下载安装脚本,openssh-server 来处理 Git 的 SSH 连接,ca-certificates 用于 SSL 证书验证,postfix 用于发送邮件通知(如注册确认、密码重置等)。

  • 对于 Debian/Ubuntu 系统:

    bash
    sudo apt install -y curl openssh-server ca-certificates postfix

    在安装 postfix 过程中,你可能会看到一个配置界面。通常选择 “Internet Site” 并填写你的服务器域名作为 “System mail name” 即可。如果不需要 GitLab 发送邮件,也可以不安装 postfix,但会影响部分功能。

  • 对于 CentOS Stream/RHEL/Rocky/AlmaLinux 系统:

    “`bash
    sudo yum install -y curl openssh-server ca-certificates postfix

    或者 sudo dnf install -y curl openssh-server ca-certificates postfix

    sudo systemctl enable postfix
    sudo systemctl start postfix
    “`
    CentOS/RHEL 系列默认不启动 postfix,需要手动启用和启动服务。

3. 配置防火墙

为了保证服务器安全,你需要配置防火墙只允许必要的端口通过。这里以 ufw (Ubuntu) 和 firewalld (CentOS/RHEL) 为例。

  • 对于 Ubuntu 系统 (使用 ufw):

    bash
    sudo ufw allow OpenSSH # 允许 SSH (端口 22)
    sudo ufw allow http # 允许 HTTP (端口 80)
    sudo ufw allow https # 允许 HTTPS (端口 443)
    sudo ufw enable # 启用防火墙 (如果未启用)
    sudo ufw status # 查看防火墙状态

    启用 ufw 前请确保 SSH 端口已开放,否则可能导致无法连接服务器。

  • 对于 CentOS Stream/RHEL/Rocky/AlmaLinux 系统 (使用 firewalld):

    bash
    sudo systemctl enable firewalld --now # 启用并启动 firewalld (如果未启用)
    sudo firewall-cmd --permanent --add-service=ssh # 允许 SSH
    sudo firewall-cmd --permanent --add-service=http # 允许 HTTP
    sudo firewall-cmd --permanent --add-service=https # 允许 HTTPS
    sudo firewall-cmd --reload # 重新加载防火墙规则
    sudo firewall-cmd --list-all # 查看所有防火墙规则

请根据你实际使用的端口和服务调整防火墙规则。如果你的 SSH 使用非标准端口,请相应修改 ufw allowfirewall-cmd --add-port 命令。

步骤二:添加 GitLab 仓库并安装 Omnibus 包

GitLab 官方提供了一个安装脚本,可以自动检测你的操作系统,添加 GitLab 的软件包仓库,然后你就可以使用系统的包管理器来安装 GitLab 了。

1. 添加 GitLab 仓库

使用 curl 下载并执行官方提供的安装脚本:

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

或者使用下面的命令,选择 gitlab-ce (社区版) 或 gitlab-ee (企业版),并指定版本(可选)。通常,对于大多数团队,社区版 (CE) 功能已经足够强大且免费。

“`bash

添加社区版 (CE) 仓库

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

如果你需要企业版 (EE),则使用这个

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

“`
执行这个脚本会自动配置你的系统的包管理器(apt 或 yum/dnf),使其能够访问 GitLab 的软件包仓库。脚本执行成功后,你应该会看到相关的输出信息。

2. 安装 GitLab Omnibus 包

仓库添加完成后,你就可以使用包管理器安装 GitLab 了。根据你的发行版选择相应的命令。

  • 对于 Debian/Ubuntu 系统:

    bash
    sudo apt install gitlab-ce

  • 对于 CentOS Stream/RHEL/Rocky/AlmaLinux 系统:

    “`bash
    sudo yum install gitlab-ce

    或者 sudo dnf install gitlab-ce

    “`

安装过程可能需要一些时间,具体取决于你的网络速度和服务器性能,通常会下载数百兆的软件包并进行安装。请耐心等待安装完成。

步骤三:配置 GitLab

GitLab Omnibus 包安装完成后,你需要进行初步配置才能正常访问和使用。主要的配置都在一个配置文件中完成,然后通过一个命令来应用这些配置并启动服务。

1. 编辑 GitLab 配置文件

GitLab 的主要配置文件是 /etc/gitlab/gitlab.rb。你需要使用文本编辑器(如 nano, vim)来编辑它。

“`bash
sudo nano /etc/gitlab/gitlab.rb

或者 sudo vim /etc/gitlab/gitlab.rb

“`

找到并修改以下关键配置项:

  • external_url 这是最重要的配置项,用于指定用户通过浏览器访问 GitLab 的 URL。将其设置为你在前期准备中确定的域名或服务器 IP 地址(如果是临时使用且没有域名)。

    “`ruby
    external_url ‘http://gitlab.yourcompany.com’

    或者

    external_url ‘https://gitlab.yourcompany.com’ # 如果你打算使用 HTTPS

    或者

    external_url ‘http://your_server_ip’ # 如果没有域名

    “`
    强烈建议使用域名,并且在稍后配置 HTTPS。

  • 其他常用配置项 (可选,但推荐了解):

    • gitlab_rails['gitlab_email_from'] = '[email protected]':配置 GitLab 发送邮件的来源地址。
    • gitlab_rails['smtp_enable'] = true:启用 SMTP 发送邮件。
    • gitlab_rails['smtp_address'] = "smtp.exmail.qq.com":SMTP 服务器地址。
    • gitlab_rails['smtp_port'] = 465:SMTP 端口。
    • gitlab_rails['smtp_user_name'] = "[email protected]":SMTP 认证用户名。
    • gitlab_rails['smtp_password'] = "your_smtp_password":SMTP 认证密码。
    • gitlab_rails['smtp_authentication'] = "login":SMTP 认证方式。
    • gitlab_rails['smtp_enable_starttls'] = true:启用 STARTTLS。
    • gitlab_rails['smtp_tls'] = true:启用 TLS/SSL。
    • gitlab_rails['gitlab_email_reply_to'] = '[email protected]':回复邮件地址。

    请根据你的邮件服务提供商的设置修改 SMTP 配置。确保填写正确的用户名、密码、地址和端口。如果暂时不配置邮件,GitLab 也能工作,但无法发送通知邮件。

修改完成后,保存并关闭文件。在 nano 中是 Ctrl+X,然后按 Y,再按回车。在 vim 中是按 Esc,输入 :wq,然后按回车。

2. 应用配置并启动 GitLab

配置文件修改完成后,需要运行 GitLab 的重新配置命令,这个命令会根据 /etc/gitlab/gitlab.rb 中的设置来配置并启动 GitLab 包含的所有组件(Nginx, PostgreSQL, Redis, Sidekiq, Unicorn 等)。

bash
sudo gitlab-ctl reconfigure

这个命令会执行一系列复杂的任务,包括检查配置、生成各种服务的配置文件、创建数据库、迁移数据(如果是升级)、以及启动所有 GitLab 相关的服务。这个过程会输出大量的日志信息,并且会花费一些时间(通常 5-15 分钟,取决于服务器性能)。

如果命令执行过程中没有报错信息,最后看到 Chef Client finished, ... 类似的字样,说明配置成功并服务已启动。

3. 检查 GitLab 服务状态

配置完成后,可以使用以下命令检查 GitLab 各个组件的运行状态:

bash
sudo gitlab-ctl status

如果一切正常,你应该看到所有关键服务(如 nginx, postgresql, redis, unicorn, sidekiq 等)都显示为 runready 状态。

步骤四:访问 GitLab 并进行初始设置

服务启动后,你就可以通过浏览器访问 GitLab 的 Web 界面了。

  1. 打开浏览器,访问你在 external_url 中配置的地址(例如 http://gitlab.yourcompany.comhttp://your_server_ip)。
  2. 第一次访问时,GitLab 会提示你为 root 用户设置一个初始密码。root 用户是 GitLab 的超级管理员账户,拥有最高权限。
  3. 设置好密码后,系统会将你重定向到登录页面。使用用户名 root 和你刚刚设置的密码登录。

恭喜你!你已经成功搭建并登录到了你的自建 GitLab 服务器。

步骤五:进阶配置 (HTTPS/SSL)

出于安全考虑,强烈建议为你的 GitLab 服务器配置 HTTPS,尤其是在生产环境中。HTTPS 可以加密用户与服务器之间的通信,保护敏感数据(如登录凭据、代码)不被窃取。

GitLab Omnibus 包内置了 Nginx,并且支持使用 Let’s Encrypt 免费证书服务,配置过程非常便捷。

1. 确保 external_url 使用 HTTPS

编辑 /etc/gitlab/gitlab.rb 文件,将 external_url 修改为使用 https 协议:

“`ruby
external_url ‘https://gitlab.yourcompany.com’

确保这里是你用于访问 GitLab 的域名

“`
如果你之前使用了 IP 地址,现在必须换成域名才能申请 Let’s Encrypt 证书。

2. 配置 Let’s Encrypt

/etc/gitlab/gitlab.rb 文件中找到 Let’s Encrypt 相关的配置段,并进行修改:

“`ruby

Let’s Encrypt settings

le[‘enable’] = false # 默认是 false

le[‘enable’] = true # 启用 Let’s Encrypt 自动获取证书

le[‘http01_host’] = ‘gitlab.yourcompany.com’ # 如果你的 external_url 不是 Let’s Encrypt 将要验证的域名,才需要设置这个

默认情况下,Let’s Encrypt 会使用 external_url 中的域名进行验证,所以通常不需要设置 http01_host

le[‘http01_port’] = 80 # 如果 HTTP 验证需要使用非标准端口,才需要设置

le[‘tls’] = false # 如果 Let’s Encrypt 需要通过非 HTTPS 端口进行 TLS 验证,才需要设置

le[’email’] = ‘[email protected]’ # Let’s Encrypt 注册邮箱,用于接收通知,建议设置

le[’email’] = ‘[email protected]

le[‘staging’] = false # 设置为 true 可以使用 Let’s Encrypt 的测试环境,用于测试配置,避免频繁请求正式证书被限速

le[‘staging’] = false # 正式环境请设置为 false

le[‘auto_renew’] = true # 是否自动续期,默认 true

le[‘auto_renew_hour’] = 1 # 自动续期的小时 (0-23)

le[‘auto_renew_minute’] = 30 # 自动续期的分钟 (0-59)

le[‘auto_renew_day_of_month’] = “/15″ # 自动续期的日期 (1-31, /N 表示每N天)

如果你的服务器位于 NAT 后面,Let’s Encrypt 可能无法通过公共网络访问你的服务器进行验证。

此时可以考虑使用 DNS 验证方式。这需要额外的配置,并且取决于你的 DNS 提供商是否支持 API 访问。

le[‘private_key’] = nil

le[‘certificate’] = nil

le[‘chain’] = nil

le[‘fullchain’] = nil

“`

重要:
* 将 le['enable'] 设置为 true
* 将 le['email'] 设置为你有效的邮箱地址,用于接收 Let’s Encrypt 的重要通知(如证书即将过期)。
* 确保你的服务器的 80 端口可以通过公共网络访问,因为 Let’s Encrypt 的 HTTP-01 验证方式需要通过 80 端口访问你的域名来验证所有权。
* 确保你的域名已经正确解析到你的服务器的公共 IP 地址。

3. 重新配置 GitLab

保存并关闭 /etc/gitlab/gitlab.rb 文件后,再次运行重新配置命令:

bash
sudo gitlab-ctl reconfigure

这次 reconfigure 命令会检测到 Let’s Encrypt 的配置,并尝试向 Let’s Encrypt 申请证书。如果一切顺利(域名解析正确,80 端口可访问),它会自动获取证书并配置 Nginx 使用 HTTPS。

重新配置完成后,再次访问你的 GitLab 地址,这次应该会自动跳转到 HTTPS,并在浏览器地址栏看到安全的锁标志。

如果申请证书失败,请仔细检查 /etc/gitlab/gitlab.rb 中的 external_url 和 Let’s Encrypt 配置,检查域名解析和防火墙(80 端口是否开放),并查看 gitlab-ctl reconfigure 命令的输出日志寻找错误信息。

步骤六:备份策略 (至关重要!)

数据备份是服务器运维中最关键的一环。如果不定期备份,一旦发生硬件故障、数据损坏或误操作,将面临数据丢失的巨大风险。GitLab Omnibus 包提供了简单易用的备份工具。

1. 创建手动备份

使用以下命令可以创建 GitLab 的完整备份:

bash
sudo gitlab-backup create STRATEGY=copy

STRATEGY=copy 是推荐的方式,它会复制数据文件,创建备份锁。

备份文件默认存储在 /var/opt/gitlab/backups/ 目录下。文件名为 [timestamp]_gitlab_backup.tar

2. 配置自动备份

通过 Cron 定时任务可以实现自动备份。

编辑 Cron 任务列表:

bash
sudo crontab -e

在文件末尾添加一行,例如,每天凌晨 2:00 执行备份:

crontab
0 2 * * * sudo gitlab-backup create STRATEGY=copy CRON=1

CRON=1 参数是可选的,用于在备份文件名中包含一个指示,表明这是由 Cron 执行的备份。

重要:
* 备份文件存储在 /var/opt/gitlab/backups/ 目录下,这个目录默认位于 GitLab 服务器的本地磁盘上。为了防止单点故障(服务器硬盘损坏)导致备份和数据同时丢失,强烈建议将备份文件定期(最好是每天备份后立即)同步到另一个存储介质或远程位置(如 NFS 共享、S3 兼容存储、另一个服务器等)。
* 考虑备份文件的保留策略,避免备份文件占用过多磁盘空间。GitLab 可以在 /etc/gitlab/gitlab.rb 中配置备份文件的保留时间:

```ruby
gitlab_backup['auto_delete'] = true # 启用自动删除旧备份
gitlab_backup['expire_in'] = '7 days' # 保留最近 7 天的备份
```
修改后需要 `sudo gitlab-ctl reconfigure` 应用配置。

3. 恢复备份 (了解即可)

在需要恢复备份时,你需要停止 GitLab 的相关服务,然后使用 gitlab-backup restore 命令。这是一个相对复杂且风险较高的操作,建议在测试环境中充分演练恢复流程,并查阅 GitLab 官方文档获取详细步骤。

“`bash

假设你要恢复的备份文件是 1678886400_gitlab_backup.tar

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

停止内置的 Puma 和 Sidekiq 服务 (较新版本)

sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq

对于单节点安装,你可能还需要停止其他服务,除了 PostgreSQL

sudo gitlab-ctl status # 查看服务状态

停止除 postgresql 外的所有服务

sudo gitlab-ctl stop

执行恢复

sudo gitlab-backup restore BACKUP=1678886400_gitlab_backup

这里的 1678886400 是备份文件名中 _ 之前的时间戳部分

恢复完成后,进行一次检查

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true –trace
“`
注意: 在生产环境进行恢复操作前,务必仔细阅读官方文档并做好充分准备。

步骤七:基本使用和管理

登录到 GitLab Web 界面后,你可以开始进行用户管理、创建项目等操作。

1. 用户管理

  • 作为 root 用户登录。
  • 在左侧导航栏选择 “Admin Area” (管理区域)。
  • 选择 “Overview” -> “Users”。
  • 你可以创建新用户、编辑现有用户、阻止或删除用户。
  • 创建新用户时,可以为其分配角色(普通用户、管理员等)。

2. 创建项目

  • 点击页面顶部的 “+” 图标。
  • 选择 “New project/repository”。
  • 填写项目名称、描述。
  • 选择项目的可见性级别(私有、内部、公开)。
  • 你可以导入现有项目,或者创建一个新的空白项目。
  • 创建项目后,GitLab 会提供通过 SSH 或 HTTPS 克隆仓库的地址。

3. 使用 Git 克隆和推送

用户可以在本地使用 Git 命令与 GitLab 服务器交互:

  • 克隆仓库:
    bash
    git clone [email protected]:your_username/your_project.git # 使用 SSH
    # 或者
    git clone https://gitlab.yourcompany.com/your_username/your_project.git # 使用 HTTPS

    使用 SSH 方式需要将用户的 SSH 公钥添加到 GitLab 用户的设置中。使用 HTTPS 方式需要输入 GitLab 用户的用户名和密码。

  • 添加远程仓库 (如果是现有本地仓库):
    bash
    git remote add origin [email protected]:your_username/your_project.git

  • 推送更改:
    bash
    git add .
    git commit -m "Your commit message"
    git push -u origin master # 或者 main 分支

4. 探索更多功能

登录后,花时间探索 GitLab 的其他强大功能:

  • Issues (议题): 进行任务跟踪和 bug 管理。
  • Merge Requests (合并请求): 进行代码审查和合并分支。
  • CI/CD (持续集成/持续部署): 设置自动化构建、测试和部署流程 (.gitlab-ci.yml 文件)。
  • Wiki: 编写项目文档。
  • Snippets: 分享代码片段。
  • Container Registry: 托管 Docker 镜像。
  • Group (群组): 组织项目和用户,进行更精细的权限管理。

维护与故障排除

1. 更新 GitLab

定期更新 GitLab 非常重要,可以获取新功能、性能改进以及最重要的安全补丁。

更新 GitLab 的步骤:

  1. 重要: 在更新前进行完整备份
  2. 更新系统的软件包列表:sudo apt update (Ubuntu) 或 sudo yum update (CentOS)。
  3. 更新 GitLab 包:sudo apt upgrade gitlab-ce -y (Ubuntu) 或 sudo yum upgrade gitlab-ce -y (CentOS)。
  4. 更新完成后,GitLab 会自动运行 reconfigurerestart

建议在更新前查看 GitLab 官方的发布说明,特别是跨越主要版本号的更新,可能需要注意额外的步骤或潜在的不兼容性。

2. 查看日志

当 GitLab 出现问题时,查看日志是诊断问题最有效的方法。

  • 使用 gitlab-ctl tail 命令可以查看 GitLab 所有服务的实时日志:
    bash
    sudo gitlab-ctl tail
    # 可以加上服务名称只查看特定服务的日志,例如:
    sudo gitlab-ctl tail nginx
    sudo gitlab-ctl tail postgresql
    sudo gitlab-ctl tail unicorn

  • 各个服务的详细日志文件位于 /var/log/gitlab/ 目录下。

3. 常用管理命令

  • sudo gitlab-ctl status:查看 GitLab 各个服务的运行状态。
  • sudo gitlab-ctl start:启动 GitLab 所有服务。
  • sudo gitlab-ctl stop:停止 GitLab 所有服务。
  • sudo gitlab-ctl restart:重启 GitLab 所有服务。
  • sudo gitlab-ctl reconfigure:根据 /etc/gitlab/gitlab.rb 重新配置并应用设置。
  • sudo gitlab-ctl check-config:检查配置文件是否有语法错误。
  • sudo gitlab-rake gitlab:check SANITIZE=true:运行 GitLab 的健康检查,可以发现很多潜在问题。SANITIZE=true 会隐藏敏感信息。

4. 常见问题排查思路

  • 无法访问 Web 界面:
    • 检查服务器是否正在运行:sudo gitlab-ctl status
    • 检查防火墙是否开放了 80 或 443 端口。
    • 检查 external_url 配置是否正确,并且 DNS 解析是否指向了正确的服务器 IP。
    • 查看 Nginx 或 Puma 的日志:sudo gitlab-ctl tail nginxsudo gitlab-ctl tail puma
  • Git Push/Clone SSH 失败:
    • 检查 SSH 服务是否正在运行:sudo systemctl status sshd (CentOS) 或 sudo systemctl status ssh (Ubuntu)。
    • 检查防火墙是否开放了 22 端口。
    • 检查用户是否已将公钥添加到 GitLab 用户设置中。
    • 尝试在客户端使用 ssh -vT git@your_gitlab_domain 来诊断 SSH 连接问题。
  • 性能缓慢:
    • 检查服务器的 CPU、内存、磁盘 I/O 使用情况。
    • 查看 Sidekiq 日志:sudo gitlab-ctl tail sidekiq,如果 Sidekiq 队列积压严重,说明后台任务处理缓慢,通常是资源不足的表现。
    • 检查磁盘空间是否充足。
  • 配置修改未生效: 确保修改了 /etc/gitlab/gitlab.rb 文件后,执行了 sudo gitlab-ctl reconfigure 命令。

结论

通过本教程的指引,你已经成功地在 Linux 服务器上搭建并配置了 GitLab,并了解了基本的维护和故障排除方法。自建 GitLab 服务器为你提供了一个强大且灵活的 Git 仓库管理和 DevOps 平台。

搭建服务器只是第一步,后续的维护和优化同样重要。请务必重视备份,定期更新,并根据团队的实际使用情况调整服务器资源。随着你对 GitLab 的深入使用,你会发现它还能为你的开发流程带来更多便利和效率的提升。

希望这篇详细的教程对你有所帮助!祝你在使用自建 GitLab 服务器的过程中一切顺利!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部