結構前にやった作業記録なんですが、個人的な備忘録としてブログに残しておきます。
で構築したRedmineですが新しいバージョンがリリースされていたのでアップグレードしてみました。
3.4.2 → 3.4.3へのアップグレードをしています。
1. 公式な手順
Redmineのアップグレードについて、公式な手順はこちらにあります。
日本語訳がしっかり用意されているのは私みたいな利用者からすると非常にありがたいです。
環境によって細かい手順は変わりますが、基本的には、
- 新バージョンのRedmineの展開
- データベースのバックアップと(必要があれば)移行
- 添付ファイルのバックアップと移行
- Redmineのアップグレード
- データベースのアップグレード
- クリーンアップ
という手順を踏むことになります。
1. 新バージョンのRedmineの展開
最初に新しいバージョンのRedmineを展開します。
現時点ではC:\redmine-3.4.2
にRedmineをインストールしていますので、C:\redmine-3.4.3
に新しいバージョンのRedmineを展開してアップグレードすることにします。
手順としてはもう少し後でも構わないのですが、最初に現行のRedmineのサービスを止めておきます。
# サービス停止 $REDMINE_SERVICE_NAME = "Redmine" $REDMINE_INSTALL_PORT = 3000 Stop-Service $REDMINE_SERVICE_NAME
サービスを止めたら新しいRedmineを展開します。
この手順についてはバージョンが違うだけで前にインストールしたときと同様になります。
# 新しいRedmineの展開 $REDMINE_VER = '3.4.3' $REDMINE_INSTALL_ROOT = 'C:\' $REDMINE_INSTALL_PATH = Join-Path $REDMINE_INSTALL_ROOT "redmine-$REDMINE_VER" # Zipのダウンロード Invoke-WebRequest -Uri "http://www.redmine.org/releases/redmine-$REDMINE_VER.zip" -OutFile "$(Get-Location -PSProvider Filesystem)\redmine-$REDMINE_VER.zip" # PowerShell 4.0だとZipを扱えないのでRubyで頑張って解凍する # ※いったんカレントディレクトリに解凍してから移動している gem install rubyzip --no-rdoc --no-ri ruby -e "require 'zip'; Zip::File.open('.\redmine-$REDMINE_VER.zip') do |zip| zip.each do |entry| puts \""entry #{entry.name}\""; zip.extract(entry, entry.name) { true } end; end" Move-Item ".\redmine-$REDMINE_VER" $REDMINE_INSTALL_ROOT -Force
2. データベースのバックアップ(とコピー)
今回の環境ではデータベースにSQLiteを使用しています。
Redmine 3.4.2のデータベースファイルを、先ほど展開したディレクトリにコピーして移行し、コピー元のファイルをバックアップとすることにします。
これは単純にファイル(config\database.yml
とdb\redmine.sqlite3"
)をコピーするだけです。
# データベースのコピー : SQLite $OLD_REDMINE_PATH = "C:\redmine-3.4.2" Copy-Item -LiteralPath (Join-Path $OLD_REDMINE_PATH "config\database.yml") -Destination (Join-Path $REDMINE_INSTALL_PATH "config\database.yml") Copy-Item -LiteralPath (Join-Path $OLD_REDMINE_PATH "db\redmine.sqlite3") -Destination (Join-Path $REDMINE_INSTALL_PATH "db\redmine.sqlite3")
3. 添付ファイルのバックアップ(とコピー)
データベースと同様に添付ファイル(filesフォルダ
)もコピーすることで新しいバージョンへの移行とバックアップを行います。
# filesフォルダの移行 Copy-Item -LiteralPath (Join-Path $OLD_REDMINE_PATH "files") -Destination (Join-Path $REDMINE_INSTALL_PATH "files") -Recurse
4. Redmineのアップグレード
ここからRedmineのアップグレードをしていきます。
公式な手順ではconfig/configuration.yml
を移行すると記載されていますが、今回の環境では設定していないため何もしません。
ただし、ThinをインストールするためにGemfile.local
ファイルを追加しているので、このファイルをコピーして移行しておきます。
# config/configuration.yml は今回の例では設定していないのでスキップ # ただし、他にカスタマイズしている設定があればコピーしておくこと # 今回は Gemfile.local(Thin Service用)をコピー Copy-Item -LiteralPath (Join-Path $OLD_REDMINE_PATH "Gemfile.local") -Destination (Join-Path $REDMINE_INSTALL_PATH "Gemfile.local")
ここからは前にインストールした時と同様にbundle install
を行い新しいバージョンのRedmine環境を構築します。
# DevKitへのPATHが通ってない場合は通しておく $RUBY_DEVKIT_INSTALL_PATH = 'C:\MinGW' $env:PATH = "$(Join-Path $RUBY_DEVKIT_INSTALL_PATH "bin");$(Join-Path $RUBY_DEVKIT_INSTALL_PATH "mingw\bin");" + $env:PATH # bundle install cd $REDMINE_INSTALL_PATH bundle install --without development test rmagick --path vendor/bundle # セッション改ざん防止用秘密鍵の作成 bundle exec rake generate_secret_token
5. データベースのアップグレード
# データベースのマイグレーション bundle exec rake db:migrate RAILS_ENV="production"
6. クリーンアップ
# キャッシュとセッションファイルのクリア bundle exec rake tmp:cache:clear tmp:sessions:clear RAILS_ENV="production"
7. サービス設定の変更
ここまでの手順で新しいバージョンのRedmine環境の構築が完了しているので、Thinで起動するRedmineを新しいバージョンのものに変更することで環境の切り替えを行います。
# Thinの再登録 thin_service remove -N $REDMINE_SERVICE_NAME thin_service install -N $REDMINE_SERVICE_NAME -c "$REDMINE_INSTALL_PATH" -p $REDMINE_INSTALL_PORT -e production # サービス起動 Start-Service Redmine
動作確認
以上でアップグレードは完了です。
ブラウザからRedmineにログインしてバージョンが新しくなっている事、正しくデータ移行できていることが確認できればOKです。