#最初に投稿した際、Windowsサービスに登録する方法がわかりませんでしたが、試行錯誤した結果、Windowsサービスに登録する方法が判明したため修正しました
はじめに
RubyとかRailsとか一切触ったことがなかったのでかなり苦労したが、なんとかインストールできたので備忘録をかねて記事に残しておく。
#苦労した甲斐もあり、Redmineの仕組みの理解も進んだこともあり、今ならBitnami版でインストールした後にRuby、DBだけを最新版にバージョンアップしたりすることもたぶんできそう
経緯
Bitnami版をインストールしたことはあったのだが手動でのインストールに挑戦したかった。
手動インストールのやり方を知っておけば、社内利用においてもソフトウェア脆弱性対応とかにもわりと対応できますし(というかこれが本当の経緯)
インストール環境
OS | Windows Server 2019 |
---|---|
Redmine | 5.0.1 |
DB | MariaDB 10.8.3 |
Ruby | 3.1.2 |
Rails | 6.1.6 |
Webサーバ | Thin |
※Railsのバージョンは意識していない(勝手に6.1.6が入っていただけ)
前提
インターネットに接続できる環境でないとインストールできません。
プロキシサーバ、セキュリティソフトなどの影響もあるとインストールできないこともあるかと。
手順
インストーラ入手
・Redmine
→ https://www.redmine.org/projects/redmine/wiki/Download
→ redmine-5.0.1.zip
・MariaDB
→ https://mariadb.org/download/?t=mariadb&p=mariadb&r=10.8.3&os=windows&cpu=x86_64&pkg=msi&m=xtom_jp
・Ruby
→ https://rubyinstaller.org/downloads/
→ Ruby+Devkit 3.1.2-1 (x64)
※WITH DEVKIT版にしないといけないみたい
Rubyインストール
1. ダウンロードしたインストーラを実行
2. すべてデフォルトのままインストールした
3. インストール完了後、「Run 'ridk install'・・・」にチェックを付けたままFinish
4. コマンドウィンドウが起動するので、1,2,3と順番にインストールした
完了したらコマンドウィンドウは閉じてOK
MariaDBインストール
1. ダウンロードしたインストーラを実行
2. 基本的にデフォルトのままインストール
※唯一、赤枠部のみチェック(デフォルト文字コードをUTF8)を付けた(たぶんチェックは付けなくてもよさげ)
Redmineインストール
公式インストール手順を参考にインストールしていく
https://www.redmine.org/projects/redmine/wiki/redmineinstall
1. Step 1 - Redmine application
はい。インストールする場所を決めてZIPファイルを解凍するだけです。
私は以下の場所にインストールしました。
2. Step 2 - Create an empty database and accompanying user
MariaDBをインストールしたので、「MySQL」欄に記載のSQLを実行します。
SQLって?という人向けにやることだけ説明すると、
(1) コマンドプロンプトを開き、MariaDBインストールフォルダのbinフォルダまで移動(cd)します
(2) 以下のコマンドを実行して、インストール時に指定したrootユーザのパスワードも入力してDBに接続します
mysql -u root -p
(3) 公式手順に記載されているSQLをコピペして実行します
※redmineユーザのパスワード('my_password'部分)は変更した方がよいです
CREATE DATABASE redmine CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
3. Step 3 - Database connection configuration
これも公式手順通りに進めます。
私の場合、mariaDBなのでMYSQL欄に従い設定しました。
4. Step 4 - Dependencies installation
※本ステップで実行するコマンドは管理者権限でコマンドプロンプトを開いて実行
(1) まずはコマンドプロンプトを開き、bundlerを以下のコマンドでインストールする
gem install bundler
(2) Redmineが利用するすべてのgemを以下のコマンドでインストールする
bundle install --without development test
(3) Optional dependencies
ここは不要そうなのでスキップ
(4) Additional dependencies (Gemfile.local)
とりあえずスキップ
5. Step 5 - Session store secret generation
Cookieの改ざんを防ぐために以下のコマンドを実行
bundle exec rake generate_secret_token
6. Step 6 - Database schema objects creation
★このステップがものすごく苦労しました
Windowsにインストールするので、以下のコマンドを実行してredmineのDBを構築します
set RAILS_ENV=production
bundle exec rake db:migrate
本エラーを解消するため、以下のファイルを修正
<Redmineインストールフォルダ>\Gemfile
- gem 'tzinfo-data', platforms: [:mingw, :x64_mingw, :mswin]
+ gem 'tzinfo-data'
コマンド再実行
set RAILS_ENV=production
bundle exec rake db:migrate
本エラーを解消するため、mysql2のgemを手動でインストールします。
gem install mysql2 --platform=ruby -- --with-mysql-lib="C:\Program Files\MariaDB 10.8\lib"
※--with-mysql-libにはmariaDBインストールパス配下のlibフォルダまでのフルパスを指定
コマンド再実行
set RAILS_ENV=production
bundle exec rake db:migrate
本エラーを解消するため、以下のファイルを修正
<Redmineインストールフォルダ>\Gemfile
- gem "mysql2", "~> 0.5.0", :platforms => [:mri, :mingw, :x64_mingw]
+ gem "mysql2"
コマンド再実行
set RAILS_ENV=production
bundle exec rake db:migrate
やっとエラーが出なくなった!!!
7. Step 7 - Database default data set
公式サイトとは少し違いますが、以下を実行します。
set RAILS_ENV=production
bundle exec rake redmine:load_default_data
8. Step 8 - File system permissions
Windowsの場合は本手順はスキップしてOK
9. Step 9 - Test the installation
インストールのテストを行いますが、本手順はスキップ
※ここもすんなりできませんでしたが、所詮、テストですから・・・
代わりに本番用のWebサーバ(Thin)を起動します
とりあえず起動コマンドを実行してみる
bundle exec thin start -e production -p 80 -a 0.0.0.0 -c "C:\Redmine\redmine-5.0.1"
※-p : ポート番号(Webブラウザからアクセスさせる)を指定
-c : redmineインストールパスを指定
本エラーを解消するため、以下のファイルを修正(末尾に追加)
<Redmineインストールフォルダ>\Gemfile
+ gem 'thin'
bundle installし直す
bundle install --without development test
起動コマンドを再実行
bundle exec thin start -e production -p 80 -a 0.0.0.0 -c "C:\Redmine\redmine-5.0.1"
以下のように表示されたので起動したっぽい!!!
※停止する場合はCtrl+C
10. Step 10 - Logging into the application
Webブラウザからログイン確認
※Webサーバ起動時に80ポートを指定したため以下のURLとなる
80ポート以外を指定した場合は適宜、ポート番号を指定したURLにアクセス
デフォルトの管理者アカウントでログインしてみましょう
ID : admin
PW : admin
お疲れ様でした。
その他
WebブラウザからのアクセスURLに/redmineを付ける場合の設定
アクセスURLからどのようなサービスに接続しているのかが分かった方が親切だと思うので、
http://localhost/redmine/
のようにしたい場合の説明
以下のファイルを修正(末尾に追加)
<Redmineインストールフォルダ>\config\environment.rb
+ Redmine::Utils::relative_url_root = "/redmine"
redmine起動コマンドを以下(-prefix "/redmine"を追加)にして実行
※redmine起動中であれば停止してから実行
bundle exec thin start -e production -p 80 -c "C:\Redmine\redmine-5.0.1" --prefix "/redmine"
ログ設定
確か初期設定のままだとログが肥大化し続けるので、一定サイズでローテーションする設定に変更
※公式サイトにも記載あるので詳細はそっちを参照
こんなことやりました(1ファイルあたり約1MBで10世代分保持。最大でもログは10MB程度)。
・<Redmineインストールフォルダ>\config\additional_environment.rb.example をコピー後、additional_environment.rbにリネーム
・config.logger = Logger.new('log/production.log', 10, 1000000)
設定変更したら、redmine再起動で反映されます
OS起動時にredmineが自動実行されるようにする
thin_serviceっていうgemをインストールすればWindowsサービスとして登録できて、そこから自動起動できるらしいんですが、私はできませんでした・・・ここまできたのに悔しい・・・
なので、タスクスケジューラに起動用バッチを設定して自動実行されるようにしました。
※いろいろ試してごちゃごちゃした影響があるのかもしれませんが、タスクスケジューラのタスクを終了させてもThinは停止しなかったので、Thin停止用のバッチ(VBS)を作成して、そこから停止するっていう面倒な構成になってしまいましたが・・・
自己解決できました!
そもそもですが、thin_serviceを実行した時に以下のようなエラーが出てました。
ググっても改善方法が見つかりませんでしたが、コマンドプロンプトの文字コードを変えれることをふと思い出し、UTF8に変更してから実行したらどうなるかと試してみたら普通に成功しちゃいました。
ということで、Windowsサービスとして登録する手順を説明します。
※以下で実行するコマンドは管理者権限でコマンドプロンプトを開いて実行
(1) 以下のコマンドでThin Serviceをインストールする
gem install thin_service
(2) 以下のコマンドでコマンドプロンプトの文字コードをUTF8に変更する
chcp 65001
(3) 以下のコマンドでWindowsサービスにThin Serviceを登録する
thin_service install -N "Redmine-5.0.1 Thin Service" -e production -p 80 -c "C:\Redmine\redmine-5.0.1" --prefix "/redmine"
※-N : Windowsサービスとして登録するサービス名を指定
その他はRedmine起動コマンド時に指定したオプションを指定
(4) Windowsサービスには手動起動設定として登録されていたので、OS起動時に自動起動するように設定変更
ここまで設定できたら、Windowsサービスから起動してみてRedmineにアクセスできること、OS再起動後、何もしなくともRedmineにアクセスできることを確認できれば問題ありません
※別途、インストールしたMariaDBは自動起動する設定でインストールされているため、MariaDBに関しては何もしなくとも自動起動します
その他、思うこと
大規模環境とか、インターネットサービスとして公開するのであれば、負荷軽減、セキュリティ面でいろいろ考慮しなければならないことは多いと思います。私の場合、社内の小規模環境での利用となるため、そこまでは検討しませんでしたが・・・
ちなみに、Bitnamiでインストールした場合、Thinサービスが2つ登録されており、Apache側でリクエストを受けて、2つのThinサービスにロードバランスするような構成になってました。Thinサービスは3つ、4つと増やせるようですので、やり方を知りたい人は「Bitnami redmine Thin 増やす」などでググってみてください。
あとは、そこまで解析していませんが、画像ファイル、CSS、JSなどの静的ファイルはApache側で処理するような仕組みも入っているのかもしれません(Thinには動的処理のみ行わせる方が負荷軽減になりそうですし)。やり方を知りたい人は「Rails apache 静的ファイル」などでググってみてください。
このような構成をとるのであれば、(扱ったことはありませんが)ApacheではなくNginxがよさそうな気がします。