Ubuntu下GitLab自定义配置指南
GitLab的自定义配置主要通过修改其核心配置文件/etc/gitlab/gitlab.rb实现,该文件包含了GitLab运行所需的各种参数(如外部访问URL、邮件服务、存储路径、端口设置等)。修改完成后,需运行sudo gitlab-ctl reconfigure命令使配置生效,并通过sudo gitlab-ctl restart重启服务。以下是常见的自定义配置场景及操作步骤:
外部URL是GitLab的访问入口,决定了用户通过何种地址访问实例。修改external_url参数即可更改访问地址(支持HTTP/HTTPS、域名或IP):
sudo vim /etc/gitlab/gitlab.rb
找到external_url行(通常位于文件顶部),修改为你的实际地址(例如使用域名https://gitlab.example.com或IPhttp://192.168.1.100):
external_url 'https://gitlab.example.com'
保存退出后,执行sudo gitlab-ctl reconfigure使配置生效。
GitLab的邮件通知(如密码重置、合并请求提醒)需要配置SMTP服务。在/etc/gitlab/gitlab.rb中添加或修改以下参数(以Gmail SMTP为例):
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your-email@gmail.com"
gitlab_rails['smtp_password'] = "your-email-password"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = "your-email@gmail.com" # 发件人地址
gitlab_rails['gitlab_email_reply_to'] = "noreply@example.com" # 回复地址
注意:若使用Gmail,需开启“允许不够安全的应用”或生成应用专用密码(推荐)。配置完成后执行sudo gitlab-ctl reconfigure生效。
默认情况下,GitLab的仓库数据存储在/var/opt/gitlab/git-data/repositories。若需更改存储位置,可通过git_data_dirs参数设置:
sudo vim /etc/gitlab/gitlab.rb
添加或修改以下内容(例如将仓库数据迁移到/mnt/git-data):
git_data_dirs({ "default" => { "path" => "/mnt/git-data" } })
注意:若/mnt/git-data目录不存在,需提前创建并授权(sudo mkdir -p /mnt/git-data && sudo chown -R git:git /mnt/git-data)。修改后需执行以下步骤使配置生效:
sudo gitlab-ctl stop
sudo gitlab-ctl reconfigure
sudo gitlab-ctl start
若目录中已有数据,需通过rsync命令迁移(sudo rsync -av /var/opt/gitlab/git-data/repositories /mnt/git-data/)。
nginx['listen_port']参数:nginx['listen_port'] = 9090
external_url 'http://your-server-ip:9090' # 同步修改external_url
gitlab_shell['ssh_port']参数:gitlab_shell['ssh_port'] = 2222
修改后执行sudo gitlab-ctl reconfigure生效,并确保防火墙开放新端口(sudo ufw allow 9090/tcp或sudo ufw allow 2222/tcp)。
GitLab默认使用Let’s Encrypt签发免费SSL证书,证书有效期为90天。可通过以下参数设置自动续订时间(例如每月1日凌晨2点30分续订):
letsencrypt['auto_renew_hour'] = "2"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "1"
若需禁用自动续订,可设置letsencrypt['auto_renew'] = false。修改后执行sudo gitlab-ctl reconfigure生效。
若不需要某些组件(如Prometheus监控、Grafana仪表盘、Alertmanager告警),可禁用它们以减少资源占用:
prometheus['enable'] = false
grafana['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
修改后执行sudo gitlab-ctl reconfigure生效。
/etc/gitlab/gitlab.rb(sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak)。sudo gitlab-ctl tail查看实时日志定位问题。