一、环境准备与虚拟机克隆
在构建GitLab服务前,需准备基础运行环境。建议采用虚拟机克隆方式快速创建标准化开发环境,此方法可确保所有节点配置一致性,降低环境差异导致的部署问题。
1.1 虚拟机克隆操作
基于已安装CentOS Stream的源虚拟机,通过虚拟化平台(如行业常见虚拟化解决方案)执行完整克隆操作。克隆完成后需修改主机名以避免服务冲突:
hostnamectl set-hostname gitlab-serverecho "192.168.226.100 gitlab-server" >> /etc/hosts
1.2 网络静态化配置
动态IP可能导致服务中断,需配置永久静态IP。使用NetworkManager工具进行配置:
nmcli connection modify "ens33" \ipv4.addresses "192.168.226.100/24" \ipv4.gateway "192.168.226.2" \ipv4.dns "8.8.8.8,114.114.114.114" \ipv4.method manual# 应用配置nmcli connection down "ens33" && nmcli connection up "ens33"
验证网络连通性:
ping -c 4 baidu.comcurl ifconfig.me
二、GitLab依赖环境构建
GitLab作为复合型应用,依赖多种基础服务组件,需按特定顺序安装配置。
2.1 基础依赖安装
安装curl和安全策略工具:
dnf install -y curl policycoreutils-python-utils
curl:用于下载仓库配置和软件包policycoreutils-python-utils:解决SELinux策略冲突
2.2 仓库源配置
由于官方暂未提供CentOS Stream 10专用包,采用CentOS 8兼容方案:
curl -sS https://packages.example.com/install-repo-script | \OS=el DIST=8 bash
验证仓库配置:
ls /etc/yum.repos.d/gitlab_*.repo
2.3 安装核心组件
执行安装命令时需指定外部访问URL:
EXTERNAL_URL="http://192.168.226.100" \yum install -y gitlab-ce
断点续传技巧:若网络中断,可重新执行命令自动继续下载。安装过程中可能遇到libxcrypt兼容性问题,需单独安装:
dnf install -y libxcrypt-compat
三、服务配置与优化
GitLab包含PostgreSQL、Redis、Sidekiq等20+服务组件,需进行针对性优化。
3.1 初始配置重载
完成基础安装后执行配置重载:
gitlab-ctl reconfigure
此过程会:
- 生成SSL自签名证书
- 初始化数据库结构
- 配置Nginx虚拟主机
- 设置默认管理员密码(路径:
/etc/gitlab/initial_root_password)
3.2 内存优化方案
默认配置需要至少4GB内存,可通过修改配置降低消耗:
vim /etc/gitlab/gitlab.rb
调整关键参数:
# 禁用Prometheus监控prometheus_monitoring['enable'] = false# 调整Unicorn工作进程数unicorn['worker_processes'] = 2# 限制Sidekiq并发sidekiq['concurrency'] = 10
应用修改后重启服务:
gitlab-ctl restart
3.3 防火墙配置
开放必要端口并配置持久化规则:
firewall-cmd --permanent --add-service={http,https}firewall-cmd --permanent --add-port=2222/tcp # Git SSH端口firewall-cmd --reload
四、平台初始化与使用
完成环境部署后,需进行初始化配置和基础使用教学。
4.1 首次登录流程
访问http://192.168.226.100,使用默认账号root和初始密码登录。安全提示:首次登录后立即修改密码,初始密码文件会在24小时后自动删除。
4.2 项目结构规划
推荐采用”组-项目”二级结构管理代码:
- 创建部门组(如
backend-team) - 在组内创建项目(如
order-service) - 设置成员权限(Developer/Maintainer/Owner)
权限模型优势:
- 继承式权限管理
- 集中式访问控制
- 简化审计流程
4.3 代码提交示例
通过Git命令行提交代码的完整流程:
# 配置全局信息git config --global user.name "John Doe"git config --global user.email "john@example.com"# 克隆项目git clone http://192.168.226.100/backend-team/order-service.gitcd order-service# 创建开发分支git checkout -b feature/add-payment# 提交变更echo "new feature" > payment.pygit add .git commit -m "Add payment module"git push origin feature/add-payment
五、运维监控体系
建立完善的监控机制保障服务稳定性。
5.1 服务状态检查
实时监控关键服务:
gitlab-ctl status# 正常状态应全部显示"up"
5.2 日志分析技巧
定位问题的常用日志路径:
/var/log/gitlab/gitlab-rails/production.log # 应用日志/var/log/gitlab/nginx/gitlab_access.log # 访问日志/var/log/gitlab/postgresql/current # 数据库日志
5.3 备份策略
配置每日自动备份:
vim /etc/gitlab/gitlab.rb# 添加配置gitlab_rails['manage_backup_path'] = truegitlab_rails['backup_path'] = "/var/opt/gitlab/backups"gitlab_rails['backup_keep_time'] = 604800 # 保留7天
执行手动备份测试:
gitlab-rake gitlab:backup:create
六、常见问题处理
收集整理部署过程中的典型故障解决方案。
6.1 502错误排查
可能原因及解决方案:
- Unicorn超载:检查
/var/log/gitlab/unicorn/unicorn_stderr.log - 内存不足:执行
free -h查看可用内存 - PostgreSQL故障:检查
/var/log/gitlab/postgresql/current
6.2 邮件发送失败
配置SMTP邮件服务示例:
# /etc/gitlab/gitlab.rbgitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = "smtp.example.com"gitlab_rails['smtp_port'] = 587gitlab_rails['smtp_user_name'] = "gitlab@example.com"gitlab_rails['smtp_password'] = "secure-password"
6.3 升级注意事项
版本升级前必须:
- 创建完整备份
- 检查版本兼容性
- 预读发布说明
- 在测试环境验证
升级命令流程:
# 停止服务gitlab-ctl stop# 执行升级yum update gitlab-ce# 迁移数据库gitlab-rake gitlab:db:migrate# 重启服务gitlab-ctl restart
通过本指南的系统化部署,读者可构建出稳定可靠的GitLab持续集成平台。建议结合企业实际需求,进一步集成CI/CD流水线、容器化部署等高级功能,构建完整的DevOps技术体系。在运维过程中,应建立定期巡检机制,重点关注磁盘空间、内存使用、备份完整性等关键指标,确保系统长期稳定运行。