GitLab在Ubuntu上的集成方法
小樊
38
2025-11-15 04:13:28
Ubuntu 上集成 GitLab 的实用方案
一 环境准备与安装方式
- 准备
- 更新系统并安装依赖:sudo apt update && sudo apt install -y curl openssh-server ca-certificates tzdata perl
- 资源建议:至少 2GB RAM(推荐 4GB+),可用存储 20GB+
- 方式 A 原生包安装(推荐)
- 添加官方仓库并安装:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo EXTERNAL_URL=“http://<YOUR_DOMAIN_OR_IP>” apt install -y gitlab-ce
- 方式 B Docker 部署(便于隔离与迁移)
- 启动容器(示例映射 80/443/22):
docker run --detach --hostname <YOUR_DOMAIN> --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
- 访问与初始化
- 浏览器访问 http://<YOUR_DOMAIN_OR_IP>,首次登录设置 root 密码
二 核心配置与系统集成
- 基础配置
- 编辑 /etc/gitlab/gitlab.rb:设置 external_url ‘http://<YOUR_DOMAIN>’,如需时区:gitlab_rails[‘time_zone’] = ‘Asia/Shanghai’
- 应用配置:sudo gitlab-ctl reconfigure
- 邮件通知(SMTP)
- 示例(端口 587/TLS):
gitlab_rails[‘smtp_enable’] = true
gitlab_rails[‘smtp_address’] = “smtp.example.com”
gitlab_rails[‘smtp_port’] = 587
gitlab_rails[‘smtp_user_name’] = “user@example.com”
gitlab_rails[‘smtp_password’] = “password”
gitlab_rails[‘smtp_domain’] = “example.com”
gitlab_rails[‘smtp_authentication’] = “login”
gitlab_rails[‘smtp_enable_starttls_auto’] = true
gitlab_rails[‘gitlab_email_from’] = “gitlab@example.com”
应用:sudo gitlab-ctl reconfigure
- HTTPS 与证书
- 将 external_url 改为 https://… 并启用 Let’s Encrypt:
letsencrypt[‘enable’] = true
letsencrypt[‘contact_emails’] = [‘admin@example.com’]
应用:sudo gitlab-ctl reconfigure
- 防火墙与端口
- UFW:sudo ufw allow http && sudo ufw allow https && sudo ufw allow ssh
- Firewalld:sudo firewall-cmd --permanent --add-service={http,https,ssh} && sudo firewall-cmd --reload
- 系统与运维命令
- 常用:sudo gitlab-ctl start|stop|restart|status|tail
- 备份:sudo gitlab-rake gitlab:backup:create
- 版本:gitlab-ctl version 或查看 Omnibus 包版本
三 客户端与 CI/CD 集成
- 开发者接入
- SSH:在本机生成密钥 ssh-keygen,将公钥添加到 GitLab SSH Keys;克隆使用 git@<YOUR_DOMAIN>:/.git
- HTTPS:使用个人访问令牌(PAT)或账号密码进行克隆与推送
- CI/CD 集成
- 在项目根目录创建 .gitlab-ci.yml,定义 stages/jobs,例如:
stages: [build, test, deploy]
build: stage: build script: [./gradlew build]
test: stage: test script: [./gradlew test]
deploy: stage: deploy script: [scp target/app.jar user@host:/opt/app] only: [master]
- Runner:在服务器注册 GitLab Runner(项目或实例级),选择 Shell/Docker/Kubernetes 等执行器,确保能拉取代码与发布产物
四 常见问题与优化建议
- 资源与性能
- 资源紧张时(测试/低配环境),可适当下调:
puma[‘worker_processes’]、sidekiq[‘concurrency’]、postgresql[‘shared_buffers’]、gitlab_rails[‘db_pool’]、redis[‘maxmemory’];调整后执行 gitlab-ctl reconfigure 与重启
- 首次登录与密码
- 若页面未提示设置密码,可在容器内查看初始 root 密码:docker exec -it gitlab cat /etc/gitlab/initial_root_password(仅首次安装后有效)
- 升级与迁移
- 原生包:使用包管理器升级并 gitlab-ctl reconfigure;Docker:更新镜像并重启容器,确保 /etc/gitlab /var/log/gitlab /var/opt/gitlab 持久化挂载