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時のリポジトリがないよ的なエラーは未解決です。
そちらもちょっと試してたのですが、サクッと解決できなかったため一旦置いています。実は問題ないんじゃないの、って思ってますがどうなんでしょうか。
自分が何か入れようとして最新を取得すると、だいたいつい最近メジャーバージョン上がったんだよねってなってて参考サイトがないこととが多々あります。
間が悪いですね。