大きくバージョンを飛ばしてアップグレードすると、トラブルが発生する可能性が上がる(と思っている)ので、そろそろRedmineをアップグレードしておきます。
今回、アップグレードする環境では、Redmine4.1.0が動いています。これを、2021年7月時点で最新版となる4.2.1にアップグレードしていく手順をメモメモ。
最新版をダウンロードして展開する
現在のRedmine 4.1.0のインストール先を /var/lib/redmine として話を進めますので、違う場所にインストールしている場合は適宜読み替えてください。
Redmineの最新版(2021年7月時点で4.2.1)をダウンロードして展開します。
# cd /var/lib
# curl -O https://www.redmine.org/releases/redmine-4.2.1.tar.gz
# tar xvf redmine-4.2.1.tar.gz
展開したRedmine4.2.1の所有権をapacheに変更します。
# chown -R apache:apache /var/lib/redmine-4.2.1
古い環境から必要なファイルをコピーする
4.1.0の環境から、データベースの設定ファイルとRedmineの設定ファイルをコピーします。
# cp -a ./redmine/config/database.yml ./redmine-4.2.1/config/
# cp -a ./redmine/config/configuration.yml ./redmine-4.2.1/config/
プラグインをコピーします。今回の環境ではView Customizeというプラグインだけを使用しているので、このプラグインをコピーします。
# cp -ar ./redmine/plugins/view_customize ./redmine-4.2.1/plugins/
今まで、Redmineにアップロードしたファイルなどがあれば、それらもコピーしておきます。
# cp -ar ./redmine/files ./redmine-4.2.1/
新しいRedmineのセットアップを行う
新しいバージョンのRedmineに、依存パッケージをインストールします。新しいRedmineを展開したディレクトリで実行する必要があります。
# cd /var/lib/redmine-4.2.1
# bundle install --without development test --path vendor/bundle
セッションの改ざんを防止するための秘密鍵を作成します。
# bundle exec rake generate_secret_token
DBのマイグレーションを行います。
# bundle exec rake db:migrate RAILS_ENV=production
キャッシュをクリアします。
# bundle exec rake tmp:cache:clear RAILS_ENV=production
Apacheの設定を書き換え、Redmineの参照ディレクトリを変更します。
# vi /etc/httpd/conf.d/redmine.conf
エイリアスの変更
Alias /redmine /var/lib/redmine/public
↓
Alias /redmine /var/lib/redmine-4.2.1/public
アプリケーションルートの変更
PassengerAppRoot /var/lib/redmine
↓
PassengerAppRoot /var/lib/redmine-4.2.1
参照ディレクトリの変更
<Directory "/var/lib/redmine/public">
↓
<Directory "/var/lib/redmine-4.2.1/public">
設定ファイル書き換え後、Apacheを再起動すればアップグレード完了です。
# apachectl configtest
# systemctl restart httpd
以前紹介したカスタマイズを再度設定する
以前紹介した「Redmineで開始日が過ぎたチケットにCSSで装飾してお知らせするカスタマイズ」や「期日がきたチケットは色を変えてお知らせするカスタマイズ」を実装している方は、再度設定が必要です。
# cd /var/lib/redmine-4.2.1/app/models
# vi issue.rb
950行目のあたりにある、overdue処理の後に追加します。
# Returns true if the issue is overdue
def overdue?
due_date.present? && (due_date < User.current.today) && !closed?
end
#------ Add Start
def overdue_days_before(days_before)
due_date.present? && (due_date < User.current.today.since(days_before.days)) && !overdue? && !closed?
end
def start_days_after(days_after)
start_date.present? && ((start_date - 1 ) < User.current.today.since(days_after.days)) && !closed?
end
#------ Add End
1440行目のあたりにあるクラス付与処理の途中に追加します。
# Returns a string of css classes that apply to the issue
def css_classes(user=User.current)
s = +"issue tracker-#{tracker_id} status-#{status_id} #{priority.try(:css_classes)}"
s << ' closed' if closed?
s << ' overdue' if overdue?
#------ Add Start
s << ' overdue_1day_before' if overdue_days_before(1)
s << ' overdue_3days_before' if overdue_days_before(3)
s << ' start_days' if start_days_after(0)
#------ Add End
s << ' child' if child?
s << ' parent' unless leaf?
s << ' private' if is_private?
s << ' behind-schedule' if behind_schedule?
if user.logged?
s << ' created-by-me' if author_id == user.id
s << ' assigned-to-me' if assigned_to_id == user.id
s << ' assigned-to-my-group' if user.groups.any? {|g| g.id == assigned_to_id}
end
s
end
書き換えが終わったら、Redmineを再起動します。以下のコマンドを実行後、ブラウザからRedmineにアクセスすることで再起動されます。
# cd /var/lib/redmine-4.2.1/tmp
# touch restart.txt
もしくは、Apacheを再起動してしまってもOKです。
# systemctl restart httpd
「Redmineで開始日が過ぎたチケットにCSSで装飾してお知らせするカスタマイズ」や「期日がきたチケットは色を変えてお知らせするカスタマイズ」については、以下の記事で紹介しています。
さいごに
以上でアップグレード作業が完了しました。特に難しいことはないと思いますが、何かトラブルがあるといけないので、作業前にバックアップだけは確実に取っておきましょう。
4.1系から4.2系になることで、一部、バージョンに依存したプラグインなどが動かなくなったり、不具合を起こす可能性があります。プラグインの移行は慎重に行ってください。
ちなみにView Customizeというプラグインは、問題なく動作しています。
本当はこまめにアップグレードすることが望ましいですが、なかなかそうもいかず。ですが、せめて1年に一度くらいは作業しておきたいものですね。
コメント