Ubuntu上GitLab部署方案
GitLab是开源代码托管平台,支持版本控制、CI/CD等功能。在Ubuntu上部署GitLab主要有包管理安装(适合需要系统集成的场景)和Docker容器化部署(适合快速部署、环境隔离的场景)两种方式,以下是详细方案:
sudo apt update && sudo apt upgrade -ysudo apt install -y curl openssh-server ca-certificates tzdata perl(curl用于下载包,openssh-server用于Git SSH协议,ca-certificates用于HTTPS连接)curl https://packages.gitlab.com/gpg.key | sudo apt-key add -sudo apt install -y curl,然后运行curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash(替换为最新脚本地址)sudo EXTERNAL_URL="http://yourdomain.com" apt install -y gitlab-ce(将yourdomain.com替换为服务器IP或域名,如http://192.168.1.100)http://yourdomain.com,首次登录需设置root用户密码(密码存储在/etc/gitlab/initial_root_password,24小时后自动删除,需立即修改)sudo gitlab-ctl startsudo gitlab-ctl stopsudo gitlab-ctl restartsudo gitlab-ctl status/etc/gitlab/gitlab.rb后):sudo gitlab-ctl reconfiguresudo apt update && sudo apt upgrade -ysudo apt install -y docker-ce docker-ce-cli containerd.io(推荐使用官方仓库安装最新版)sudo curl -L "https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose,然后sudo chmod +x /usr/local/bin/docker-composemkdir -p ~/gitlab/{config,logs,data}(用于存储GitLab配置、日志和数据,避免容器删除后数据丢失)~/gitlab/docker-compose.yml,内容如下:version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
hostname: 'gitlab.yourdomain.com' # 替换为域名或IP
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.yourdomain.com' # 外部访问地址
gitlab_rails['time_zone'] = 'Asia/Shanghai' # 时区设置
ports:
- "8080:80" # 避免与宿主机Nginx冲突,默认80改为8080
- "443:443"
- "2222:22" # 避免与宿主机SSH冲突,默认22改为2222
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
shm_size: '256m' # 共享内存,避免Sidekiq内存不足
注:若宿主机已有服务占用80/22端口,需修改
ports中的端口映射(如8080:80、2222:22)
cd ~/gitlabdocker-compose up -d(后台运行)docker-compose logs -f(监控启动进度,若出现端口冲突或依赖问题,可根据日志调整配置)~/gitlab/config/initial_root_password,需立即修改(24小时后文件自动删除)http://your-server-ip:8080(若修改了ports中的映射,需对应调整),使用root用户登录docker-compose.yml中的ports映射(如将80:80改为8080:80,22:22改为2222:22),或停止占用端口的服务(如sudo systemctl stop apache2)docker-compose ps(确保gitlab服务为Up状态)。docker-compose logs -f(定位具体错误,如数据库连接失败、端口冲突)。docker-compose restart gitlabsudo apt install -y certbot python3-certbot-nginx,然后sudo certbot --nginx -d yourdomain.com。/etc/gitlab/gitlab.rb:external_url 'https://yourdomain.com',并添加nginx['ssl_certificate'] = "/etc/letsencrypt/live/yourdomain.com/fullchain.pem"、nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/yourdomain.com/privkey.pem"。sudo gitlab-ctl reconfigure(包管理安装);或修改docker-compose.yml中的GITLAB_OMNIBUS_CONFIG,添加SSL配置后docker-compose restart gitlab(Docker部署)以上方案覆盖了Ubuntu上GitLab的主要部署方式,可根据需求选择。包管理安装适合需要与系统深度集成的场景,Docker部署适合快速迭代和环境隔离的场景。部署后需定期备份数据(包管理安装的备份命令:sudo gitlab-backup create;Docker部署的备份:复制~/gitlab/data目录),确保数据安全。