CentOS7下GitLab-CE企业级部署实战指南
在当今DevOps和敏捷开发盛行的时代,代码托管平台已成为技术团队的基础设施核心。作为开源界最受欢迎的企业级Git解决方案,GitLab-CE不仅提供代码仓库管理,更集成了CI/CD、项目管理、安全扫描等全生命周期工具链。本文将手把手带您在CentOS7上完成GitLab-CE的完整部署,涵盖从清华源加速安装到生产级配置的全过程。
1. 环境准备与依赖检查
在开始安装前,我们需要确保系统环境满足GitLab-CE的运行要求。官方推荐的最低配置为4核CPU、4GB内存和至少4GB的交换空间(对于小型团队项目)。实际生产环境中,建议根据用户规模适当提升配置:
# 检查系统版本 cat /etc/redhat-release # 检查内存和交换空间 free -h # 检查磁盘空间(建议/var目录至少有10GB可用) df -h对于防火墙配置,需要提前开放HTTP/HTTPS端口(默认80/443)以及SSH端口(默认22)。如果使用自定义端口,需相应调整:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --permanent --add-port=2222/tcp # 自定义SSH端口示例 sudo firewall-cmd --reload提示:如果使用SELinux,需要额外配置策略或将其设置为permissive模式:
sudo setenforce 0 sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
2. 使用清华源加速安装GitLab-CE
国内用户通过官方源安装往往速度缓慢,使用国内镜像源可以显著提升下载速度。以下是配置清华源的完整步骤:
创建新的repo文件:
sudo tee /etc/yum.repos.d/gitlab-ce.repo <<-'EOF' [gitlab-ce] name=Gitlab CE Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1 EOF更新yum缓存并安装:
sudo yum clean all sudo yum makecache sudo yum install -y gitlab-ce
安装完成后,系统会显示GitLab的ASCII艺术标志,表示基础安装成功。此时GitLab相关文件已部署在以下关键目录:
/opt/gitlab:主程序目录/var/opt/gitlab:应用数据目录/etc/gitlab:配置文件目录
3. 生产环境关键配置
3.1 网络与域名配置
编辑主配置文件前,建议先备份原始配置:
sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak修改/etc/gitlab/gitlab.rb中的关键参数:
# 配置访问URL(必须与最终访问地址完全一致) external_url 'http://gitlab.example.com' # 如果使用自定义SSH端口 gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 邮件服务器配置(以腾讯企业邮箱为例) gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.exmail.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "git@example.com" gitlab_rails['smtp_password'] = "yourpassword" gitlab_rails['smtp_domain'] = "exmail.qq.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true3.2 初始化与性能调优
执行重新配置命令,此过程会生成所有必要的配置文件并启动服务:
sudo gitlab-ctl reconfigure对于内存有限的服务器,可以调整Unicorn工作进程数量:
# /etc/gitlab/gitlab.rb unicorn['worker_processes'] = 2 # 默认为CPU核心数,可适当减少4. 账户安全与权限管理
4.1 Root密码初始化
首次安装后,需要通过Rails控制台重置root密码:
sudo gitlab-rails console -e production在控制台执行以下命令序列:
user = User.find_by(username: 'root') user.password = 'YourSecurePassword123!' user.password_confirmation = 'YourSecurePassword123!' user.save! exit重要安全提示:生产环境务必使用复杂密码(12位以上,包含大小写字母、数字和特殊字符),并定期更换。
4.2 双重认证强制启用
为提升安全性,建议在管理区域强制启用2FA:
- 登录后进入"Admin Area" → "Settings" → "General"
- 展开"Sign-in restrictions"部分
- 勾选"Require all users to set up two-factor authentication"
5. 系统维护与故障排查
5.1 常用管理命令
| 命令 | 功能描述 |
|---|---|
sudo gitlab-ctl start | 启动所有服务 |
sudo gitlab-ctl stop | 停止所有服务 |
sudo gitlab-ctl restart | 重启所有服务 |
sudo gitlab-ctl status | 查看服务状态 |
sudo gitlab-rake gitlab:check | 系统健康检查 |
5.2 日志查看技巧
各组件日志位置:
- Nginx访问日志:
/var/log/gitlab/nginx/gitlab_access.log - GitLab主日志:
/var/log/gitlab/gitlab-rails/production.log - Sidekiq作业日志:
/var/log/gitlab/gitlab-sidekiq/current
实时监控日志:
sudo gitlab-ctl tail # 所有组件日志 sudo gitlab-ctl tail nginx/gitlab_access.log # 特定组件日志6. 备份与恢复策略
6.1 创建完整备份
sudo gitlab-rake gitlab:backup:create备份文件默认存储在/var/opt/gitlab/backups目录,文件名包含时间戳如1651234567_gitlab_backup.tar
6.2 自动化备份配置
在/etc/gitlab/gitlab.rb中添加:
gitlab_rails['backup_path'] = "/mnt/gitlab-backups" gitlab_rails['backup_keep_time'] = 604800 # 保留7天创建每日备份的cron任务:
sudo crontab -e添加以下内容(每天凌晨2点执行):
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=17. 高级功能配置示例
7.1 集成LDAP认证
gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_servers'] = { 'main' => { 'label' => 'LDAP', 'host' => 'ldap.example.com', 'port' => 636, 'uid' => 'sAMAccountName', 'bind_dn' => 'CN=GitLab Sync,OU=Service Accounts,DC=example,DC=com', 'password' => 'your_ldap_password', 'encryption' => 'simple_tls', 'verify_certificates' => true, 'active_directory' => true, 'base' => 'OU=Users,DC=example,DC=com' } }7.2 容器注册表配置
启用内置Docker注册表:
registry['enable'] = true registry_external_url 'https://registry.example.com' registry_nginx['redirect_http_to_https'] = true配置完成后重新加载配置:
sudo gitlab-ctl reconfigure sudo gitlab-ctl restart