Linux环境下部署GitLab的完整指南
一 环境准备与规划
- 操作系统与权限:建议使用Ubuntu/Debian或CentOS/RHEL等主流发行版,具备root或sudo权限。
- 资源建议:至少2GB RAM(推荐4GB+),可用存储≥20GB,并预留后续增长空间。
- 网络与端口:确保可访问互联网,规划访问域名或IP,开放HTTP 80/HTTPS 443/SSH 22端口(如与已有服务冲突,可映射为高位端口)。
- 主机名与解析:设置清晰的主机名(如gitlab.example.com),并在DNS或**/etc/hosts**做好解析。
- 安全基线:启用防火墙(UFW/Firewalld),仅暴露必要端口;规划备份目录与保留策略。
二 安装方式一 Omnibus包安装 Ubuntu或CentOS
- 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
- 配置外部访问地址(将域名或IP替换为你的实际地址)
echo “external_url ‘http://your_domain_or_ip’” | sudo tee -a /etc/gitlab/gitlab.rb
- 应用配置并启动
sudo gitlab-ctl reconfigure
sudo gitlab-ctl start
- CentOS/RHEL
- 安装依赖
sudo yum install -y curl policycoreutils-python openssh-server postfix
sudo systemctl enable --now postfix
- 添加官方仓库并安装
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install -y gitlab-ce
- 配置外部访问地址
echo “external_url ‘http://your_domain_or_ip’” | sudo tee -a /etc/gitlab/gitlab.rb
- 应用配置并启动
sudo gitlab-ctl reconfigure
sudo gitlab-ctl start
- 防火墙放行示例
Ubuntu:sudo ufw allow 80,443,22/tcp && sudo ufw enable
CentOS:sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
三 安装方式二 Docker与Docker Compose
- Docker单容器运行(示例将宿主机5480→80、5443→443、5022→22)
sudo docker run --detach
–hostname gitlab.example.com
–publish 5480:80 --publish 5443:443 --publish 5022: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
- Docker Compose(推荐,便于编排与持久化)
version: “3.6”
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
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密码(容器首次启动后24小时内有效)
docker exec -it gitlab cat /etc/gitlab/initial_root_password
- 说明:如需EE版本,可将镜像更换为gitlab/gitlab-ee:latest;端口映射请与现有服务避免冲突。
四 首次访问与安全加固
- 首次访问与初始化
浏览器访问配置的external_url(如:http://your_domain_or_ip),按向导设置管理员密码;默认管理员为root。
- 启用HTTPS与证书
方案A(推荐):使用Let’s Encrypt自动签发
Ubuntu/Debian:sudo apt-get install -y certbot python3-certbot-nginx
CentOS/RHEL:sudo yum install -y certbot
获取证书后,在**/etc/gitlab/gitlab.rb**中配置:
nginx[‘redirect_http_to_https’] = true
nginx[‘ssl_certificate’] = “/etc/letsencrypt/live/your_domain/fullchain.pem”
nginx[‘ssl_certificate_key’] = “/etc/letsencrypt/live/your_domain/privkey.pem”
然后执行:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart
方案B:使用已有证书,将证书路径写入gitlab.rb并reconfigure。
- 邮件通知SMTP(示例为端口587 STARTTLS)
在**/etc/gitlab/gitlab.rb**中配置:
gitlab_rails[‘smtp_enable’] = true
gitlab_rails[‘smtp_address’] = “smtp.example.com”
gitlab_rails[‘smtp_port’] = 587
gitlab_rails[‘smtp_user_name’] = “your_email@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’] = false
执行:sudo gitlab-ctl reconfigure(必要时重启)。
五 运维常用命令与备份恢复
- 常用运维
查看状态:sudo gitlab-ctl status
重启/停止:sudo gitlab-ctl restart / sudo gitlab-ctl stop
重新配置(修改gitlab.rb后必执行):sudo gitlab-ctl reconfigure
查看日志:sudo gitlab-ctl tail(可加服务名,如:sudo gitlab-ctl tail nginx)
版本信息:gitlab-ctl version
- 备份与恢复(Omnibus)
备份:sudo /opt/gitlab/bin/gitlab-backup create(或旧版本:sudo gitlab-rake gitlab:backup:create)
恢复:将备份文件放到**/var/opt/gitlab/backups/**,执行
sudo /opt/gitlab/bin/gitlab-backup restore BACKUP=timestamp_of_backup
注意:恢复前确保版本一致,恢复后按需重启服务。
- 离线安装提示(无外网环境)
在有网环境下载gitlab-ce/gitlab-ee的RPM/DEB包及依赖,拷贝至离线主机后本地安装;安装完成后同样通过gitlab-ctl reconfigure初始化。