LoginSignup
40
44

More than 5 years have passed since last update.

AWS上でGitLabを運用する(ELB+EC2)

Posted at

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.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上に構築出来ました。

40
44
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
40
44