Help us understand the problem. What is going on with this article?

Windows で Bitnami Redmine Stack を用い,1つの Apache サーバーで複数の Redmine を立ち上げる

はじめに

Windows で Bitnami Redmine Stack を用い,1つの Apache サーバーで複数の Redmine を立ち上げた際のノートを,例と共に以下に記します.

私が調べた限りでは同様のことを行っている例が見当たらず,色々と調べて辿り着いた結果となります.
他に良い方法がありましたら,また,間違いがありましたら,ご指摘いただきたく思います.

目標

という構成にします.
(2つ目が作れれば,3つ目以降も同様に作れます.確認済みです.)

環境

手順概要

  1. Redmine App ディレクトリのコピー
  2. Apache Conf ファイルの設定
  3. URL および Cache の設定
  4. データベースの設定
  5. Thinサーバーのサービスへの登録
  6. 動作確認

参考にさせていただいたサイト一覧

1. Redmine App ディレクトリのコピー

C:\Bitnami\redmine-3.4.6-5\apps\下に保存されているredmineディレクトリを,名前をredmine02として,同ディレクトリ下にまるごとコピーします.

cmd
copy C:\Bitnami\redmine-3.4.6-5\apps\redmine\  C:\Bitnami\redmine-3.4.6-5\apps\redmine02\

image.png

コマンドで書きましたが,エクスプローラー上でコピーしても問題ないです.

2. Apache Conf ファイルの設定

変更が必要なファイル

変更が必要なファイルは以下の4つです.

  • C:\Bitnami\redmine-3.4.6-5\apache2\conf\bitnami\
    • bitnami-apps-prefix.conf
  • C:\Bitnami\redmine-3.4.6-5\apps\redmine02\conf\
    • httpd-app.conf
    • httpd-prefix.conf
    • httpd-vhosts.conf

bitnami-apps-prefix.conf

以下の1行を追記

bitnami-apps-prefix.conf
Include "C:/Bitnami/redmine-3.4.6-5/apps/redmine02/conf/httpd-prefix.conf"

httpd-app.conf

以下の通り,書き換え

  • /redmine -> /redmine02
httpd-app.conf
RewriteEngine On
RewriteRule /<none> / [L,R]

<Directory "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/htdocs/public">
    Options -MultiViews
    AllowOverride All
    <IfVersion < 2.3 >
        Order allow,deny
        Allow from all
    </IfVersion>
    <IfVersion >= 2.3>
        Require all granted
    </IfVersion>

    Include "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/conf/banner.conf"
</Directory>

httpd-prefix.conf

以下の通り,書き換え

  • /redmine -> /redmine02
  • balancer://redminecluster -> balancer://redminecluster02
  • 127.0.0.1:3001 -> 127.0.0.1:3003
  • 127.0.0.1:3002 -> 127.0.0.1:3004

※ 3003, 3004 は未使用のポート番号である必要があります.
※ 3つ以上のRedmineを立ち上げる場合は適時変更する必要があります.

httpd-prefix.conf
ProxyPass /redmine02 balancer://redminecluster02
ProxyPassReverse /redmine02 balancer://redminecluster02

<Proxy balancer://redminecluster02>
    BalancerMember http://127.0.0.1:3003/redmine02
    BalancerMember http://127.0.0.1:3004/redmine02
</Proxy>

Include "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/conf/httpd-app.conf"

httpd-vhosts.conf

以下の通り,書き換え
(怪しい)

  • /redmine -> /redmine02
  • 127.0.0.1:3001 -> 127.0.0.1:3003
  • 127.0.0.1:3002 -> 127.0.0.1:3004
