こんにちは、テクマトリックスの村上です。
Redmineで利用しているRubyのバージョンアップをしたのでまとめました。
バージョンアップする環境のRedmineはRedmine5.1.3のため、Ruby3.2.Xまでを利用できます。また、現在リリースされているRuby3.2はRuby3.2.6のため、今回はRuby3.2.6をインストールします。
※本環境はrbenvを利用してRubyのインストールをしています。

バージョンアップのきっかけ

Ruby3.1が2025年3月31日でサポートが終了します。サポート終了前にバージョンアップする必要があります。
参考:https://www.ruby-lang.org/ja/downloads/branches/

Redmineの環境情報

環境情報は以下です。

OSUbuntu24.04
RedmineのバージョンRedmine5.1.3
Rubyのバージョン3.1.6
Rubyのインストール方法rbenvを利用
DBの種類とバージョンPostgreSQL
webサーバApache(Passengerを利用してRailsを実行)

バージョンアップの手順

①インストールできるRubyのバージョンを確認

以下のコマンド実行することで、現在インストールできるRubyのバージョンを確認できます。

$ rbenv install --list


インストールしたいバージョンが表示されない場合は、以下のコマンドでダウンロードします。

$ cd /opt/.rbenv/plugins/ruby-build
$ git pull

②Ruby3.2.6のインストール

Rubyのバージョンを環境変数(RUBY_VERSION)に設定し、rbenvのコマンドでRuby3.2.6のインストールを行います。

$ export RUBY_VERSION='3.2.6'
$ rbenv install $RUBY_VERSION
$ rbenv global $RUBY_VERSION
$ rbenv global

③Passengerのインストール

本環境は、ApacheのPassengerを利用してRedmineを実行しているため、Passengerのインストールを行います。

$ gem install passenger -N
$ passenger-install-apache2-module --auto --languages ruby

④Apacheの設定ファイルの書き換え
以下のコマンドを実行し、Apacheの設定ファイルに記載する設定値を確認します。

$ passenger-install-apache2-module --snippet
LoadModule passenger_module /opt/.rbenv/versions/3.2.6/lib/ruby/gems/3.2.0/gems/passenger-6.0.24/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /opt/.rbenv/versions/3.2.6/lib/ruby/gems/3.2.0/gems/passenger-6.0.24
  PassengerDefaultRuby /opt/.rbenv/versions/3.2.6/bin/ruby
</IfModule>


上記で確認した設定値をApacheの設定ファイルに記載します。既存の設定値があるため、削除して追加します。

$ vi /etc/apache2/conf-available/redmine.conf
<Directory "/var/lib/redmine/public">
  Require all granted
</Directory>

#以下の既存の設定を削除
#LoadModule passenger_module /usr/local/lib/ruby/gems/3.1.0/gems/passenger-6.0.23/buildout/apache2/mod_passenger.so
#<IfModule mod_passenger.c>
#  PassengerRoot /usr/local/lib/ruby/gems/3.1.0/gems/passenger-6.0.23
#  PassengerDefaultRuby /usr/local/bin/ruby
#</IfModule>

#新しい設定値を追加
LoadModule passenger_module /opt/.rbenv/versions/3.2.6/lib/ruby/gems/3.2.0/gems/passenger-6.0.24/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /opt/.rbenv/versions/3.2.6/lib/ruby/gems/3.2.0/gems/passenger-6.0.24
  PassengerDefaultRuby /opt/.rbenv/versions/3.2.6/bin/ruby
</IfModule>

PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 864000
PassengerStatThrottleRate 10

<Directory /var/lib/redmine/public>
    Allow from all
    Options -MultiViews
    Require all granted
</Directory>


⑤gemファイルのインストール

Redmineが利用しているgemファイルのインストールを行います。

$ cd Redmineのインストールディレクトリ
$ bundle install --without test development

⑥Redmineを再起動

$ systemctl restart apache2


⑦Redmineの動作確認
再起動後はブラウザでRedmineにアクセスを行い、動作に問題がないかを確認します。
動作確認は、業務でよく利用している機能を操作し、問題がないかの確認を行いました。普段の業務の流れを意識し、業務フローに乗っ取ってRedmineの操作を行うとよいかと思います。サードパーティ制プラグインを利用している場合は、プラグインの動作確認もします。
業務フローの例:プロジェクトを作成して、ユーザーを追加し、チケットの作成・編集・クローズを行う。

バージョンアップ後のサードパーティ制プラグインの利用可否

以下に記載するサードパーティ制プラグインは、Rubyのバージョンアップ後も利用できました。

プラグイン名バージョン用途
RedMica S3 plugin2.2.0Redmineへの添付ファイルをS3へ保存する
Redmine Auto Done 100% plugin1.0.0チケットが終了ステータスに変更になった際に進捗率を自動で100%にする
Redmine Banner plugin0.3.4Redmineの画面上にバナーを設置する
Redmine Ip Filter1.0.0Redmineにアクセス可能なIPアドレスを制限する
Redmine Issue Templates plugin1.1.2Redmineの画面上にHTML、CSS、Javascriptを埋め込む
Issue Importer1.2.2チケットのインポート機能を拡張する
Redmine Issue Trash1.0.2削除したチケットを管理する
View Customize plugin3.5.2Redmineの画面上にHTML、CSS、Javascriptを埋め込む
Redmine Slack0.2RedmineとSlackを連携する

まとめ

Redmineで利用しているRubyのバージョンアップを行いました。rbenvを利用してインストールしていたため、rubyのアップデートが簡単にできました。また、利用しているサードパーティ制プラグインへの影響がない事も確認しました。Rubyのバージョンアップを検討している方の参考になれば幸いです。