GitLab+SSL+Apacheのインストールから設定まで

2014/08/28追記:最新版はこちら⇒GitLab+SSL+Apacheのインストールから設定まで(update 1)

 

2014/08/26 追記:大幅に更新しました。ReverseProxy先にhttpsを指定する旨みがないからhttpsをやめた、など。

自宅環境だとあんまりありがたみはないのだけれど、他の環境で構築するとき等々のためにノウハウだけでも溜め込んどこうかと思い立ったわけですよ。環境はCentOS6.5 64bit。今日CentOSのサイトに行ってみると7.0が出ていて、試しで入れてみたけれどマシンスペックが悪いのか安定しなかったので7.0では断念。
では、さっそく。

大まかな手順

  1. GitLabインストール
  2. GitLab設定
  3. apache設定

GitLabのインストール

GitLabのサイトからDownloadページに移動し、インストール環境を選択すると方法が出てきます。現時点でのCentOS6.5ならこんなのが出てくる。openssh-serverやらpostfixやらもinstallしてるけれど、ほとんどの環境では入っていると思うのでオフライン環境でもあまり問題にはならないかな、と。

DownloadページのOS一覧にはRHELがないけれど、ものはrpmなのでもちろんインストールできます。(RHELで実証済。)

インストールすると以下の文面が表示される。設定するならreconfigureしてねとのこと。

 GitLabの設定

設定をするのでsudo gitlab-ctl reconfigureを実行。ちなみにgitlab-ctlはgitlabを開始したり停止などが可能。パラメータについてはgitlab-ctlでとりあえず実行すれば簡単なHelpみたいなものがでる。

gitlab-ctl reconfigureを実行すると設定内容にしたがって/opt/gitlab以下や/var/opt/gitlab以下のファイルを適切な内容に買えてくれます。元になるファイルは/etc/gitlab/gitlab.rbなのでまずはこれを設定。

初期段階ではexternal_urlしかないが、ここにいろいろな設定を書き込んでいく。

SSLアクセスの設定

Enable HTTPSの章に設定内容が記載されている。ただしFront側にApache等がいてReverseProxyの先とするならば特にする必要はないかと。今回は最終的にapacheで443ポートを使いたいのでSSLの設定をする必要はないのだけれど一応記載しておく。

gitlabの入口はexternal_urlで指定する。httpsならURLもそうすること。下の例はhttpアクセスした場合はhttpsへredirectするようにredirect_http_to_httpsをtrueにし、httpの受付ポートを8000に設定した。

次に証明書と秘密キー。Defaultではetc/gitlab/ssl以下のcrtやkeyファイルが指定されておりファイル名はFQDN(host名.ドメイン)になっている。reconfigureした際に出力するnginxの設定内容が以下。

このパスでよければ何もしなくてよいが、初期状態ではこの位置に証明書も秘密キーも作られていないので作っておくこと。

証明書や秘密キーのパスの変更は次の書式でいける。もちろん書き込むファイルはgitlab.rb。

サブディレクトリ運用のための設定

初期設定のままだとhttp://<FQDN>/でgitlabにつながるが、これをhttp://<fqdn>/gitlabに変更する。

以下を修正する前に必ずgitlab-ctl reconfigureを実行し設定内容を変更しておくこと。以下の修正内容のほとんどがreconfigureを行うと消えてしまうものである。reconfigureが必要な修正をやり残していないかを確認すること。

変更方法については/opt/gitlab/embedded/service/gitlab-rails/config/application.rbの「Relative url support」あたりに書かれている。

変更したファイルの場所は以下の通り。

  • /opt/gitlab/embedded/service/gitlab-rails/config/application.rb
  • /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
  • /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
  • /var/opt/gitlab/gitlab-shell/config.yml
  • /var/opt/gitlab/nginx/etc/gitlab-http.conf

/gitlabに変更したものの静的なファイルの位置が変わっていないのでこれらを変えることにしましょう。

webページとしてのコンテンツは/opt/gitlab/embedded/service/gitlab-rails/publicにある。ついでに言うと、ここがコンテンツのルートディレクトリ。これらをgitlabにコピーする。

ここまで修正したらgitlab-ctl startを実行し指定したURLでつながるかを確認。

apacheの設定

apacheを80/443ポートで稼働させ、/gitlabだった場合はReverseProxyとして動くように設定する。

/etc/httpd/conf/httpd.confや/etc/httpd/conf.d以下にあるconfファイルがapacheが読み込む設定ファイルになる。今回行った設定は以下のようにした。

80ポート側の設定。

443ポート側の設定。/etc/gitlab/gitlab.rbのexternal_urlがhttp://gitlab.example.com:8000と設定したときを想定した内容にしている。

URIがhttp://<FQDN>/gitlabならhttps://<FQDN>/gitlabへRedirectし、https://<FQDN>/gitlabで受け取ったときはReverseProxyとしてhttp://127.0.0.1:800/gitlabのコンテンツを取得する。この時、8000版ポートはFirewallなどで外から見えないようにしておくこと。

apacheのconfの設定としてはこれで以上だが、このまま実行するとエラーが発生しつなげない場合がある。

(13)Permission denied: proxy: HTTPS: attempt to connect to 127.0.0.1:4443 (*) failed

原因はconnectionを貼る権限がなくて接続に失敗したよ、っといったもの。以下のコマンドを実行することで接続できるようになる。

1つ目は現在の状態において値を変更する。ただし、再起動をすると状態が戻る。状態を恒久的にするには-Pをつけることで再起動後も設定を反映するこができる。

設定は以上になる。あとはhttpdとgitlabを開始し初期設定等々を行えばいい。

まだ最適化するところがある。が、ひとまずここらへんで。

以下、参考にしたサイト。