Linux环境搭建GitLab
一 环境准备与端口规划
- 操作系统:选择主流发行版,如 Ubuntu/Debian 或 CentOS/RHEL。
- 硬件建议:至少 2 核 CPU、4 GB 内存(推荐更高)、20 GB+ 磁盘空间,并确保服务器可访问互联网。
- 端口开放:放行 HTTP 80、HTTPS 443 与 SSH 22(如做端口映射,请同步调整防火墙与客户端)。
- 防火墙示例:
- Ubuntu/Debian(UFW):sudo ufw allow 22/tcp && sudo ufw allow 80/tcp && sudo ufw allow 443/tcp && sudo ufw enable
- CentOS/RHEL(firewalld):sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --permanent --add-service=https && sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload
- 域名与证书:准备可解析的 域名;生产环境建议使用 Let’s Encrypt 免费证书启用 HTTPS。
二 方式一 原生安装 Omnibus GitLab(推荐)
- 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
- 添加仓库并安装: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|stop|restart|status;查看日志:sudo gitlab-ctl tail
- 首次访问 Web,设置 root 管理员密码后登录
三 方式二 Docker Compose 快速部署
- 安装 Docker 与 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(文件通常在首次启动后 24 小时 内有效,需尽快登录修改)
- 修改外部 URL(容器内):docker exec -it gitlab vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
- 重启生效:docker exec -it gitlab gitlab-ctl restart
- 访问地址:http://your_domain_or_ip:5480 或 https://your_domain_or_ip:5443
四 安全与运维要点
- 启用 HTTPS(生产推荐)
- 使用 Let’s Encrypt:sudo apt-get install -y certbot python3-certbot-nginx(或对应发行版命令)
- 获取证书:sudo certbot certonly --standalone -d your_domain
- 配置 /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
- 邮件通知(SMTP 示例)
- 在 /etc/gitlab/gitlab.rb 中启用并填写你的 SMTP 参数(地址、端口、账号、密码等),保存后执行 sudo gitlab-ctl reconfigure
- 备份与恢复
- 备份:sudo gitlab-rake gitlab:backup:create(备份文件默认位于 /var/opt/gitlab/backups,可在 gitlab.rb 中自定义路径)
- 恢复:将备份文件放置到备份目录后执行 sudo gitlab-rake gitlab:backup:restore
- 常见问题与排障
- 配置变更后未生效:执行 sudo gitlab-ctl reconfigure
- 服务异常:sudo gitlab-ctl status;查看日志:sudo gitlab-ctl tail
- 端口冲突:检查是否被其他服务占用(如 8080 等),必要时调整 gitlab.rb 或 Docker 映射端口