Linux 上 GitLab 环境配置全流程
一 环境准备与资源建议
- 选择发行版:优先使用 Ubuntu/Debian 或 CentOS/RHEL 等主流发行版。
- 资源基线:至少 2GB RAM(推荐 4GB+),可用存储 20GB+,并具备 root/sudo 权限。
- 基础组件:安装 curl、openssh-server、ca-certificates;邮件可选 Postfix;时区数据建议安装 tzdata。
- 主机名与解析:设置主机名(如 gitlab.example.com),并确保 DNS 或 /etc/hosts 可解析。
- 端口规划:默认 HTTP 80、HTTPS 443、SSH 22;如冲突需提前规划端口映射或停用占用服务。
二 安装方式一 Omnibus 包管理(推荐)
- Ubuntu/Debian
- 安装依赖
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
- 添加官方仓库并安装
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install -y gitlab-ce
- CentOS/RHEL
- 安装依赖与邮件服务
sudo yum install -y curl policycoreutils-python openssh-server postfix
sudo systemctl enable --now postfix
- 添加官方仓库并安装
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install -y gitlab-ce
- 首次配置与启动
- 编辑 /etc/gitlab/gitlab.rb,设置外部访问地址:external_url ‘http://your_domain_or_ip’
- 应用配置并启动:sudo gitlab-ctl reconfigure && sudo gitlab-ctl start
- 访问页面设置 root 管理员密码。
三 安装方式二 Docker Compose 快速部署
- 准备 docker-compose.yml(示例将主机 5480→80、5443→443、5022→22 映射,数据持久化到当前目录):
version: ‘3.6’
services:
gitlab:
image: gitlab/gitlab-ee:17.4.5-ee.0
container_name: gitlab
restart: always
ports:
- ‘5480:80’
- ‘5443:443’
- ‘5022:22’
volumes:
- ‘./config:/etc/gitlab’
- ‘./logs:/var/log/gitlab’
- ‘./data:/var/opt/gitlab’
shm_size: ‘256m’
- 启动与初始化
- 启动:docker-compose up -d
- 查看初始 root 密码:docker exec -it gitlab cat /etc/gitlab/initial_root_password
- 修改配置后执行:docker exec -it gitlab gitlab-ctl reconfigure
- 说明:生产环境建议固定版本号(示例为 17.4.5-ee.0),社区版可将镜像替换为 gitlab/gitlab-ce:版本号。
四 关键配置与运维要点
- 核心配置文件与生效方式
- 配置文件:/etc/gitlab/gitlab.rb
- 每次修改后执行:sudo gitlab-ctl reconfigure 使配置生效
- 邮件通知 SMTP(示例为通用参数,按实际 SMTP 调整)
gitlab_rails[‘gitlab_email_enabled’] = true
gitlab_rails[‘gitlab_email_from’] = ‘gitlab@example.com’
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
gitlab_rails[‘smtp_tls’] = true
- HTTPS 与证书
- 使用 Let’s Encrypt 获取免费证书(示例域名 example.com):
sudo apt-get install certbot python-certbot-nginx
sudo certbot certonly --standalone -d example.com -d www.example.com
- 在 gitlab.rb 中启用并指向证书:
nginx[‘redirect_http_to_https’] = true
nginx[‘ssl_certificate’] = “/etc/letsencrypt/live/example.com/fullchain.pem”
nginx[‘ssl_certificate_key’] = “/etc/letsencrypt/live/example.com/privkey.pem”
- 执行:sudo gitlab-ctl reconfigure
- 防火墙与端口
- firewalld(CentOS/RHEL):
sudo firewall-cmd --permanent --add-port={80,443,22}/tcp
sudo firewall-cmd --reload
- ufw(Ubuntu,若启用):
sudo ufw allow 80,443,22/tcp
- 常用运维命令
- 启停与状态:sudo gitlab-ctl start|stop|restart|status
- 日志排查:sudo gitlab-ctl tail
- 版本查看:gitlab-ctl version
- 备份与恢复
- 备份:sudo gitlab-rake gitlab:backup:create(备份文件位于 /var/opt/gitlab/backups/)
- 恢复:将备份文件放置到上述目录后执行 sudo gitlab-rake gitlab:backup:restore BACKUP=备份时间戳
- 常见问题处理
- 与已有 Nginx 冲突:可在 gitlab.rb 中禁用内置 Nginx 并配置外部 Nginx 反向代理
- 忘记管理员密码:进入控制台重置
gitlab-rails console production
user = User.where(id: 1).first
user.password = ‘NewStrongPass!’
user.password_confirmation = ‘NewStrongPass!’
user.save!