====== Amazon Linux 2 に Gitlab(Community Edition / Enterprise Edition)をインストール ======
サーバにインストールできる Gitlab には Community Edition(CE)と Enterprise Edition(EE)の2種類あります。\\
[[https://www.gitlab.jp/installation/ce-or-ee/|Community EditionとEnterprise Edition]]
今回行ったのは CE のインストールですが、一部コマンドを変更することで EE のインストールも可能です。
===== 必要スペック =====
必要スペックは、バージョンアップで高くなる可能性があるため、リンク先の最新情報を見ることをオススメします。
* CPU:[[https://docs.gitlab.com/ee/install/requirements.html#cpu|2コア以上推奨]]
* メモリ:[[https://docs.gitlab.com/ee/install/requirements.html#memory|8GB RAM 以上推奨]]
* スワップ:2GB 以上推奨
* ストレージ:最低 10GB(PostgreSQL で使用する分)+ Git で管理するファイル容量
ということで、無料枠の t2.micro ではスペックが足りないので、t2.large を使います。
| |vCPU|RAM(GiB)|
|t2.micro|1|1|
|t2.large|2|8|
インストールを試すだけなら t2.micro でもスワップを 8GB あてればインストールは成功しますが、動作が重く実用には耐えないかと。。。\\
※ t2.micro で Gitlab のインストール中にメモリ不足のエラーがでる場合、スワップの割り当てを増やせばインストールに成功します。
===== AWSの準備 =====
- インスタンスの作成
- AMI → Amazon Linux 2 AMI
- インスタンスタイプ → t2.large
- 終了保護の有効化(実稼働させる場合は、誤って削除するのを防ぐため)
- ストレージの追加 → 30 GB(必要に応じて増減を)
- セキュリティグループ → Webサイト用の設定を(例を下に載せてます)
- 起動
- インスタンス名 → gitlab などに
- Elastic IP の関連付け
==== セキュリティグループの設定例 ====
インバウンドルールに以下の3つ追加します。
* タイプ:HTTP → ソース:任意の場所
* タイプ:HTTPS → ソース:任意の場所
* タイプ:SSH → ソース:マイIP
【セキュリティグループの作成】後、以下のようなインバウンドルールになっていればOKです。
|タイプ|プロトコル|ポート範囲|ソース|
|HTTP|TCP|80|0.0.0.0/0|
|HTTP|TCP|80|::/0|
|HTTPS|TCP|443|0.0.0.0/0|
|HTTPS|TCP|443|::/0|
|SSH|TCP|22|マイIPアドレス|
===== Amazon Linux 2 の初期設定 =====
Gitlab インストールのために、まずは Amazon Linux 2 の初期設定を行います。
* [[サーバ:aws:サーバ構築手順:amazon_linux_2_の初期設定|Amazon Linux 2 の初期設定]]
===== Gitlab のインストール =====
公式が用意してくれている Omnibus package を使ってインストールします。\\
Gitlab を動かすのに必要な Nginx や PostgreSQL、Let's Encrypt などなどを一括管理し、インストールしてくれる凄いやつです。
(私は、初回インストール時に Apache などを予めインストールしておく必要があるのかと思い、Apache を手動インストールしてから Gitlab CE をインストールしたところ、Omnibus package が管理する Nginx と競合してエラーが発生しましたorz)
今回は Amazon Linux 2 へのインストールということで、公式マニュアルの CentOS 7 のインストール方法を参照します。\\
* [[https://www.gitlab.jp/installation/?version=ce|Community Edition のインストール方法]]
* [[https://www.gitlab.jp/installation/|Enterprise Edition のインストール方法]]
HTTP と SSH については AWS のセキュリティグループで管理しているためスキップします。\\
Postfix の設定についてもひとまずスキップします。
※ コマンド中で EXTERNAL_URL に指定している URL は、Gitlab を閲覧したい URL に書き換えてください。\\
(ドメインがない場合は IP アドレスを指定するなど)
==== Community Edition の場合 ====
# GitLab パッケージをリポジトリに追加
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
# GitLabパッケージをインストール
$ sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ce
==== Enterprise Edition の場合 ====
# GitLab パッケージをリポジトリに追加
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
# GitLabパッケージをインストール
$ sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ee
==== インストールに成功したら確認 ====
# インストールされたバージョンを確認
$ yum list installed | grep gitlab
gitlab-ce.x86_64 12.9.2-ce.0.el6 @gitlab_gitlab-ce
# ストレージの空き容量を確認
$ df -h --total
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/xvda1 30G 7.4G 23G 25% /
ブラウザでサイトにアクセスできるか確認する。\\
ブラウザキャッシュでサイトが見れないときがあるので、サイト表示されなくても Chrome のシークレットモードで開くと見れるときがある。
初回アクセス時は管理者アカウント(root)のパスワード設定画面が表示されるので、新しいパスワードを設定します。\\
これで【root / 設定したパスワード】でログインできるようになります。
==== URL の変更 ====
あとからドメインを取得した場合や、URL の設定を間違えていた場合など、URL を変更したい場合は以下の手順で変更できます。
# オプションで URL 変更
$ sudoedit /etc/gitlab/gitlab.rb
external_url="http://example.net/"
# 変更内容反映
$ sudo gitlab-ctl reconfigure
===== SSL証明書(Let's Encrypt)の設定 =====
Omnibus-GitLab は Let's Encrypt をサポートしているので、簡単に SSL証明書を導入し https を使用することができます。\\
https://docs.gitlab.com/omnibus/settings/ssl.html
$ sudoedit /etc/gitlab/gitlab.rb
external_url="http://gitlab.example.com"
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['自分のメールアドレス']
// 4日毎の午前3時0分に更新を試みる
letsencrypt['auto_renew_hour'] = 3
letsencrypt['auto_renew_minute'] = 0
letsencrypt['auto_renew_day_of_month'] = "*/4"
# 反映
sudo gitlab-ctl reconfigure
これだけで OK です。\\
あとは https でアクセスできるか確認します。
その他の設定などについては [[サーバソフトウェア:gitlab|Gitlab]] にて。