サイトルートは既に別のアプリケーションを使っている場合に、「https://your.domain/gitlab」のようにサブディレクトリにインストールする方法を紹介しています。
Gitlabでデフォルトでインストールすると「https://your.domain」のようにサイトのルートにインストールされてしまいます。
サブディレクトリで運用する方法を調べても古かったり、バラバラの情報しか出てこなかったので、今回はその方法を紹介したいと思います。
Gitlabの運用環境
- Raspberry Pi 4 8GB
- Ubuntu 20.04.3 LTS
- apache 2.4.41
- Gitlab EE 14.7.0
筆者の現在の環境が上記というだけで合わせる必要はありませんが、他のOSやバージョンを使っている場合の方法について質問されても答えられないので、ご了承ください。
事前準備
Gitlabは事前にインストールしておいてください。インストール時にどのような設定をしていたかは忘れてしまったので、インストール方法は割愛します。
gitlab.rbの編集
/etc/gitlab/gitlab.rbを以下のように修正してください。
1 2 3 |
external_url 'https://your.domain/gitlab' nginx['listen_port'] = 1234 nginx['listen_https'] = false |
external_urlはデフォルト値が上の方にあるので、そこを書き換えてください。「your.domain」の部分は自分のドメインに置き換えてください。
nginxの部分はデフォルトではコメントアウトされているので、検索して該当部分を書き換えるか、external_urlの下にでも追記してください。nginx[‘listen_port’]はGitlabを動作させたいポート番号を指定してください。
Apacheの設定
/etc/apache2/sites-available/xxx.conf のバーチャルホストに以下を追記します。http://127.0.0.1:1234のポートはgitlab.rbで指定したポートと同じものにしてください。
1 2 3 4 5 |
RequestHeader set X-Forwarded-Proto https ProxyPreserveHost On ProxyRequests Off ProxyPass /gitlab http://127.0.0.1:1234/gitlab ProxyPassReverse /gitlab http://127.0.0.1:1234/gitlab |
参考にLet’s Encryptで自動生成される設定ファイルに追記したものを載せておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<IfModule mod_ssl.c> <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ServerName your.domain ServerAlias www.your.domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} !(^/.well-known/) RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> <VirtualHost *:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ServerName your.domain ServerAlias www.your.domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLCertificateFile /etc/letsencrypt/live/your.domain/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/your.domain/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf RequestHeader set X-Forwarded-Proto https ProxyPreserveHost On ProxyRequests Off ProxyPass /gitlab http://127.0.0.1:1234/gitlab ProxyPassReverse /gitlab http://127.0.0.1:1234/gitlab </VirtualHost> </IfModule> |
ターミナルでの操作
confファイルが依存するモジュールを有効化します。
1 2 3 |
sudo a2enmod rewrite sudo a2enmod proxy sudo a2enmod proxy_http |
confファイルを追加している場合は有効化します。
例) xxx.conf
1 |
sudo a2ensite xxx |
apacheを再起動します。
1 |
sudo service apache2 restart |
Gitlabの設定反映と再起動をします。
1 2 |
sudo gitlab-ctl reconfigure sudo gitlab-ctl restart |
以上で設定完了です。サブディレクトリのアドレスを変えたい場合は/gitlabを好きな文字列に変更してください。
備考
Gitlabのサブディレクトリ運用で検索すると、gitlab.rbを以下のように設定するという記載が出てきますが、これで設定してしまうと通知などに記載されるURLがポート番号付きになってしまうので、非推奨です。
1 |
external_url 'http://your.domain:1234/gitlab' |