このセクションでは、Redmine のWebサイトをルートディレクトリではなくサブディレクトリ上で動かす方法について紹介していきます。

ここでは、Nginx のWebサーバーを経由して利用している Redmine のWebページをサブディレクトリ(例 : http://example.com/redmine/)で利用できるようにしていきます。

Redmine 側の変更

Redmine の environment.rb を編集し、以下の設定を追記します。 
RedmineApp::Application.routes.default_scope = “/redmine”

[user@pub-web ~]$ sudo vi /var/lib/redmine/config/environment.rb

"/var/lib/redmine/config/environment.rb" 18L, 674B            15,54         All
# frozen_string_literal: true

# Load the Rails application
require File.expand_path('../application', __FILE__)

# Make sure there's no plugin in vendor/plugin before starting
vendor_plugins_dir = File.join(Rails.root, "vendor", "plugins")
if Dir.glob(File.join(vendor_plugins_dir, "*")).any?
  $stderr.puts "Plugins in vendor/plugins (#{vendor_plugins_dir}) are no longer allowed. " \
    "Please, put your Redmine plugins in the `plugins` directory at the root of your " \
    "Redmine directory (#{File.join(Rails.root, "plugins")})"
  exit 1
end

RedmineApp::Application.routes.default_scope = "/pjmng"
# Initialize the Rails application
Rails.application.initialize!

Ruby実行環境のWebサーバーである unicorn サービスのユニットファイルを編集し、以下のように変更します。 
ExecStart=/usr/bin/bundle exec “unicorn_rails -c config/unicorn.rb -E production”

ExecStart= /usr/bin/bundle exec “unicorn_rails -c config/unicorn.rb -E production –path=/redmine

[user@pub-web ~]$ sudo vi /usr/lib/systemd/system/unicorn.service

[Unit]
Description=Redmine Unicorn Server
After=mysqld.service

[Service]
User=redmine
Group=redmine
WorkingDirectory=/var/lib/redmine
Environment=RAILS_ENV=production
SyslogIdentifier=redmine-unicorn
PIDFile=/var/lib/redmine/tmp/pids/unicorn.pid
PermissionsStartOnly=true
ExecStartPre=/usr/bin/install -m 755 -o redmine -g redmine -d /var/run/unicorn
ExecStart= /usr/bin/bundle exec "unicorn_rails -c config/unicorn.rb -E production --path=/redmine"

ExecStop=/usr/bin/kill -QUIT $MAINPID
ExecReload=/usr/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

[user@pub-web ~]$

設定を反映させるため、unicorn サービスを再起動します。

[user@pub-web ~]$ sudo systemctl daemon-reload
[user@pub-web ~]$

[user@pub-web ~]$ sudo systemctl restart unicorn.service
[user@pub-web ~]$

[user@pub-web ~]$ sudo systemctl status unicorn.service
● unicorn.service - Redmine Unicorn Server
     Loaded: loaded (/usr/lib/systemd/system/unicorn.service; enabled; preset: disabled)
     Active: active (running) since Wed 2023-08-30 09:49:51 EDT; 3s ago
    Process: 81063 ExecStartPre=/usr/bin/install -m 755 -o redmine -g redmine -d /var/r>
   Main PID: 81064 (ruby)
      Tasks: 6 (limit: 11125)
     Memory: 157.3M
        CPU: 2.677s
     CGroup: /system.slice/unicorn.service
             tq81064 "unicorn_rails master -c config/unicorn.rb -E production --path=/p>
             tq81066 "unicorn_rails worker[0] -c config/unicorn.rb -E production --path>
             mq81067 "unicorn_rails worker[1] -c config/unicorn.rb -E production --path>

Aug 30 09:49:51 pub-web systemd[1]: Starting Redmine Unicorn Server...
Aug 30 09:49:51 pub-web systemd[1]: Started Redmine Unicorn Server.
lines 1-15/15 (END)

Nginx 側の変更

Redmine用のLocationディレクティブを設定しているファイル(ここでは、default.confとしています)編集し、以下のように修正します。

[user@pub-web ~]$ sudo vi /etc/nginx/conf.d/default.conf

# Redmine環境に対するlocationディレクティブの設定
server {
    --(省略)--
    location / {
        root /var/lib/redmine/public;
        try_files $uri/index.html $uri.html $uri @app;
    }

  ↓(こんな感じで修正します)

    location /redmine {
        alias /var/lib/redmine/public;
        try_files $uri/index.html $uri.html $uri @app;
    }

設定を反映させるため、Nginx サービスをリロードします。

[user@pub-web ~]$ sudo systemctl reload nginx
[user@pub-web ~]$

正常であれば、以下のようにredmine サブディレクトリにアクセスすると Redmineのページが開きます。
https://example.com/redmine (実際の環境に合わせ適宜変更してください)