オープンソース資料館
Redmine 6.1.0をWindowsにインストール
2025.11.4 Redmine 6.1.0をWindows Serverにインストールする (その6)(最終回)
ここまででもとりあえずRedmineは動作するので機能のテストなどはできるかと思います。ただ、本稿では、BitnamiスタックがThinサービスを2つ動作させてフロントのApacheから振り分ける形になっていたことを考慮し、同様な構成をとってみようと思います。また、ターゲットのシステムではこれもBitnami同様に、Redmineのトップページはhttp://localhost/redmineのようにサフィックスをつけた形でアクセスするようにします。
整理すると、ここでは次の設定を行います。
1. フロントにLB(Apache)をおいて2つのThinに処理を振り分ける
2. http://localhost/redmine、のようにサフィックスをつける
設定ファイル系の話が多く、GUIもないのでスクショも少ないですがご容赦ください。
⚫️Step01: Thinのサービスを2つ作る
まず、カレントをC:\redmineにします。そして、ややこしいのでまずは前に作ったサービスを消します。
C:\redmine>chcp 65001
C:\redmine>thin_service remove -N "Redmine"
で、改めてサービスを追加します。
C:\redmine>thin_service install -N "Redmine1" -c "c:\redmine" -p 3000 -e production
C:\redmine>thin_service install -N "Redmine2" -c "c:\redmine" -p 3001 -e production
C:\redmine>
(前のページで一回追加しているのでスクショは省略します)
これで、Redmine1サービスがポート3000で、Redmine2サービスがポート3001で設定されます。開始するには、タスクマネージャーのサービスメニューから「開始」してください(なお、自動起動に設定しておくと楽です)
これで、http://localhost:3000/、http://localhost:3001/でアクセスできるはずです。
⚫️Step02: サフィックス "/redmine"を作る
サフィックスを使うために、まず環境変数のような形でRubyの変数を定義し、それを参照する箇所にその変数を記述します(2ヶ所あります)。
(1) 準備
クレデンシャルズ、というファイルを扱うために
---> cd C:\redmine
C:\redmine>rails credentials:edit
というコマンドを使うのですが、「"listen"というgemがない」というエラーが出ることがあります。
その場合、Gemfileを加工します。
C:\redmine>sakura Gemfile
group :development doの中にある'listen'の行(4行目)をコメントアウトし、一般の場所に追記します。この例ではRuby Standard Gemsに追記しています(32行目)。

その上で、Bundle Installを実施します。
C:\redmine>bundle install --without development test
そしてあらためてクレデンシャルズを実行。初回は暗号化鍵をmaster.keyファイルに追加する、とのメッセージが出ています。
C:\redmine>rails credentials:edit
(2) クレデンシャルズ・ファイルを加工する
クレデンシャルズ・ファイルは暗号化されていてエディタから直接開くことができません。そのためRails経由でファイルを開いてエディタを起動するのですが、まずエディタを指定し、再度クレデンシャルズを実行します。ここでサクラエディタを指定します(ここでサクラエディタの出番です・・notepadの場合起動はするんですが正しく保存できなかったんです。ちなみにWindows版のVimでもうまくできました)。
C:\redmine>set EDITOR="sakura"
C:\redmine>rails credentials:edit
少し待つとエディタが開きますので
app:
relative_url_root: /redmine
という行を追加して保存してください。
(3) production.rbを加工します
次は普通にエディタで開けます。C:\redmine\config\environments\production.rb
を開いて、次の2行を追加します。
config.relative_url_root = Rails.application.credentials.dig(:app, :relative_url_root)
config.assets.prefix = "#{Rails.application.credentials.dig(:app, :relative_url_root)}/assets"

(4) config.ruを加工します
同様に、
C:\redmine\config.ru
を開いて次のロジックを追加します。(インデントがおかしいのでスクショ参考にしてください)
RAILS_RELATIVE_URL_ROOT = Rails.application.credentials.dig(:app,:relative_url_root)
if RAILS_RELATIVE_URL_ROOT.present?
map RAILS_RELATIVE_URL_ROOT do
runRails.application
Rails.application.load_server
end
else
runRails.application
Rails.application.load_server
end

最後に、Redmine1, Redmine2のサービスを再起動します。
これでブラウザでアクセスすると、http://localhost:3000/redmine, http://localhost:3001/redmineからredmineのトップページが出るようになります。 逆にサフィックスをなくすと"Not found"に。


⚫️Step03: Apacheの設定をします
Apacheでは、80番ポートで受けたリクエストをプロキシで後方のThinサービスに転送します。その際、2つのThinサービスに処理を振り分けます。
設定場所は2ヶ所で、httpd.confでロードバランシングやProxyモジュールのロードを行い、subversion.conf(場所は必ずしもここでなくてもよい)で実際の動作を記述します。
C:\Program Files\Cirata\Subversion\Apache2\conf フォルダ
httpd.conf でロードするモジュールを調整する。次のモジュールのコメント(#)を外して保存します。
LoadModule proxy_module modules/mod_proxy.so
LoadModule lbmethod_byrequests_modle modules/mod_lbmethod_byrequests.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule status_module modules/mod_status.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
(場所は分散しているのでスクショ省略)
また、同じフォルダ内にあるsubversion.confにredmineへの転送情報を記載します。場所はVirtualHost内に書きました(外でも動きましたが・・)。
---
ProxyPass /redmine balancer://redminecluster lbmethod=byrequests timeout=1
ProxyPassReverse /redmine balancer://redminecluster
<Proxy balancer://redminecluster>
BalancerMember http://127.0.0.1:3000/redmine loadfactor=1
BalancerMember http://127.0.0.1:3001/redmine loadfactor=1
<Proxy>
---
confファイルを修正したら、Apacheを再起動します。タスクマネージャーからサービスCirataSubversionServiceを再起動、または停止して開始。

これで、http://localhost/redmineでアクセスするとApache経由でRedmineにアクセスできるようになります。

今回は6回にわたる長編となりました。実際に試された方、お疲れ様でした。
これで、かつてのBitnami RemineのようなDBはMySQLで、Thinインスタンスを2つ建てて、Apacheで負荷分散し、"/redmine"サフィックスでアクセスする、ところまでは一旦再現できたかなと存じます。実際にはhttpsで動くように設定したり、バックアップの設定をしたり、などがあるかと思いますが、今回は一旦ここまでにさせていただきます。お付き合いくださりありがとうございます。
なお、本稿を執筆するにあたり各モジュールを利用させていただき、またRubyやRedmineに関する数多くのサイト、ブログ記事にお世話になりました。各々の開発者の方、執筆者の方にこの場を借りて感謝申し上げます。
また、興味が出たソフトウェアが出てきましたら書いてみたいと思います。その際は懲りずにお付き合いいただければ幸いです。
セットアップに戻る場合はこちら。
ご相談ください
OSSPlazaへのお問い合わせは、お問合せはこちらへ。


























































