在开源社区中,GitLab作为一款高效的devOps平台,已成为团队协作和代码管理的首选工具,其不仅支持代码托管、CI/CD流水线,还内置了项目管理、Wiki文档等功能,对于需要在CentOS服务器上自主部署GitLab的用户,本文将提供一套完整的操作指南,涵盖环境准备、安装配置、安全优化等关键步骤,帮助您快速搭建稳定可靠的代码托管环境。
一、环境准备与依赖检查
在部署GitLab前,需确保服务器满足以下条件:

操作系统:CentOS 7或8(推荐使用最新稳定版)
硬件配置:至少4核CPU、4GB内存(小型团队适用,高并发需按需扩容)
存储空间:建议预留20GB以上磁盘空间用于数据和日志
网络环境:开放HTTP/HTTPS端口(80/443)及SSH端口(22)
安装前需更新系统并安装基础依赖:
sudo yum update -y sudo yum install -y curl policycoreutils openssh-server postfix
确保Postfix(邮件服务)已启动,后续可通过GitLab配置邮件通知。

二、GitLab安装与初始化
GitLab提供官方仓库,可通过脚本快速安装:
1、添加仓库并安装:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
2、执行安装命令(替换EXTERNAL_URL为实际域名或IP):
sudo EXTERNAL_URL="http://your-domain.com" yum install -y gitlab-ce
3、启动服务并初始化:
sudo gitlab-ctl reconfigure
此过程可能耗时5-10分钟,需耐心等待。
三、基础配置与功能验证
1、访问控制

首次通过浏览器访问配置的EXTERNAL_URL,需设置管理员账户密码(用户名默认为root)。
2、语言与时区调整
进入Admin Area → Settings → Preferences,修改默认语言及时区,确保日志时间准确。
3、仓库存储路径
编辑/etc/gitlab/gitlab.rb,修改git_data_dirs参数指定存储目录,避免系统盘占满:
git_data_dirs({ "default" => { "path" => "/data/gitlab" } }) 保存后执行sudo gitlab-ctl reconfigure生效。
4、SMTP邮件配置
若需邮件通知,在配置文件中添加SMTP信息(以Gmail为例):
gitlab_rails['smtp_address'] = "smtp.gmail.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "your-email@gmail.com" gitlab_rails['smtp_password'] = "app-specific-password"
完成配置后,可通过创建测试项目并推送代码,验证仓库功能是否正常。
四、性能优化与安全加固
1、资源限制调整
- 修改/etc/gitlab/gitlab.rb中的unicorn和sidekiq参数,根据服务器配置调整进程数与内存占用:
unicorn['worker_processes'] = 4
sidekiq['concurrency'] = 10 - 使用Prometheus监控服务状态,定期清理日志(sudo gitlab-ctl prune logs)。
2、防火墙与SSL加密
- 配置防火墙仅允许必要端口:
sudo firewall-cmd --permanent --add-service={http,https,ssh}
sudo firewall-cmd --reload- 通过Let's Encrypt自动申请SSL证书:
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['admin@example.com']3、备份与恢复
- 手动备份数据(默认存储于/var/opt/gitlab/backups):
sudo gitlab-backup create- 定期设置Cron任务自动化备份,并将副本传输至异地存储。
五、常见问题排查
502错误:通常由内存不足导致,可尝试增加Swap分区或升级配置。
无法推送代码:检查仓库权限设置及SSH密钥绑定状态。
服务启动失败:通过sudo gitlab-ctl tail查看实时日志定位问题。
从实际运维经验来看,GitLab的稳定性高度依赖前期的资源规划和定期维护,对于中小型团队,建议优先选择社区版(CE)以满足基本需求;若需高级功能如漏洞扫描或多集群管理,可评估企业版(EE)的性价比,部署完成后,定期更新版本、监控资源占用、及时处理安全告警,是保障服务长期运行的关键。
