はじめに
さくらのVPSにカスタムOSインストールでUbuntu 18.04を入れた環境に、GitLabをインストールするために必要な初期設定についてまとめました。
さくらのVPSは、スタートアップスクリプト機能でGitLabをインストールする機能がありますが、これを使ってGitLabをインストールした場合、OSがCentOSになります。今回はOSにUbuntuを使いたかったので、手順をまとめました。
ポイントだけ書くと
- インストール前にデフォルトの LANG を
en_US.UTF-8
にしておく - インストール後alertmanagerが再起動を繰り返すのが気になるようなら設定をする
環境
- さくらのVPS 8Gプラン(メモリ8GB、SSD 200GB)
- カスタムOSインストールで、Ubuntu 18.04 amd64をインストール済み
初期設定の流れ
etckeeper入れる(任意)
etckeeperを入れておくと、/etcの変更履歴を記録できて便利です。
$ sudo apt install git etckeeper
ufw有効(任意)
ufwで最低限のファイアウォールの設定をしておくと安心です。
(私はここでTCP Wrappersの設定もしています。)
$ sudo ufw enable
$ sudo ufw allow 22/tcp
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
NTP入れる
NTPを使って時間を合わせておくのは大切です。
$ sudo apt install ntp
$ sudo vi /etc/ntp.conf
/etc/ntp.confは以下のように編集しました。
# デフォルトで有効になっているpoolはコメントアウトして、さくらのNTPサーバーを追加
server ntp1.sakura.ad.jp iburst
編集後、ntpを再起動します。
$ sudo systemctl restart ntp
デフォルトのLANGを変える
デフォルトのLANGがen_USになっているのを、en_US.UTF-8に変更します。
これをやらないと、GitLabのインストーラーで止まってしまいます。
$ sudo dpkg-reconfigure locales
-
Locales to be generated:
で、en_US.UTF-8
にチェックを入れます。 -
Default locale for the system environment:
で、en_US.UTF-8
を選択します。 - 念のため、一回再起動します。
参考情報
前提ソフト入れる
ここから、GitLabのインストール手順に従っていきます。
最初に、インストールの前提となるソフトをインストールします。
$ sudo apt-get install -y curl openssh-server ca-certificates
$ sudo apt-get install -y postfix
GitLab入れる
GitLabのインストール手順に従って、GitLabのリポジトリ追加とパッケージをインストールします。
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
# EXTERNAL_URLのところは、GitLabを動かすURLにします
$ sudo EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ee
インストールが終わったら、URLを開いてrootパスワードをセットしましょう。
SSLを設定する
インストールが終わってrootパスワードもセットしたら、まずはLetsEncryptでSSL化します。
公式ドキュメントの設定手順はこちらです。
$ sudo vi /etc/gitlab/gitlab.rb
/etc/gitlab/gitlab.rbを以下のように編集します。
external_url 'https://gitlab.example.com' # SSLでアクセスするURL
letsencrypt['contact_emails'] = ['user@example.com'] # 連絡先のメールアドレス
編集が終わったら、GitLabに設定を反映します。
$ sudo gitlab-ctl reconfigure
alertmanagerがdownにならないよう設定する
ここまでの手順で、GitLabを使う上では全く問題ない状況になったのですが、 gitlab-ctl status
を実行すると、alertmanagerが動いていません。
$ sudo gitlab-ctl status
down: alertmanager: 0s, normally up, want up; run: log: (pid 19719) 2592s
run: crond: (pid 13672) 705s; run: log: (pid 13665) 705s
run: gitaly: (pid 19371) 2602s; run: log: (pid 19476) 2601s
run: gitlab-monitor: (pid 19404) 2602s; run: log: (pid 19427) 2601s
run: gitlab-workhorse: (pid 19351) 2603s; run: log: (pid 19437) 2601s
run: logrotate: (pid 18548) 2668s; run: log: (pid 19439) 2601s
run: nginx: (pid 13625) 707s; run: log: (pid 19438) 2601s
run: node-exporter: (pid 18707) 2656s; run: log: (pid 19477) 2601s
run: postgres-exporter: (pid 19701) 2593s; run: log: (pid 19860) 2592s
run: postgresql: (pid 18236) 2744s; run: log: (pid 19407) 2602s
run: prometheus: (pid 19441) 2601s; run: log: (pid 19566) 2600s
run: redis: (pid 18171) 2750s; run: log: (pid 19406) 2602s
run: redis-exporter: (pid 18816) 2643s; run: log: (pid 19428) 2601s
run: sidekiq: (pid 13327) 726s; run: log: (pid 19409) 2602s
run: unicorn: (pid 13933) 691s; run: log: (pid 19408) 2602s
alertmanagerのログを見ると、advertise addressを設定するために、サーバーに割り当てられたプライベートアドレスを取得しようとして、失敗して再起動を繰り返しています。
$ sudo gitlab-ctl tail alertmanager
2018-08-13_11:20:00.37489 level=info ts=2018-08-13T11:20:00.374687126Z caller=main.go:174 msg="Starting Alertmanager" version="(version=0.15.0, branch=master, revision=91e87a5dd46b21a585f1a83ba5bb2127531b46a6)"
2018-08-13_11:20:00.37492 level=info ts=2018-08-13T11:20:00.374810584Z caller=main.go:175 build_context="(go=go1.10.3, user=GitLab-Omnibus, date=2018-07-31T00:11:18+00:00)"
2018-08-13_11:20:00.39205 level=info ts=2018-08-13T11:20:00.391898083Z caller=cluster.go:155 component=cluster msg="setting advertise address explicitly" addr=<nil> port=9094
2018-08-13_11:20:00.39285 level=error ts=2018-08-13T11:20:00.392764543Z caller=main.go:201 msg="Unable to initialize gossip mesh" err="create memberlist: Failed to get final advertise address: Failed to parse advertise address \"<nil>\""
さくらVPSだとプライベートアドレスは割り振られませんし、VPSの1台だけの環境でクラスタを組むことはないので、ここはadvertise addressに127.0.0.1(localhost)を指定してとりあえず回避します。
$ sudo vi /etc/gitlab/gitlab.rb
/etc/gitlab/gitlab.rbを以下のように編集し、alertmanagerの起動オプションに、 --cluster.advertise-address=127.0.0.1:9094
を追加します。
alertmanager['flags'] = {
'cluster.advertise-address' => '127.0.0.1:9094'
}
編集が終わったら、GitLabに設定を反映します。
$ sudo gitlab-ctl reconfigure
これで、alertmanagerもrunになりました。(意味があるかは別問題ですが)
$ sudo gitlab-ctl status
run: alertmanager: (pid 27012) 298s; run: log: (pid 19719) 7802s
run: crond: (pid 13672) 5915s; run: log: (pid 13665) 5915s
run: gitaly: (pid 19371) 7812s; run: log: (pid 19476) 7811s
run: gitlab-monitor: (pid 19404) 7812s; run: log: (pid 19427) 7811s
run: gitlab-workhorse: (pid 19351) 7813s; run: log: (pid 19437) 7811s
run: logrotate: (pid 20568) 678s; run: log: (pid 19439) 7811s
run: nginx: (pid 13625) 5917s; run: log: (pid 19438) 7811s
run: node-exporter: (pid 18707) 7866s; run: log: (pid 19477) 7811s
run: postgres-exporter: (pid 19701) 7803s; run: log: (pid 19860) 7802s
run: postgresql: (pid 18236) 7954s; run: log: (pid 19407) 7812s
run: prometheus: (pid 19441) 7811s; run: log: (pid 19566) 7810s
run: redis: (pid 18171) 7960s; run: log: (pid 19406) 7812s
run: redis-exporter: (pid 18816) 7853s; run: log: (pid 19428) 7811s
run: sidekiq: (pid 13327) 5936s; run: log: (pid 19409) 7812s
run: unicorn: (pid 13933) 5901s; run: log: (pid 19408) 7812s
enjoy!
これで、さくらVPS + Ubuntu 18.04 + GitLabを動かすための基本的設定は完了です。