GitLabをサブディレクトリ(Subdirectory)でインストールしてWordPressと共存させる方法

Git

GitLabのGitLab CE Omnibus Packagesを使うと、ホントに簡単にGitLabをインストール出来ます。

CentOS 7にGitHubライクなオンプレミス GitLab CE (community edition) を2分でインストール・導入・構築してみた
GitのWebインターフェースを探している中で、GitWeb、Ginatraを試したのですが、イマイチでした。 ...

ただ、GitLab CE Omnibus Packagesのデフォルトでは、パッケージに同梱されているnginxで動作し、かつ、サーバーのドメイン名直下でアクセスされるように設定されるために、他のサービスと併用する扱いにくいです。

今回、CentOS 7でApacheの上でWordPressが動いているサーバーとGitLabを共存させてみました。

スポンサーリンク
スポンサーリンク

GitLabをサブディレクトリにインストールする

WS000218

ApacheとWordPressが動いているサーバーがあって、

http://aaa.bbb

で、WordPressにアクセス出来ているとします。

このサーバーにGitLab CE Omnibus Packagesをインストールすると、

http://aaa.bbb

で、GitLabを使う設定になってしまいます。

これではWordPressにアクセス出来なくなるので、GitLabをサブディレクトリの形でインストールしてみる方法を探してみます。

ちなみに、Stack Overflowでは、以下の回答がありました。

Now as far as the relative url option is concerned, this is not yet implemented in the omnibus package.

つまり、相対URLオプションは実装されていないとのことです。

ただ、なんとかサブディレクトリでインストールする方法を見つけました。

まず、Apacheを停止しておきます。

次に、GitLabをインストールしておきます。

インストール方法は以下の通りです。

CentOS 7にGitHubライクなオンプレミス GitLab CE (community edition) を2分でインストール・導入・構築してみた
GitのWebインターフェースを探している中で、GitWeb、Ginatraを試したのですが、イマイチでした。 ...

次に、GitLabを停止します。

以下の4個のファイルを書き換えます

(この情報は、

http://qiita.com/tnamao/items/a7bb1ca868b594eaf788

を参考にさせていただきました)。

/opt/gitlab/embedded/cookbooks/gitlab/templates/default/gitlab.yml.erb

を開いてコメントアウトされている以下の行を有効化します。

relative_url_root: /gitlab

/opt/gitlab/embedded/cookbooks/gitlab/templates/default/unicorn.rb.erb

を開いて末尾に以下の行を追加します。

ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab"

/opt/gitlab/embedded/cookbooks/gitlab/templates/default/gitlab-shell-config.yml.erb

を開いて

gitlab_url: "<%= @api_url %>"

を以下のように書き換えます。

gitlab_url: "<%= @api_url %>/gitlab/"

/opt/gitlab/embedded/cookbooks/gitlab/templates/default/nginx-gitlab-http.conf.erb

を開いて以下のように変更します。

# location / {
#   ## Serve static files from defined root folder.
#   ## @gitlab is a named location for the upstream fallback, see below.
#   try_files $uri $uri/index.html $uri.html @gitlab;
# }

location /gitlab {
## Serve static files from defined root folder.
## @gitlab is a named location for the upstream fallback, see below.
alias /opt/gitlab/embedded/service/gitlab-rails/public;
try_files $uri $uri/index.html $uri.html @gitlab;
}

ホスト名を変更しておきます。

/etc/gitlab/gitlab.rb

を開いて以下のように変更します。

external_url 'http://aaa.bbb'

さらにデフォルトでは、GitLabのトップ画面で誰でも「Sign up」できるような画面が表示されるので消しておきます。

/opt/gitlab/embedded/service/gitlab-rails/app/views/devise/shared/ _signup_box.html.haml

の中身を空にしておきます。

この後、GitLabを再構築します。

GitLabの再構築は、よく以下のエラーが出て失敗しますが、再度同じコマンドを実行すれば成功します。

成功する際は、以下のメッセージが表示されるので成功することを確かめます。

この後、

/var/opt/gitlab/nginx/conf/gitlab-http.conf

を開いて

listen *:80;

listen *:8000;

に変更します。

このように変更することで、

GitLabはポート80ではなくて、

ポート8000で待ち受けるようなります。

ただ、この設定は、

gitlab-ctl reconfigure

を再度、実行すると書き換わってしまいますので注意が必要です。

本当は、以下のファイル

opt/gitlab/embedded/cookbooks/gitlab/templates/default/nginx-gitlab-http.conf.erb

を変更することによって、

gitlab-ctl reconfigure

にも対応するようにしたかったのですが、いろいろ試してみてGitLabにログインするとアイコンが消えたりする不具合が発生したので、止むを得ずにこの対応で諦めます。

それでは、GitLabを再起動して、ポート8000で待ち受けていることを確認します。

ポート8000にtelnetしてみて待ち受けていることを確認できました。

WordPressをサブディレクトリで動かす設定

WordPressをサブディレクトリで動かす設定は、WordPressの管理者画面で行います。
管理者でログイン後、一般設定で、

「WordPressアドレス(URL)」と

「サイトアドレス(URL)」の両方を変更します。

image

適用後に、Apacheを再起動してみて、

http://aaa.bbb/wordpress

のようにサブディレクトリでアクセス出来れば設定完了です。

Apacheのリバースプロキシの設定

「Apache」と

「nginxで動いているGitLab」とを接続するためのリバースプロキシを設定します。

/etc/httpd/conf.d/gitlab.confというファイルを作成します。

この設定で、

http://aaa.bbb/gitlab

のようにサブディレクトリでアクセスされた時にGitLabに転送するようになります。

この後、Apacheを再起動しておきます。

まとめ

リバースプロキシを使わずに、Apacheだけあるいはnginxだけで、WordPressもGitLabもサブディレクトリで共存する方法はあるはずです。

ただ、GitLab CE Omnibusパッケージでは、インストールを自動化しているために、なかなかApacheまたはnginxだけで設定する方法が見つかりませんでした。

小細工するより、今回紹介した方法のように、GitLab CE Omnibusパッケージをnginx+GitLabの塊とみなして、設定する方が簡単だし間違えにくいと思います。

ただし、Apacheとnginxの2個のWEBサーバーを動かすために、ひょっとしたら少し重いかもしれません。

今回の設定では、Apacheからnginxへのリバースプロキシが最重要です。

Gitについてのおすすめの本

↓Gitについてのおすすめの本はコチラ

Git