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

シェアする

  • このエントリーをはてなブックマークに追加

GitLabのGitLab CE Omnibus Packagesを使うとホントに簡単にGitLabをインストール出来ます。
CentOS 7にGitHubライクなGitLabを2分でインストールしてみた
ただ、GitLab CE Omnibus Packagesのデフォルトでは、パッケージに同梱されているnginxで動作し、かつ、サーバーのドメイン名直下でアクセスされるように設定されるために、他のサービスと併用する扱いにくいです。
今回、CentOS 7でApacheの上でWordPressが動いているサーバーとGitLabを共存させてみました。

WS000218

スポンサードリンク

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

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分でインストールしてみた

次に、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へのリバースプロキシが最重要です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です