GitLab を AWS上で動かしたい!
GitHubをいろいろな理由で使えない環境の方は、GitHub CloneにGitLabを使用している人も多いかと思います。
運用を考えると、AWS上に構築したいですよね。
ELB + EC2 の注意点
今回は、AWS上にGitLabを構築する手順を紹介します。
httpsでアクセスさせたいので、フロントにELBを置いて運用したいと思います。
ただ、この構成の場合、SSHでのアクセスには22番を使うことができないため、割り切りが必要になります。
SSHを使用したい人は、ELBを使って22番以外のポートを使えるようにするか、ELBを置かないほうが良いかと思います。
私は、httpsのみ公開すればよいと考えているため、ELB をフロントに置きました。
※ELBを使わず、SSLを設定するにはEC2側に証明書をインストールしNginxの設定を行えば行けます
EC2 上に GitLab を構築する
GitLab | Package downloads for GitLab CE
※私は7.1.1を使用したので、多少異なる場合がありますのでご注意ください
事前準備を行う
curl -O https://downloads-packages.s3.amazonaws.com/centos-6.5/gitlab-7.3.1_omnibus-1.el6.x86_64.rpm
sudo yum -y install openssh-server
sudo yum -y install postfix
sudo service postfix start
sudo chkconfig postfix on
sudo rpm -i gitlab-7.3.1_omnibus-1.el6.x86_64.rpm
ドメイン名を変更する
sudo -e /etc/gitlab/gitlab.rb
ディフォルトで設定しているエディタが立ち上がるかと。
ここに、EC2のパブリックDNS名を設定します。
※ELBは後で追加しますので、まずはEC2で確認を行います。
ビルド&インストールを行う
gitlab-ctl reconfigure
gitlab-ctl start
動作確認を行う
httpでアクセスしてみてください。
Username: root
Password: 5iveL!fe
アクセス出来ない場合は、SecurityGroupを確認し、80番を許可するようにしてください。
SSLの設定を行う
sudo -e /etc/gitlab/gitlab.rb
ELBのDNSを設定します。
ビルド&インストールを行う
gitlab-ctl reconfigure
gitlab-ctl restart
reconfigureは必要ないかもしれませんが、一応。
ELBを準備する
ヘルスチェックのURLは /users/sign_in
を指定すると良いと思います。
ELBの80番をEC2の80番に転送します。
ELB経由でアクセスの確認を行ってください。
EC2のセキュリティグループを変更する
EC2側のセキュリティグループは現在以下のようになっているかと思います。
80 0.0.0.0/0
こちらを、ELBからのアクセスのみ許可するように変更します。
以上でセキュリティグループの設定は修了です。
ELBに証明書を設定する
ELBのListenersから 443番を追加します。
SSL Certificateのリンクをクリックし、証明書をインストールしてください。
(オレオレ証明書でも構いません)
443番からはEC2インスタンスの80番へと転送します。
GitLabに設定を行う
gitlab.ymlを修正します。 sudo vi /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
## GitLab settings
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
host: xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com
port: 443
https: true
gitlab-http.conf を修正します。 sudo vi /var/opt/gitlab/nginx/etc/gitlab-http.conf
# proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Proto https ;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Frame-Options SAMEORIGIN;
X-Forwarded-Proto を https に変更します。
設定を反映
gitlab-ctl restart
これでhttps経由でアクセスが可能になりました。
最後に
httpsでの動作確認がとれたら、ELBの80番ポートを閉じてしまいましょう。
クライアントの設定(おまけ)
オレオレ証明書の場合、クライアントからGitLabに接続を行おうとするとエラーになります。
オレオレ証明書を許可して上げる必要があります。やり方は2つありますが、今回は全体的にオレオレ証明書を許可してみます。
git config --global http.sslverify false
これで、オレオレ証明書でも怒られないようになります。
とても簡単?にAWS上に構築出来ました。