httpd-vhosts.conf
<VirtualHost *:80>
    ServerName redmine.example.com
    ServerAlias www.redmine.example.com
    DocumentRoot "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/htdocs/public"
    <Directory "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/htdocs/public">
        Options -MultiViews
        allow from all
    </Directory>

    RewriteEngine On
    RewriteRule ^/(.*)$ balancer://redminecluster%{REQUEST_URI} [P,QSA,L]
    <Proxy balancer://redminecluster>
        BalancerMember http://127.0.0.1:3003
        BalancerMember http://127.0.0.1:3004
    </Proxy>

    Include "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/conf/httpd-app.conf"
</VirtualHost>

<VirtualHost *:443>
    ServerName redmine.example.com
    ServerAlias www.redmine.example.com
    DocumentRoot "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/htdocs/public"
    SSLEngine on
    SSLCertificateFile "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/conf/certs/server.crt"
    SSLCertificateKeyFile "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/conf/certs/server.key"
    <Directory "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/htdocs/public">
        Options -MultiViews
        allow from all
    </Directory>

    RewriteEngine On
    RewriteRule ^/(.*)$ balancer://redminecluster%{REQUEST_URI} [P,QSA,L]
    <Proxy balancer://redminecluster>
        BalancerMember http://127.0.0.1:3003
        BalancerMember http://127.0.0.1:3004
    </Proxy>

    Include "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/conf/httpd-app.conf"
</VirtualHost>

3. URL および Cache の設定

変更が必要なファイル

  • C:\Bitnami\redmine-3.4.6-5\apps\redmine\htdocs\config
    • additional_environment.rb
  • C:\Bitnami\redmine-3.4.6-5\apps\redmine02\htdocs\config
    • additional_environment.rb
    • configuration.yml

additional_environment.rb

以下の通り,書き換えと追記を行う

  • /redmine -> /redmine02

追記部分について,元はapplication.rbに記載があるが,
application.rbは通常変更してはならないとのこと.
参考: サブディレクトリ運用の複数の Redmine で別の Redmine にアクセスすると勝手にログアウトするのを防ぐ - suer のブログ

\apps\redmine\htdocs\config\additional_environment.rb
# 追記
config.session_store :cookie_store,
    :key => '_redmine_session',
    :path => config.action_controller.relative_url_root
\apps\redmine02\htdocs\config\additional_environment.rb
# 書き換え
config.action_controller.relative_url_root = '/redmine02'

# 追記
config.session_store :cookie_store,
    :key => '_redmine_session',
    :path => config.action_controller.relative_url_root

configuration.yml

93行目を書き換え

configuration.yml
# 93行目
autologin_cookie_path: Redmine::Utils.relative_url_root

4. データベースの設定

4-1. データベース設定ファイルの編集

変更が必要なファイル

  • C:\Bitnami\redmine-3.4.6-5\apps\redmine02\htdocs\config
    • database.yml

database.yml

以下の通り書き換え
※password は「7dd1f5f7ed」となっています.適当に置き換えてください.
※ユーザー名は「bitnami02」としました.適当に置き換えてください.
※ユーザー名は変更せずに「bitnami」のままにすることも可能です.

database.yml
production:
  adapter: mysql2
  database: bitnami02_redmine02
  host: 127.0.0.1
  username: bitnami02
  password: 7c0e82d67b
  encoding: utf8
  port: 3306

4-2. データベース作成

※password,ユーザー名はdatabase.ymlで設定したものと同じものを使用する必要があります.

MySQL を稼働させる

image.png

コンソールを立ち上げ

C:\Bitnami\redmine-3.4.6-5\use_redmine.batを実行

ログイン

mysql -u root -p
※[bitnami redmine stack インストール時に使用したパスワード]を続けて入力

use_redmine.bat
C:\Bitnami\redmine-3.4.6-5>mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.42 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

データベース作成

CREATE DATABASE bitnami02_redmine02 CHARACTER SET utf8;

ユーザー作成

CREATE USER 'bitnami02'@'localhost' IDENTIFIED BY '7dd1f5f7ed';
※ユーザー名を変更しない場合は,作成する必要がありません.

権限の設定

