CentOS服务器上GitLab的最佳实践
sudo yum update -y),并安装必要依赖包(openssh-server、postfix、cronie、policycoreutils),用于SSH访问、邮件通知和定时任务。curl https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.1.0-ce.0.el7.x86_64.rpm | sudo bash
sudo yum install -y gitlab-ce
/etc/gitlab/gitlab.rb设置外部URL(如external_url 'http://your_server_ip'),并配置SMTP邮件(如QQ邮箱)用于通知:gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "your_email@qq.com"
gitlab_rails['smtp_password'] = "your_password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'your_email@qq.com'
执行sudo gitlab-ctl reconfigure应用配置并重启服务。firewall-cmd开放必要端口(HTTP 80、HTTPS 443、SSH 22),并禁用root直接登录:sudo firewall-cmd --permanent --add-service=http --add-service=https --add-service=ssh
sudo firewall-cmd --reload
配置SSH密钥认证(ssh-keygen -t rsa -C "your_email",将公钥添加至GitLab用户设置),提升远程访问安全性。gitlab.rb启用HTTPS:nginx['enable'] = true
nginx['listen_port'] = 443
nginx['listen_https'] = true
nginx['ssl_certificate'] = "/etc/letsencrypt/live/your_domain/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/your_domain/privkey.pem"
实施RBAC(角色基础访问控制),限制用户对敏感项目(如生产环境代码)的操作权限(如仅管理员可推送至main分支)。unicorn['worker_processes'] = 4 # 建议为CPU核心数的1-2倍
sidekiq['concurrency'] = 25 # 建议为CPU核心数的1-1.5倍
启用缓存(内存存储)减少数据库访问:gitlab_rails['cache_store'] = :memory_store, { size: 64.megabytes }
/etc/sysctl.conf):net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535
使用sysctl -p使配置生效。存储方面,将Git数据目录(/var/opt/gitlab/git-data)挂载至SSD,提升仓库读写速度。/var/log/gitlab),避免磁盘空间耗尽;配置自动备份(gitlab-rake gitlab:backup:create),将备份文件存储至异地(如对象存储MinIO)或本地磁盘,确保数据安全。sudo yum update gitlab-ce),获取安全修复和新功能,避免因版本过旧导致的安全风险。main分支保护,feature分支开发,release分支预发布),确保代码有序合并;配置.gitlab-ci.yml文件实现自动化构建、测试、部署(如Jenkins联动),提升开发效率。git lfs install并跟踪大文件类型(如*.psd)。