
本文详细介绍在 Ubuntu 26.04 系统上通过 Omnibus 包方式安装 GitLab CE 的完整过程,适用于本地部署和私有化部署场景。
## 一、环境说明
### 1.1 系统环境
- **操作系统**:Ubuntu 26.04 (Resolute Raccoon)
- **内存**:建议 4GB 以上(本文环境 30GB)
- **CPU**:建议 2 核心以上(本文环境 8 核心)
- **磁盘**:建议 50GB 以上可用空间
### 1.2 GitLab 版本
- **版本**:GitLab CE 18.9.2
- **安装方式**:Omnibus 包(官方推荐)
- **非 Docker**:原生系统服务方式部署
---
## 二、安装前准备
### 2.1 安装系统依赖
GitLab 需要以下基础依赖:
```bash
sudo apt update
sudo apt install -y curl openssh-server postfix
```
> **说明**:
> - `curl`:用于下载文件和访问 HTTP 资源
> - `openssh-server`:提供 SSH 访问功能
> - `postfix`:用于发送通知邮件(可选)
---
## 三、配置 GitLab 软件源
### 3.1 添加 GPG 密钥
```bash
# 下载 GPG 密钥
curl -fsSL "https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey" | sudo gpg --dearmor -o /usr/share/keyrings/gitlab-ce.gpg
# 设置密钥权限
sudo chmod 644 /usr/share/keyrings/gitlab-ce.gpg
```
### 3.2 添加软件源(清华镜像)
由于 Ubuntu 26.04 是开发版本,官方源尚未支持,需要使用 Ubuntu 24.04 (noble) 的源。推荐使用清华大学镜像源加速下载:
```bash
sudo bash -c 'cat > /etc/apt/sources.list.d/gitlab-gitlab-ce.sources << EOF
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/noble/
Suites: noble
Components: main
Architectures: amd64
Signed-By: /usr/share/keyrings/gitlab-ce.gpg
EOF'
```
> **注意**:Ubuntu 26.04 使用新的 deb822 源格式,需要使用 `.sources` 后缀文件。
### 3.3 更新软件源
```bash
sudo apt update
```
---
## 四、安装 GitLab CE
### 4.1 执行安装
```bash
sudo EXTERNAL_URL="http://你的服务器IP" apt install -y gitlab-ce
```
> **说明**:
> - `EXTERNAL_URL`:设置 GitLab 的访问地址
> - 安装包大小约 1.4GB,请确保网络畅通
> - 使用清华镜像源下载速度可达 20MB/s 以上
### 4.2 安装过程说明
安装过程中会自动完成以下操作:
1. 解压 GitLab 包(约 4GB 空间)
2. 创建 git、gitlab-psql、gitlab-www 等系统用户
3. 配置 Redis、PostgreSQL、Nginx 等组件
4. 初始化服务配置
---
## 五、配置 GitLab
### 5.1 修改配置文件
GitLab 的主配置文件位于 `/etc/gitlab/gitlab.rb`:
```bash
# 编辑配置文件
sudo vim /etc/gitlab/gitlab.rb
```
### 5.2 常用配置项
```ruby
# 外部访问地址
external_url 'http://192.168.1.100'
# Nginx 配置
nginx['listen_port'] = 80
nginx['listen_https'] = false
# GitLab 数据目录
git_data_dirs({
"default" => { "path" => "/var/opt/gitlab/git-data" }
})
# 邮件通知配置(可选)
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.example.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "gitlab@example.com"
gitlab_rails['smtp_password'] = "your_password"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
```
### 5.3 应用配置
```bash
# 重新配置 GitLab
sudo gitlab-ctl reconfigure
```
> **注意**:首次 reconfigure 可能需要 3-5 分钟,请耐心等待。
---
## 六、验证安装
### 6.1 检查服务状态
```bash
sudo gitlab-ctl status
```
**正常输出示例**:
```
run: alertmanager: (pid 24254) 20s; run: log: (pid 23818) 57s
run: gitaly: (pid 24193) 22s; run: log: (pid 22790) 192s
run: gitlab-exporter: (pid 24207) 21s; run: log: (pid 23700) 75s
run: gitlab-kas: (pid 23225) 183s; run: log: (pid 23257) 180s
run: gitlab-workhorse: (pid 24152) 23s; run: log: (pid 23573) 88s
run: logrotate: (pid 22501) 207s; run: log: (pid 22515) 206s
run: nginx: (pid 24173) 22s; run: log: (pid 23602) 86s
run: node-exporter: (pid 24207) 21s; run: log: (pid 23677) 80s
run: postgres-exporter: (pid 24269) 19s; run: log: (pid 24000) 51s
run: postgresql: (pid 22846) 189s; run: log: (pid 22862) 188s
run: prometheus: (pid 24225) 21s; run: log: (pid 23789) 61s
run: puma: (pid 23433) 102s; run: log: (pid 23448) 98s
run: redis: (pid 22698) 201s; run: log: (pid 22713) 200s
run: redis-exporter: (pid 24212) 21s; run: log: (pid 23737) 69s
run: sidekiq: (pid 23469) 95s; run: log: (pid 23487) 94s
```
### 6.2 访问 GitLab
在浏览器中访问配置的地址:`http://你的服务器IP`
### 6.3 获取初始密码
首次登录需要使用 root 用户和初始密码:
```bash
# 查看初始 root 密码
sudo cat /etc/gitlab/initial_root_password

> **重要提示**:该密码文件会在首次 reconfigure 后 24 小时内自动删除,请及时修改密码。
---
## 七、常用管理命令
### 7.1 服务管理
```bash
# 启动所有服务
sudo gitlab-ctl start
# 停止所有服务
sudo gitlab-ctl stop
# 重启所有服务
sudo gitlab-ctl restart
# 重启单个服务(如 nginx)
sudo gitlab-ctl restart nginx
# 查看服务状态
sudo gitlab-ctl status
```
### 7.2 日志查看
```bash
# 查看所有日志
sudo gitlab-ctl tail
# 查看特定服务日志
sudo gitlab-ctl tail nginx
sudo gitlab-ctl tail sidekiq
sudo gitlab-ctl tail postgresql
```
### 7.3 备份与恢复
```bash
# 创建备份
sudo gitlab-backup create
# 恢复备份(需先停止相关服务)
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
sudo gitlab-backup restore BACKUP=1234567890_2024_01_01_1.0.0
# 启动服务
sudo gitlab-ctl start
```
### 7.4 其他命令
```bash
# 重新配置
sudo gitlab-ctl reconfigure
# 清理缓存
sudo gitlab-rake cache:clear
# 检查环境
sudo gitlab-rake gitlab:check SANITIZE=true
# 查看版本
sudo gitlab-rake gitlab:env:info
```
---
## 八、常见问题解决
### 8.1 内存不足问题
GitLab 默认占用较大内存,如果服务器内存较小,可以优化配置:
```ruby
# 在 /etc/gitlab/gitlab.rb 中添加
puma['worker_processes'] = 2
sidekiq['max_concurrency'] = 10
```
### 8.2 端口冲突
如果 80 端口被占用,可以修改 Nginx 监听端口:
```ruby
nginx['listen_port'] = 8080
```
### 8.3 无法访问
1. 检查防火墙设置:
```bash
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
```
2. 检查服务状态:
```bash
sudo gitlab-ctl status
```
3. 查看错误日志:
```bash
sudo gitlab-ctl tail nginx
```
### 8.4 邮件发送失败
检查 SMTP 配置是否正确,确保防火墙允许出站连接:
```bash
telnet smtp.example.com 587
```
---
## 九、性能优化建议
### 9.1 数据库优化
对于大型实例,可以优化 PostgreSQL 配置:
```ruby
postgresql['shared_buffers'] = '256MB'
postgresql['work_mem'] = '16MB'
postgresql['max_connections'] = 500
```
### 9.2 Redis 优化
```ruby
redis['maxmemory'] = '512mb'
redis['maxmemory_policy'] = 'noeviction'
```
### 9.3 Puma 优化
```ruby
puma['worker_processes'] = 4
puma['worker_timeout'] = 60
puma['worker_processes'] = 2
```
---
## 十、安全建议
### 10.1 启用 HTTPS
生产环境强烈建议启用 HTTPS:
```ruby
external_url 'https://gitlab.example.com'
nginx['redirect_http_to_https'] = true
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['admin@example.com']
```
### 10.2 修改默认密码
首次登录后立即修改 root 密码。
### 10.3 配置防火墙
```bash
# 只开放必要端口
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
```
### 10.4 定期备份
建议配置定时备份任务:
```bash
# 编辑 crontab
sudo crontab -e
# 添加每日凌晨 2 点备份
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
```
---
## 十一、总结
本文详细介绍了在 Ubuntu 26.04 系统上通过 Omnibus 包方式安装 GitLab CE 的完整流程。相比 Docker 方式,原生安装具有以下优势:
- **性能更好**:无容器层开销
- **管理方便**:使用系统服务管理
- **集成度高**:所有组件统一管理
- **维护简单**:官方 gitlab-ctl 工具一键管理
**注意事项**:
1. 确保服务器有足够内存(建议 4GB 以上)
2. 生产环境务必启用 HTTPS
3. 定期备份重要数据
4. 及时更新 GitLab 版本修复安全漏洞
---
## 参考链接
- [GitLab 官方文档](https://docs.gitlab.com/)
- [Omnibus GitLab 安装指南](https://gitlab.com/gitlab-org/omnibus-gitlab)
- [清华大学开源软件镜像站](https://mirrors.tuna.tsinghua.edu.cn/)
- [GitLab 备份与恢复](https://docs.gitlab.com/omnibus/settings/backup.html)
---
**作者**:林宏权
**版权声明**:本文为原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
夜雨聆风