GRANT ALL PRIVILEGES ON bitnami02_redmine02.* TO 'bitnami02'@'localhost';

終了

quit

4-3. データベース設定反映

セッションストア秘密鍵の生成

C:\Bitnami\redmine-3.4.6-5\use_redmine.batを実行してコンソールを立ち上げ,以下の通り入力.

use_redmine.bat
cd apps\redmine02\htdocs
bundle exec rake generate_secret_token

マイグレーション

引き続き,以下の通りマイグレーションを実施

use_redmine.bat
bundle exec rake db:migrate RAILS_ENV=production

5. Thinサーバーのサービスへの登録

5-1. 設定ファイルの編集-1

変更が必要なファイル

  • C:\Bitnami\redmine-3.4.6-5\apps\redmine02\scripts\
    • serviceinstall.bat
    • servicerun.bat

serviceinstall.bat

以下の通り,書き換え

  • /redmine -> /redmine02
  • redmineThin1 -> redmineThin102
  • redmineThin2 -> redmineThin202
  • 3001 -> 3003 ※未使用のポート
  • 3002 -> 3004 ※未使用のポート
\Bitnami\redmine-3.4.6-5\apps\redmine02\scripts\serviceinstall.bat
@echo off
rem -- Check if argument is INSTALL or REMOVE

if not ""%1"" == ""INSTALL"" goto remove

"C:\Bitnami\redmine-3.4.6-5/apps/redmine02\scripts\winserv.exe" install "redmineThin102" -start auto "C:\Bitnami\redmine-3.4.6-5\ruby\bin\ruby.exe" "C:\Bitnami\redmine-3.4.6-5/apps/redmine02\htdocs\bin\thin" start -p 3003 -e production -c "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/htdocs" -a 127.0.0.1 --prefix /redmine02
net start redmineThin102 >NUL
"C:\Bitnami\redmine-3.4.6-5/apps/redmine02\scripts\winserv.exe" install "redmineThin202" -start auto "C:\Bitnami\redmine-3.4.6-5\ruby\bin\ruby.exe" "C:\Bitnami\redmine-3.4.6-5/apps/redmine02\htdocs\bin\thin" start -p 3004 -e production -c "C:\Bitnami\redmine-3.4.6-5/apps/redmine02/htdocs" -a 127.0.0.1 --prefix /redmine02

net start redmineThin202 >NUL

goto end

:remove
rem -- STOP SERVICE BEFORE REMOVING

net stop redmineThin102 >NUL

"C:\Bitnami\redmine-3.4.6-5/apps/redmine02\scripts\winserv.exe" uninstall "redmineThin102"

net stop redmineThin202 >NUL
"C:\Bitnami\redmine-3.4.6-5/apps/redmine02\scripts\winserv.exe" uninstall "redmineThin202"

:end
exit

servicerun.bat

以下の通り,書き換え

  • redmineThin1 -> redmineThin102
  • redmineThin2 -> redmineThin202
\Bitnami\redmine-3.4.6-5\apps\redmine02\scripts\servicerun.bat
@echo off
rem START or STOP Apache Service
rem --------------------------------------------------------
rem Check if argument is STOP or START

if not ""%1"" == ""START"" goto stop

net start redmineThin102

net start redmineThin202

goto end
:stop

net stop redmineThin102

net stop redmineThin202

:end
exit

5-2. 設定ファイルの編集-2

変更が必要なファイル

  • C:\Bitnami\redmine-3.4.6-5\
    • serviceinstall.bat
    • servicerun.bat
    • properties.ini

serviceinstall.bat

redmine02をサービスに登録または削除するためのバッチファイルを呼び出すように行を追加する.
具体的には,redmineのバッチファイルを呼び出している行を複製し,\redmineの部分を\redmine02に変更する.
変更対象行は2箇所あり,いずれも rem redmine_code_startrem redmine_code_end の間にあります.

1箇所目(サービス登録)

