Apache+gitlabをSubDomainで構築

サブドメインでgitlab環境を構築する方法をまとめる。サブドメインで構築するとavatarのicon問題は発生しないの。…というかicon問題が完全に解決しないことに対するある意味逃げです。はい。

今回の挙動は以下を目指します。一応、前提環境はCentOS 6.5とします。DebianやUbuntuでも問題ないけれど、その場合はyumとかを適宜置き換えてください。

  • サブドメイン gitlab.hostnameでgitlabにアクセス
  • http://gitlab.hostname/ならhttp://gitlab.hostname/へrewrite
  • https://gitlab/hostname/でgitlabのコンテンツを返す

やることはだいたい以下。

  • apacheのinstall
    • openssl、mod_sslのinstall
  • gitlabのinstallとsetup
  • httpdの設定ファイル修正

apacheの環境準備

apacheやopenssl、mod_sslが入っている場合、ここは無視。そうでない場合はyumでinstall。

dependencyを見るとyum install mod_sslだけでも行けそうな気がする、けれど試したことはない。

gitlabのinstall

gitlabからダウンロードしてインストール。ここではPackage Installの方法を前提とする。お勧めされているしお手軽。

/etc/gitlab/gitlab.rbを修正する。修正は一行。external_urlにgitlabのurlを指定する。今回は4080番ポートにした。

修正が終わればgitlab-ctl reconfigureを実行。

httpd.confの修正

やっと本題。gitlabに繋ぐときは必ずsecure通信させる。とくにその必要がない場合についても記載する。

httpからhttpsへのredirect設定

httpdの設定ファイルは/etc/httpd/conf以下または/etc/httpd/conf.d以下にある。/etc/httpd/conf/httpd.confファイルを修正する。

  • VirtualHostを使えるようにする
  • gitlab.hostnameのVirtualHostを作る
  • gitlab.hostnameの場合はhttp→httpsへredirectさせる

まず NameVirtualHostを有効にし、http://hostname/とhttp://gitlab.hostname/のVirtualHostを用意した。

http://hostname/にアクセスると/var/www/html以下のファイルにアクセスする。

http://gitlab.hostname/にアクセスするとmod_rewriteによりhttps://gitlab.hostname/へredirectする。あまり意味はないかもしれないが、gitlab.hostnameにアクセスした場合はgitlab.hostname-*_logファイルに出力するようにしている。

httpsからgitlab(http://localhost:4080)へ

https://gitlab.hostname/へアクセスした場合は内部的にhttp://localhost:4080/へアクセス、gitlabのコンテンツを取得しクライアントへ返す。いわゆるReverseProxyの設定をする。

yum install mod_sslで環境を構築した場合は/etc/httpd/conf.d/ssl.confにssl向けのapacheの設定ファイルがある。

NameVirtualHostの設定で*:443を指定することで443番ポートでVirtualHostが有効になる。

ServerNameにgitlab.hostnameを指定しgitlab.hostnameのVirtualHostを作成する。

アクセスログはgitlab.hostname:443用に出力するようにした。

証明書ファイルや秘密キーについてはopensslを使って作成する。SSLCertificateFile等に作成した証明書や秘密キーファイルへのパスを指定する。作り方は…適当に調べて作成すること。(googleで”openssl 自己証明書”で調べればすぐに出てくるかと。)

PorxyPreserveHost当たりの設定でhttp://localhost:4080/へReverseProxyするようにしている。hostsファイルにlocalhostを追加したくない場合は127.0.0.1にすること。

secureでなくてよい場合

80番ポートでのVirtualHostの設定を以下のようにし、ssl.confについては何もしない。

https://gitlab.hostname/の場合にReverseProxyだったのを、http://gitlab.hostname/の場合に変えたのみ。

以上で環境構築は終了。SubDomain動作の方がgitlabのサブディレクトリ動作を考えてよいからgitlabの初期設定の面倒くささもないし、avatar問題も解決できる利点がある。一方で自己証明書をサブドメイン毎に作成しないといけない面倒臭さもある。所詮自己証明書なのでエラーの内容は気にしないなんてのもありではある。

では。