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

Git
スポンサーリンク

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

 

http://urashita.com/archives/2870

 

ただ、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をインストールしておきます。

 

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

http://urashita.com/archives/2870

 

 

次に、GitLabを停止します。

 

 

 

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

 

/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

 

 

Git
スポンサーリンク
スポンサーリンク
うらしたをフォローする
スポンサーリンク
urashita.com 浦下.com (ウラシタドットコム)

コメント

タイトルとURLをコピーしました