LoginSignup
4
5

More than 5 years have passed since last update.

さくらVPSのUbuntuにGitLabを入れて初期設定するまで

Last updated at Posted at 2018-08-23

はじめに

さくらのVPSにカスタムOSインストールでUbuntu 18.04を入れた環境に、GitLabをインストールするために必要な初期設定についてまとめました。

さくらのVPSは、スタートアップスクリプト機能でGitLabをインストールする機能がありますが、これを使ってGitLabをインストールした場合、OSがCentOSになります。今回はOSにUbuntuを使いたかったので、手順をまとめました。

ポイントだけ書くと

  1. インストール前にデフォルトの LANG を en_US.UTF-8 にしておく
  2. インストール後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は以下のように編集しました。

/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
  1. Locales to be generated: で、 en_US.UTF-8 にチェックを入れます。
  2. Default locale for the system environment: で、en_US.UTF-8 を選択します。
  3. 念のため、一回再起動します。

参考情報

前提ソフト入れる

ここから、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を以下のように編集します。

/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 を追加します。

/etc/gitlab/gitlab.rb
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を動かすための基本的設定は完了です。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5