**在 Linux 上把 GitLab 用顺手的关键,是选对部署方式、打通身份认证、配好 HTTPS 与邮件、接入 CI/CD,并落实备份与运维。**下面给出一套从零到一的可落地方案与最佳实践。
部署选型与环境准备
- 部署方式
- 原生安装:在 Ubuntu/Debian 或 CentOS/RHEL 上用官方仓库安装,适合需要深度定制与内网合规的场景。
- Docker Compose:一条命令拉起 GitLab,配置与数据卷分离,便于迁移与备份。
- 资源建议
- 至少 2 核 CPU、4 GB 内存、20 GB 磁盘(生产环境建议更高规格)。
- 基础依赖与服务
- 安装 curl、openssh-server、ca-certificates、tzdata/perl;邮件可选 postfix。
- 开放 80/443(HTTP/HTTPS)与 22(SSH)端口,确保外网或内网可达。
安装与快速配置
- 原生安装(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
- 配置 external_url 并生效
sudo editor /etc/gitlab/gitlab.rb
例如:external_url ‘https://gitlab.example.com’
sudo gitlab-ctl reconfigure && sudo gitlab-ctl start
- Docker Compose(示例)
version: ‘3.6’
services:
gitlab:
image: gitlab/gitlab-ce:17.4.5-ce.0
restart: always
hostname: ‘gitlab.example.com’
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
- 常用运维命令
sudo gitlab-ctl start|stop|restart|status
sudo gitlab-ctl tail(查看日志,定位问题)
安全与网络配置
- HTTPS 与证书
- 使用 Let’s Encrypt 获取免费证书(以 Nginx 为例):
sudo apt-get install certbot python3-certbot-nginx # Debian/Ubuntu
sudo certbot certonly --nginx -d gitlab.example.com
- 在 /etc/gitlab/gitlab.rb 中启用重定向与证书路径:
nginx[‘redirect_http_to_https’] = true
nginx[‘ssl_certificate’] = “/etc/letsencrypt/live/gitlab.example.com/fullchain.pem”
nginx[‘ssl_certificate_key’] = “/etc/letsencrypt/live/gitlab.example.com/privkey.pem”
sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart
- 防火墙放行
- UFW:sudo ufw allow ‘Nginx Full’ && sudo ufw allow ‘OpenSSH’
- firewalld:sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
- 邮件通知(SMTP)
- 在 /etc/gitlab/gitlab.rb 中开启并填写你的 SMTP 参数,例如端口 587/TLS,然后执行 sudo gitlab-ctl reconfigure。
Linux 客户端与 CI/CD 协同
- SSH 免密与克隆
- 生成密钥:ssh-keygen -t ed25519 -C “you@example.com”
- 添加公钥到 GitLab(个人设置 → SSH Keys),测试:ssh -T git@gitlab.example.com
- 克隆:git clone git@gitlab.example.com:group/project.git
- 分支与提交
- git checkout -b feature/x
- git add . && git commit -m “feat: add x”
- git push -u origin feature/x
- Runner 与流水线
- 在 Linux 服务器注册 Runner(选择 Shell 或 Docker 执行器),在项目中放置 .gitlab-ci.yml:
stages:
- build
- test
- deploy
build:
stage: build
script: ./gradlew build || make build
test:
stage: test
script: ./gradlew test || make test
deploy:
stage: deploy
script: ./deploy.sh
only:
- 将 Runner 标签与项目可见性匹配,确保作业调度到目标主机。
备份恢复与日常运维
- 备份与恢复
- 创建备份(会包含数据库、仓库、上传等):sudo gitlab-backup create(旧版本可用:gitlab-rake gitlab:backup:create)
- 恢复(先安装同版本 GitLab,停止服务,再恢复):sudo gitlab-backup restore BACKUP=timestamp(旧版本:gitlab-rake gitlab:backup:restore)
- 建议将备份文件与 /etc/gitlab/gitlab-secrets.json 一并离线保存,确保加密与令牌一致。
- 监控与日志
- 查看整体状态:sudo gitlab-ctl status
- 实时日志:sudo gitlab-ctl tail(可 tail nginx、sidekiq、postgresql 等组件)
- 升级与变更
- 遵循官方升级路径,先在测试环境验证;变更 /etc/gitlab/gitlab.rb 后务必执行 sudo gitlab-ctl reconfigure。