手把手教你:基于 Linux 搭建 GitLab 服务器超详细教程 (约 3000字)
引言:为何选择自建 GitLab 服务器?
在当今软件开发和DevOps的浪潮中,版本控制系统的重要性不言而喻。Git 已经成为事实上的标准,而 GitLab 作为一个强大的 Git 仓库管理工具,集成了CI/CD、项目管理、代码审查等多种功能,为团队协作提供了全面的解决方案。
虽然有像 GitLab.com 这样的托管服务可供选择,但对于许多企业或个人而言,自建 GitLab 服务器具有独特的优势:
- 数据安全与隐私: 代码是企业的核心资产。将代码托管在自己的服务器上,可以最大程度地控制数据,满足合规性要求,避免潜在的数据泄露风险。
- 高度可定制性: 自建服务器可以根据团队需求进行灵活配置和优化,包括硬件资源、网络环境、集成其他内部系统等。
- 成本控制: 对于用户量较大或有特定需求的团队,自建服务器在长期来看可能比使用托管服务更具成本效益。
- 性能与控制力: 可以根据实际负载调整服务器资源,优化访问速度和稳定性,完全掌控服务器的运行状态。
本教程将详细介绍如何在 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 allow
或 firewall-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
等)都显示为 run
或 ready
状态。
步骤四:访问 GitLab 并进行初始设置
服务启动后,你就可以通过浏览器访问 GitLab 的 Web 界面了。
- 打开浏览器,访问你在
external_url
中配置的地址(例如http://gitlab.yourcompany.com
或http://your_server_ip
)。 - 第一次访问时,GitLab 会提示你为
root
用户设置一个初始密码。root
用户是 GitLab 的超级管理员账户,拥有最高权限。 - 设置好密码后,系统会将你重定向到登录页面。使用用户名
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 的步骤:
- 重要: 在更新前进行完整备份!
- 更新系统的软件包列表:
sudo apt update
(Ubuntu) 或sudo yum update
(CentOS)。 - 更新 GitLab 包:
sudo apt upgrade gitlab-ce -y
(Ubuntu) 或sudo yum upgrade gitlab-ce -y
(CentOS)。 - 更新完成后,GitLab 会自动运行
reconfigure
和restart
。
建议在更新前查看 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 nginx
或sudo 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 连接问题。
- 检查 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 服务器的过程中一切顺利!