在CentOS上自定义GitLab的完整步骤
系统更新与依赖安装
更新系统软件包并安装必要依赖,确保后续安装顺利:
sudo yum update -y
sudo yum install -y curl policycoreutils-python openssh-server postfix perl
policycoreutils-python:用于配置SELinux策略(若启用SELinux);postfix:默认邮件服务,用于GitLab通知(可替换为其他SMTP服务)。防火墙配置
开放HTTP(80)、HTTPS(443)及SSH(22)端口,允许外部访问GitLab界面和管理服务:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
添加GitLab官方仓库
通过脚本添加GitLab社区版(CE)的YUM仓库,确保获取最新版本:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
安装GitLab CE
使用YUM安装GitLab,可通过EXTERNAL_URL参数预先设置外部访问地址(如http://your_server_ip):
sudo EXTERNAL_URL="http://your_server_ip" yum install -y gitlab-ce
启动GitLab服务
初始化配置并启动GitLab,设置开机自启:
sudo gitlab-ctl reconfigure # 应用初始配置
sudo gitlab-ctl start # 启动服务
sudo systemctl enable gitlab-runsvdir.service # 开机自启
修改外部访问URL
编辑GitLab主配置文件/etc/gitlab/gitlab.rb,调整external_url为你的域名或IP(如http://gitlab.example.com),并同步修改Nginx监听端口(若有需要):
external_url 'http://gitlab.example.com'
# 若修改端口,需同步调整nginx['listen_port']
# nginx['listen_port'] = 8080
保存后应用配置并重启服务:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
配置邮件通知
在/etc/gitlab/gitlab.rb中设置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_qq@qq.com"
gitlab_rails['smtp_password'] = "your_authorization_code" # 使用QQ授权码而非密码
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'your_qq@qq.com'
gitlab_rails['smtp_domain'] = "qq.com"
应用配置后重启GitLab:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
修改界面语言
登录GitLab后,点击右上角头像→Preferences→Localization,选择所需语言(如“简体中文”),点击Save Preferences即可生效。
修改默认存储目录
若需更改Git仓库的默认存储路径,编辑/etc/gitlab/gitlab.rb,调整git_data_dirs配置:
git_data_dirs({"default" => {"path" => "/home/gitlab/repos"}})
保存后执行以下命令迁移数据并重启服务:
sudo rsync -av /var/opt/gitlab/git-data/repositories /home/gitlab/repos # 迁移旧数据
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
调整默认端口
若需修改GitLab的SSH端口(如从22改为2222),编辑/etc/gitlab/gitlab.rb:
gitlab_rails['gitlab_shell_ssh_port'] = 2222
同步修改系统SSH配置(/etc/ssh/sshd_config)中的Port参数,重启SSH服务:
sudo systemctl restart sshd
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
配置HTTPS(可选但推荐)
申请SSL证书(如Let’s Encrypt),编辑/etc/gitlab/gitlab.rb,设置external_url为https://并配置证书路径:
external_url 'https://gitlab.example.com'
nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.example.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.example.com/privkey.pem"
应用配置并重启服务:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
定期备份
使用GitLab内置工具创建备份,指定备份目录(如/opt/gitlab/backups):
sudo gitlab-backup create STRATEGY=copy
设置定时任务(如每天凌晨2点备份):
sudo crontab -e
# 添加以下内容
0 2 * * * /opt/gitlab/bin/gitlab-backup create STRATEGY=copy
更新GitLab
定期检查并更新GitLab至最新稳定版本,确保安全性:
sudo yum update -y gitlab-ce
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
监控与日志
使用Prometheus+Grafana监控GitLab性能,或通过gitlab-ctl tail查看实时日志,快速定位问题。