\Bitnami\redmine-3.4.6-5\serviceinstall.bat
:: 元々存在
if exist C:\Bitnami\REDMIN~1.6-5\apps\redmine\scripts\serviceinstall.bat (start /MIN C:\Bitnami\REDMIN~1.6-5\apps\redmine\scripts\serviceinstall.bat INSTALL)

:: ↑の行を複製し,`\redmine`の部分を`\redmine02`に変更する
if exist C:\Bitnami\REDMIN~1.6-5\apps\redmine02\scripts\serviceinstall.bat (start /MIN C:\Bitnami\REDMIN~1.6-5\apps\redmine02\scripts\serviceinstall.bat INSTALL)

2箇所目(サービス削除)

\Bitnami\redmine-3.4.6-5\serviceinstall.bat
:: 元々存在
if exist C:\Bitnami\REDMIN~1.6-5\apps\redmine\scripts\serviceinstall.bat (start /MIN C:\Bitnami\REDMIN~1.6-5\apps\redmine\scripts\serviceinstall.bat)

:: ↑の行を複製し,`\redmine`の部分を`\redmine02`に変更する
if exist C:\Bitnami\REDMIN~1.6-5\apps\redmine02\scripts\serviceinstall.bat (start /MIN C:\Bitnami\REDMIN~1.6-5\apps\redmine02\scripts\serviceinstall.bat)

servicerun.bat

redmine02のサービスを開始または停止するためのバッチファイルを呼び出すように行を追加する.
具体的には,redmineのバッチファイルを呼び出している行を複製し,\redmineの部分を\redmine02に変更する.
変更対象行は2箇所あり,いずれも rem redmine_code_startrem redmine_code_end の間にあります.

1箇所目(サービス開始)

\Bitnami\redmine-3.4.6-5\servicerun.bat
:: 元々存在
if exist C:\Bitnami\REDMIN~1.6-5\apps\redmine\scripts\servicerun.bat (start /MIN C:\Bitnami\REDMIN~1.6-5\apps\redmine\scripts\servicerun.bat START)

:: ↑の行を複製し,`\redmine`の部分を`\redmine02`に変更する
if exist C:\Bitnami\REDMIN~1.6-5\apps\redmine02\scripts\servicerun.bat (start /MIN C:\Bitnami\REDMIN~1.6-5\apps\redmine02\scripts\servicerun.bat START)

2箇所目(サービス停止)

\Bitnami\redmine-3.4.6-5\servicerun.bat
:: 元々存在
if exist C:\Bitnami\REDMIN~1.6-5\apps\redmine\scripts\servicerun.bat (start /MIN C:\Bitnami\REDMIN~1.6-5\apps\redmine\scripts\servicerun.bat STOP)

:: ↑の行を複製し,`\redmine`の部分を`\redmine02`に変更する
if exist C:\Bitnami\REDMIN~1.6-5\apps\redmine02\scripts\servicerun.bat (start /MIN C:\Bitnami\REDMIN~1.6-5\apps\redmine02\scripts\servicerun.bat STOP)

properties.ini

以下を追記

\Bitnami\redmine-3.4.6-5\properties.ini
[Thin_redmine3]
thin_server_port=3003
thin_unique_service_name=redmineThin102
[Thin_redmine4]
thin_server_port=3004
thin_unique_service_name=redmineThin202

5-3. サービスの登録と開始

管理者権限でコマンドプロンプトを実行し,以下のコマンドを実行することで,redmine02サービスを登録します.

Console
C:\Bitnami\redmine-3.4.6-5\apps\redmine02\scripts\serviceinstall.bat INSTALL

C:\Bitnami\redmine-3.4.6-5\manager-windows.exeを開き直すと,redmineThin3redmineThin4が追加されていることを確認できると思います.
image.png

6. 動作確認

以上で,設定は完了です.

成功していれば,サーバーを再起動することで,それぞれのアドレスにアクセスできるようになります.

SKYS
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした