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

Git

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

CentOS 7にGitHubライクなGitLabを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を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