1. 环境准备与依赖检查
在银河麒麟服务器版v10上部署GitLab CE之前,首先要确保系统环境满足基本要求。我遇到过不少因为依赖缺失导致安装失败的案例,所以建议先花10分钟做好以下准备工作:
系统版本确认
执行cat /etc/kylin-release查看具体版本号,确保是银河麒麟服务器版v10 SP2及以上版本。最近有个客户在SP1版本上安装时遇到glibc库冲突,升级系统后才解决。内存与存储检查
GitLab官方建议至少4GB内存,实测发现8GB以上才能流畅运行。用free -h和df -h检查资源时,特别注意/var目录要有20GB以上空间,因为默认的Docker Registry会占用大量存储。关键依赖安装
麒麟系统的软件源与CentOS有些差异,需要特别注意:# 基础工具链 sudo yum -y install curl policycoreutils openssh-server openssh-clients # 邮件服务(可选但建议安装) sudo yum -y install postfix # 替代policycoreutils-python的方案 sudo dnf -y install python3-policycoreutils
注意:如果遇到
policycoreutils-python报错,这是麒麟系统软件包命名差异导致的,改用python3-policycoreutils即可。上周帮某金融客户部署时就踩过这个坑。
2. 软件包获取与安装
2.1 下载适配的GitLab CE包
直接从GitLab官方仓库下载RPM包时,要特别注意架构兼容性。推荐使用以下命令获取最新适配版本:
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/8/gitlab-ce-15.11.0-ce.0.el8.x86_64.rpm如果下载速度慢,可以尝试国内镜像源。去年我在某国企内网环境部署时,通过阿里云镜像加速下载,速度从10KB/s提升到8MB/s。
2.2 安装过程详解
执行安装命令时建议加上--nodeps参数,避免不必要的依赖检查:
sudo rpm -ivh --nodeps gitlab-ce-15.11.0-ce.0.el8.x86_64.rpm安装完成后会看到ASCII艺术字样的欢迎信息,此时不要急着配置。先检查关键目录是否生成:
ls -l /opt/gitlab/ /var/opt/gitlab/3. 网络与安全配置
3.1 修改监听地址
编辑配置文件时,建议同时修改以下两个参数:
sudo vim /etc/gitlab/gitlab.rbexternal_url 'http://your_server_ip:8888' nginx['listen_addresses'] = ['0.0.0.0']最近遇到一个典型故障:某客户配置后只能本机访问,就是因为漏配了nginx监听地址。
3.2 防火墙规则设置
银河麒麟默认使用firewalld,需要放行多个端口:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --permanent --add-port=8888/tcp sudo firewall-cmd --reload如果是生产环境,建议额外配置SELinux规则:
sudo semanage port -a -t http_port_t -p tcp 88884. 服务初始化与调优
4.1 首次运行配置
执行重配置命令时建议观察输出:
sudo gitlab-ctl reconfigure这个过程通常需要3-5分钟,完成后检查关键服务状态:
sudo gitlab-ctl status | grep -E 'nginx|postgresql|redis|sidekiq'4.2 性能优化建议
根据服务器配置调整工作进程数:
# /etc/gitlab/gitlab.rb unicorn['worker_processes'] = 4 # 建议为CPU核心数+1 sidekiq['concurrency'] = 10 # 内存充足时可适当增加对于内存小于8GB的服务器,一定要启用交换分区:
sudo dd if=/dev/zero of=/swapfile bs=1G count=4 sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile5. 日常运维管理
5.1 常用命令速查
这些命令我每天都会用到:
# 查看实时日志(调试必备) sudo gitlab-ctl tail # 备份与恢复(重要!) sudo gitlab-rake gitlab:backup:create sudo gitlab-ctl stop unicorn sudo gitlab-ctl stop sidekiq sudo gitlab-rake gitlab:backup:restore BACKUP=备份文件名5.2 故障排查技巧
遇到服务异常时,我通常按这个顺序检查:
- 查看最近日志:
journalctl -u gitlab-runsvdir -n 100 - 检查端口占用:
ss -tulnp | grep 8888 - 验证数据库连接:
sudo gitlab-rake db:migrate:status
去年处理过一个典型案例:Sidekiq进程卡死导致CI/CD阻塞,最终通过sudo gitlab-ctl restart sidekiq解决。
6. 国产化环境适配经验
在银河麒麟上运行GitLab CE可能会遇到一些特殊问题,这里分享三个实战经验:
中文路径支持
编辑/opt/gitlab/embedded/service/gitlab-rails/config/application.rb,增加:config.encoding = "utf-8"SMTP邮件配置
麒麟系统自带的postfix可能需要额外配置:# /etc/gitlab/gitlab.rb gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.yourdomain.com" gitlab_rails['smtp_port'] = 587定时任务优化
修改crontab避免与系统任务冲突:sudo vim /etc/gitlab/gitlab.rbgitlab_rails['rake_cache_clear'] = '0 * * * *' gitlab_rails['repository_check_worker'] = '*/5 * * * *'