一、环境准备与虚拟机克隆
在构建CI/CD基础设施前,需确保已具备可用的Linux虚拟机环境。推荐采用克隆方式快速创建标准化开发环境:
- 基础镜像选择:建议使用CentOS Stream或RHEL系衍生版本,确保与主流开发工具链兼容
- 克隆操作流程:
- 通过虚拟机管理界面执行完整克隆
- 修改新实例主机名(
hostnamectl set-hostname gitlab-server) - 更新系统至最新状态(
dnf update -y)
二、静态网络配置
生产环境建议采用静态IP配置以确保服务稳定性,具体操作如下:
# 使用nmcli工具配置网络(以ens33网卡为例)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"# 验证配置ip addr show ens33 | grep inetping -c 4 baidu.com
关键参数说明:
ipv4.addresses:需与后续GitLab配置的EXTERNAL_URL保持一致- DNS配置建议采用公共DNS服务提升解析效率
- 网关地址需与物理网络拓扑匹配
三、GitLab依赖安装
社区版安装需预先准备基础工具和安全组件:
# 安装基础依赖dnf install -y curl policycoreutils-python-utils# 配置SELinux策略(解决端口访问问题)setsebool -P httpd_can_network_connect 1
组件作用解析:
curl:用于下载官方仓库配置脚本policycoreutils-python-utils:提供SELinux策略管理工具- SELinux配置:允许Web服务访问网络端口(80/443)
四、仓库源配置与安装
由于官方仓库可能存在版本兼容性问题,需特别注意版本选择:
# 添加CentOS 8兼容仓库(适用于Stream 10)curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | \os=el dist=8 bash# 安装社区版(断点续传支持)EXTERNAL_URL="http://192.168.226.100" yum install -y gitlab-ce
版本选择建议:
- 企业环境推荐使用LTS版本
- 测试环境可选择最新稳定版
- 安装过程中若遇到
libxcrypt-compat缺失错误,执行:dnf install -y libxcrypt-compat
五、服务配置与启动
安装完成后需执行初始化配置:
# 重新加载配置并启动服务gitlab-ctl reconfigure# 检查服务状态(正常应显示green状态)gitlab-ctl status# 查看初始化密码(24小时内有效)cat /etc/gitlab/initial_root_password
服务依赖说明:
GitLab运行需要以下核心组件协同工作:
- PostgreSQL:默认端口5432
- Redis:默认端口6379
- Nginx:默认端口80/443
- Sidekiq:后台任务处理
六、防火墙配置
开放必要端口确保外部访问:
# 查看当前规则firewall-cmd --list-all# 添加HTTP服务(永久生效)firewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-service=https# 重新加载规则firewall-cmd --reload
安全建议:
- 生产环境建议配置HTTPS
- 可通过
--add-port=2222/tcp开放SSH端口(需修改GitLab配置) - 使用
firewall-cmd --list-ports验证配置
七、基础使用指南
完成部署后,建议按以下流程进行初始化配置:
1. 首次登录
访问http://<服务器IP>,使用初始密码登录后立即修改:
- 推荐使用强密码策略(12位以上包含大小写字母和数字)
- 建议绑定邮箱用于密码找回
2. 组织架构设计
专业实践建议:
- 按业务部门创建顶级Group(如
/engineering) - 在Group下创建Project(如
/engineering/web-app) - 通过Member模块配置细粒度权限(Maintainer/Developer/Reporter)
3. 项目初始化
# 本地Git配置示例git config --global user.name "Your Name"git config --global user.email "your.email@example.com"# 克隆远程仓库git clone http://192.168.226.100/engineering/web-app.git
版本控制规范:
- 主分支命名建议采用
main或master - 开发分支使用
feature/xxx格式 - 版本发布分支使用
release/v1.0格式
八、性能优化建议
针对资源占用问题,可采取以下措施:
-
内存优化:
- 修改
/etc/gitlab/gitlab.rb中的unicorn['worker_processes'] - 调整PostgreSQL共享缓冲区(
postgresql['shared_buffers'])
- 修改
-
存储优化:
- 将Git仓库存储迁移至独立磁盘
- 配置对象存储作为LFS大文件存储后端
-
监控集成:
- 通过Prometheus收集关键指标
- 配置Grafana看板监控响应时间
- 设置告警规则(如磁盘空间、内存使用率)
九、常见问题处理
初始化卡在502错误:
- 检查
gitlab-ctl status确认所有服务已启动 - 查看日志定位问题:
journalctl -u gitlab-runsvdir -fgitlab-ctl tail
邮件发送失败:
- 配置SMTP参数(
/etc/gitlab/gitlab.rb) - 测试邮件发送:
gitlab-rails consoleNotify.test_email('recipient@example.com', 'Test Subject', 'Test Body').deliver_now
备份恢复策略:
- 每日自动备份配置:
gitlab-rake gitlab
create
- 跨版本恢复需验证兼容性
- 建议将备份文件存储至对象存储服务
通过完成上述部署流程,您已成功搭建起企业级代码托管平台。此环境可作为后续CI/CD流水线建设的核心组件,与Jenkins/GitLab CI等工具集成后,可实现从代码提交到生产部署的全自动化流程。建议定期进行安全更新(dnf update gitlab-ce)并关注官方版本发布动态,确保系统持续获得安全补丁和功能更新。