
本文详细介绍在 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 安装过程说明
安装过程中会自动完成以下操作:
-
解压 GitLab 包(约 4GB 空间)
-
创建 git、gitlab-psql、gitlab-www 等系统用户
-
配置 Redis、PostgreSQL、Nginx 等组件
-
初始化服务配置
五、配置 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 无法访问
- 检查防火墙设置:
```bash
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
```
- 检查服务状态:
```bash
sudo gitlab-ctl status
```
- 查看错误日志:
```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 工具一键管理
**注意事项**:
-
确保服务器有足够内存(建议 4GB 以上)
-
生产环境务必启用 HTTPS
-
定期备份重要数据
-
及时更新 GitLab 版本修复安全漏洞
参考链接
-
GitLab 官方文档\](https://docs.gitlab.com/)
-
清华大学开源软件镜像站\](https://mirrors.tuna.tsinghua.edu.cn/)
**作者**:林宏权
**版权声明**:本文为原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明