CentOS7にGitLab 9をインストールして日本語化

最近CentOS7にGitLabを入れて、日本語化してみました。
最近9が出たようで、あまり参考になるサイトもなく、詰まるポイントもあったため手順を記録します。

結論としては、ポイントは以下の3つでした。
・npm install
・bundle exec rake assets:precompile RAILS_ENV=production
・bundle exec rake webpack:compile RAILS_ENV=production

また今回インストールしたのはGitLab9.0.5になります。

GitLab9のインストール

基本的に公式サイトの手順に従うだけで完了します。

# これによりruby, postgres, nginx全てまとめてインストール、セットアップされる。
$ curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
$ yum install gitlab-ce

       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.

...
インストール:
  gitlab-ce.x86_64 0:9.0.5-ce.0.el7

完了しました!

これだけでいいの?  と思いますが、これだけでOKです。
ソースから入れたり、既存のnginxを利用したいなどあると思いますがその場合にはインストール後の設定で対応可能なようです。

GitLab初期設定

私もまだ構築中なので、設定そのものは参考程度に留めていただいた方が良いと思います。

# 手探りで初期設定。mail, https設定など不足。unicorn, redisは正直不明。デフォルトを利用するようにだけしてみたつもり
$ cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.org
$ vi /etc/gitlab/gitlab.rb
$ diff /etc/gitlab/gitlab.rb.org /etc/gitlab/gitlab.rb
13c13
< external_url 'http://hogehoge'
---
> external_url 'http://hogehoge.com'
40a41
> gitlab_rails['time_zone'] = 'Asia/Tokyo'
518c519
< # unicorn['worker_timeout'] = 60
---
> unicorn['worker_timeout'] = 60
521c522
< # unicorn['worker_processes'] = 2
---
> unicorn['worker_processes'] = 2
524,529c525,530
< # unicorn['listen'] = '127.0.0.1'
< # unicorn['port'] = 8080
< # unicorn['socket'] = '/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket'
< # unicorn['pidfile'] = '/opt/gitlab/var/unicorn/unicorn.pid'
< # unicorn['tcp_nopush'] = true
< # unicorn['backlog_socket'] = 1024
---
> unicorn['listen'] = '127.0.0.1'
> unicorn['port'] = 8080
> unicorn['socket'] = '/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket'
> unicorn['pidfile'] = '/opt/gitlab/var/unicorn/unicorn.pid'
> unicorn['tcp_nopush'] = true
> unicorn['backlog_socket'] = 1024
578,581c579,582
< # postgresql['enable'] = true
< # postgresql['listen_address'] = nil
< # postgresql['port'] = 5432
< # postgresql['data_dir'] = "/var/opt/gitlab/postgresql/data"
---
> postgresql['enable'] = true
> postgresql['listen_address'] = nil
> postgresql['port'] = 5432
> postgresql['data_dir'] = "/var/opt/gitlab/postgresql/data"
655,656c656,657
< # redis['enable'] = true
< # redis['username'] = "gitlab-redis"
---
> redis['enable'] = true
> redis['username'] = "gitlab-redis"
660,661c661,662
< # redis['uid'] = nil
< # redis['gid'] = nil
---
> redis['uid'] = nil
> redis['gid'] = nil
722c723
< # nginx['enable'] = true
---
> nginx['enable'] = true
752c753
< # nginx['listen_addresses'] = ['*', '[::]']
---
> nginx['listen_addresses'] = ['*', '[::]']


# 設定を有効化
$ gitlab-ctl reconfigure

# 状態の確認
$ gitlab-ctl status
run: gitaly: (pid 12284) 26s; run: log: (pid 11807) 65s
run: gitlab-monitor: (pid 12336) 24s; run: log: (pid 12238) 38s
run: gitlab-workhorse: (pid 12296) 25s; run: log: (pid 11858) 63s
run: logrotate: (pid 12000) 55s; run: log: (pid 11999) 55s
run: nginx: (pid 11958) 57s; run: log: (pid 11957) 57s
run: node-exporter: (pid 12113) 47s; run: log: (pid 12112) 47s
run: postgres-exporter: (pid 12324) 24s; run: log: (pid 12195) 40s
run: postgresql: (pid 11522) 110s; run: log: (pid 11521) 110s
run: prometheus: (pid 12308) 25s; run: log: (pid 12070) 49s
run: redis: (pid 11410) 121s; run: log: (pid 11409) 121s
run: redis-exporter: (pid 12155) 41s; run: log: (pid 12154) 41s
run: sidekiq: (pid 11760) 71s; run: log: (pid 11759) 71s
run: unicorn: (pid 11705) 73s; run: log: (pid 11704) 73s

# ポートの開放。私はhomeで接続元許可とかしてるのでhomeに追加。
# 公開サーバであればzoneはpublicか未指定で。
$ firewall-cmd --add-service=http --zone=home --permanent
success

GitLab日本語化

続いてGitLabの日本語化を行なっていきます。
ここからが問題になる場所で、日本語化途中にある assets:precompile が上手くいかないのです。
GitLab9自体が出たばかりで日本での報告はまだあまり見ませんが、海外ではいろいろとお話がされていました。

また日本語化パッチはまだ9.0.4までしか出ていないため、一部不具合が出るかもしれませんが現状特に問題なく日本語化できているっぽくもあります。

パッチの適用

まずはパッチの適用を行なっていきます。
nodeを7.7.4でインストールしているのは、海外のフォーラムで「私は7.7.4で動いたわ」っていうコメントを見かけたからになります。
おそらく最新で問題ないです。

# パッケージ準備
$ yum remove nodejs
$ yum install gcc-c++ git
$ cd /usr/local/src/
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.26.1/install.sh | bash
$ source ~/.bashrc
$ nvm install v7.7.4

# パッチファイルを取得
$ wget https://raw.githubusercontent.com/ksoichiro/gitlab-i18n-patch/master/patches/v9.0.4/app_ja.patch

# patchコマンドをインストール
$ yum install patch

# 日本語パッチの適用
$ cd /opt/gitlab/embedded/service/gitlab-rails/
$ patch -p1 < /usr/local/src/app_ja.patch

assets:precompile

問題のassetsのprecompileです。
どうやら最新のgitlabだとprecompile前に
「/opt/gitlab/embedded/service/gitlab-rails/」のフォルダでnpm installしないといけないみたいです。
これを行わないとモジュールが不足しているためコンパイルできないという旨のエラーにハマります。

またさらに、ここで正常にコンパイルが成功してもGitLabは500エラーになっていました。
ログを見るとwebpackがどうこう言っていたので、そちらもコンパイルしてあげると、ちゃんと日本語化されて起動できます。

# 再コンパイルのために必要なnode_modulesを取得
# 一部エラーが出るが無視
$ npm install

# 起動済みのため再コンパイル
$ rm -rf public/assets
$ export PATH=/opt/gitlab/embedded/bin:$PATH
$ bundle exec rake assets:precompile RAILS_ENV=production

# precompileのみだと起動後にwebpackが云々でエラーになるのでこちらのコンパイルも行う
$ bundle exec rake webpack:compile RAILS_ENV=production
$ gitlab-ctl reconfigure
$ gitlab-ctl restart

感想

今回は無駄に時間がかかってしまったことと、npm install時のリポジトリがないよ的なエラーは未解決です。
そちらもちょっと試してたのですが、サクッと解決できなかったため一旦置いています。実は問題ないんじゃないの、って思ってますがどうなんでしょうか。

自分が何か入れようとして最新を取得すると、だいたいつい最近メジャーバージョン上がったんだよねってなってて参考サイトがないこととが多々あります。
間が悪いですね。