Help us understand the problem. What is going on with this article?

Omnibus Gitlab(CE)をMySQLで動かす

More than 3 years have passed since last update.

この記事は

  • Omnibus Gitlab(CE)はOSのパッケージでインストールできるのでとても楽ですが、組み込みのDBはPostgres固定です
  • ただしMySQLサーバを自分で立てれば、使うことはできるようなのでやってみました

前提

  • Ubuntu14で試しました
  • MySQL及び諸々ビルド関連のパッケージはインストール済みとします
    • mysql -u rootで入れる状態とします(気になる人はちゃんとユーザ作ってください)
    • my.cnfにutf8関連の設定を入れておきます

手順詳細

Omnibus Gitlab(CE)のインストール

gitlab.rbの編集

  • DBクライアントをmysqlにするためにgitlab.rbを下記のように編集します
/etc/gitlab/gitlab.rb
gitlab_rails['db_adapter'] = "mysql2"
gitlab_rails['db_encoding'] = "utf8"
gitlab_rails['db_database'] = "gitlabhq_production"
gitlab_rails['db_username'] = "root"
gitlab_rails['db_password'] = nil
gitlab_rails['db_host'] = "127.0.0.1"
gitlab_rails['db_port'] = 3306
postgresql['enable'] = false

databaseの作成

  • databaseを作っておきます
mysql -u root -e "create database gitlabhq_production default character set utf8"

mysql2のビルド

  • 下記の手順で先にmysql2 gemをビルドしておきます
cd /opt/gitlab/embedded/bin/ # use the gem binary package builded
./gem install mysql2 -- --with-mysql-lib=/usr/lib64/mysql

bundler設定ファイルの変更

  • bundle installの時のwithoutオプションを変更しpostgresを指定(mysqlを消去)します
/opt/gitlab/embedded/service/gitlab-rails/.bundle/config
---
BUNDLE_RETRY: "5"
BUNDLE_PATH: "/opt/gitlab/embedded/service/gem"
BUNDLE_JOBS: "9"
BUNDLE_WITHOUT: "development:test:postgres"
BUNDLE_DISABLE_SHARED_GEMS: "true"
  • bundle installの実行をします
cd /opt/gitlab/embedded/service/gitlab-rails
/opt/gitlab/embedded/bin/bundle install
  • ただこの修正はgitlabのパッケージをアップデートするたびにリバートしてしまうので毎回実施する必要があるとか
    • 微妙だなぁ。。

Gitlabのリビルド

  • Chefを動かしてリビルドします
gitlab-ctl reconfigure
gitlab-ctl restart
gitlab-rake gitlab:setup

完了!

終わりに

  • bundlerのwithout設定はアップデートの都度に入れ直さなくてはならないところが相当微妙だなぁと思いました
  • Gemfileの中でわざわざgroup作ってmysql2 gemをよけてるんだけど別によけないで入れておけばいいのにとか思いました

参照

shouta-dev
Railsが大好き!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away