温馨提示×

GitLab在Linux上的数据库怎么配置

小樊
37
2025-11-30 19:24:06
栏目: 智能运维

Linux 上 GitLab 数据库配置指南

一 前置说明与总体思路

  • 使用 Omnibus 包安装时,GitLab 默认自带并启用 PostgreSQL,数据库与应用在同一台机器,配置集中在 /etc/gitlab/gitlab.rb,修改后执行 gitlab-ctl reconfigure 使配置生效。不要直接编辑由模板生成的 /var/opt/gitlab/gitlab-rails/etc/database.yml,否则会被覆盖。若需对接外部数据库,只需在 gitlab.rb 中关闭内置 PostgreSQL 并填写外部库连接信息即可。

二 方案一 使用内置 PostgreSQL(默认)

  • 安装 GitLab(以 Ubuntu/Debian 为例,其他发行版替换包管理命令即可):
    • 安装仓库与软件包:
      • curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
      • sudo apt-get install -y gitlab-ce
  • 基本配置与初始化:
    • 编辑 /etc/gitlab/gitlab.rb,设置外部访问地址(示例):external_url ‘http://your_server_ip’
    • 使配置生效:sudo gitlab-ctl reconfigure
    • 启动服务:sudo gitlab-ctl start
  • 如需手动创建数据库与用户(可选,Omnibus 通常会自动初始化):
    • sudo -u postgres psql -c “CREATE DATABASE gitlab;”
    • sudo -u postgres psql -c “CREATE USER gitlab WITH PASSWORD ‘your_password’;”
    • sudo -u postgres psql -c “ALTER ROLE gitlab SET client_encoding TO ‘utf8’;”
    • sudo -u postgres psql -c “ALTER ROLE gitlab SET default_transaction_isolation TO ‘read committed’;”
    • sudo -u postgres psql -c “ALTER ROLE gitlab SET timezone TO ‘UTC’;”
  • 验证与连接信息查看:
    • 查看自动生成的数据库配置:cat /var/opt/gitlab/gitlab-rails/etc/database.yml
    • 进入数据库命令行:sudo -u gitlab-psql psql -d gitlabhq_production
    • 健康检查:sudo gitlab-rake gitlab:check SANITIZE=true --trace
    • 备份默认目录:/var/opt/gitlab/backups

三 方案二 使用外部 PostgreSQL(生产推荐)

  • 准备外部 PostgreSQL(建议与 GitLab 应用分离部署),创建数据库与用户(示例):
    • CREATE DATABASE gitlabhq_production OWNER gitlab;
    • CREATE USER gitlab WITH PASSWORD ‘StrongPassword!’;
    • 允许应用服务器网段访问(示例):host gitlabhq_production gitlab 192.168.1.0/24 md5(写入 pg_hba.conf)
  • 配置 GitLab 连接外部库(/etc/gitlab/gitlab.rb):
    • 关闭内置数据库:postgresql[‘enable’] = false
    • 填写连接信息:
      • gitlab_rails[‘db_adapter’] = ‘postgresql’
      • gitlab_rails[‘db_encoding’] = ‘unicode’
      • gitlab_rails[‘db_database’] = ‘gitlabhq_production’
      • gitlab_rails[‘db_username’] = ‘gitlab’
      • gitlab_rails[‘db_password’] = ‘StrongPassword!’
      • gitlab_rails[‘db_host’] = ‘10.0.0.10’ # 外部数据库地址
      • gitlab_rails[‘db_port’] = 5432
    • 使配置生效:sudo gitlab-ctl reconfigure
  • 安全与网络要点:
    • 仅开放数据库端口(默认 5432)给应用服务器所在网段,使用强口令与最小权限
    • 如启用 SSL,配置 gitlab_rails[‘db_sslmode’] 并在数据库侧配置证书。

四 方案三 使用外部 MySQL(不推荐,需额外步骤)

  • 安装并初始化 MySQL,创建数据库与用户(字符集需支持 utf8mb4):
    • CREATE DATABASE gitlab_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    • CREATE USER ‘gitlab_user’@‘app_ip’ IDENTIFIED BY ‘StrongPassword!’;
    • GRANT ALL PRIVILEGES ON gitlab_db.* TO ‘gitlab_user’@‘app_ip’;
  • 配置 GitLab(/etc/gitlab/gitlab.rb):
    • 关闭内置数据库:postgresql[‘enable’] = false
    • 填写连接信息:
      • gitlab_rails[‘db_adapter’] = ‘mysql2’
      • gitlab_rails[‘db_encoding’] = ‘utf8’
      • gitlab_rails[‘db_database’] = ‘gitlab_db’
      • gitlab_rails[‘db_username’] = ‘gitlab_user’
      • gitlab_rails[‘db_password’] = ‘StrongPassword!’
      • gitlab_rails[‘db_host’] = ‘10.0.0.11’
      • gitlab_rails[‘db_port’] = 3306
    • 使配置生效:sudo gitlab-ctl reconfigure
  • 注意:MySQL 支持在 GitLab 中属于“可用但非默认”,相较 PostgreSQL 配置更复杂、升级与维护成本更高,官方文档更偏向 PostgreSQL,生产环境建议优先使用 PostgreSQL。

五 常见问题与运维要点

  • 配置生效方式:修改 /etc/gitlab/gitlab.rb 后必须执行 gitlab-ctl reconfigure;不要直接改 database.yml,该文件由模板生成,手动修改会被覆盖。
  • 连接失败排查:核对数据库地址、端口、用户名、密码;检查数据库监听地址与 pg_hba.conf / 防火墙 是否允许应用服务器访问(PostgreSQL 默认 5432,MySQL 默认 3306)。
  • 初始化与升级:首次接入外部库可能需要执行数据库迁移(如 sudo gitlab-rake db:migrate),或设置 gitlab_rails[‘auto_migrate’] = true 在启动时自动迁移;升级前做好全量备份(默认备份目录 /var/opt/gitlab/backups)。
  • 高可用与扩展:数据库与应用分离、使用连接池(如 PgBouncer)、合理设置连接数、开启 SSL/TLS、定期监控与备份,是生产环境的关键实践。

0