WindowsにRedmineをインストールする方法としてはBitnami Redmine Installerを使うのがメジャーですが、個人的な要件でできるだけ最小構成にしたく、MySQLを使わずにSQLiteを、Apacheも使いたくなかったので幾つかのサイトを参考にして自力でインストールを試みました。
0. はじめに
参考サイト
本エントリは以下のサイトの手順を参考にしました。
検証環境
検証環境は以下となります。
Windows Server 2012 R2
- インストール直後の状態に最新のWindows Updateを適用した状態
Windows PowerShell 4.0
- デフォルトでインストールされているPowerShellをそのまま使います
前回のエントリの構成と同じです。
また、インストールするするRedmineのバージョンは現時点の最新のVer.3.4.2
としました。
【2017/08/17 追記】
Windows Server 2016 + PowerShell 5.1の環境でも本手順が動作することを確認しました。
【追記ここまで】
1. Ruby(RubyInstaller)のインストール
Redmine 3.4.2ではNokogiri 1.7.2が使われており、これがRuby 2.4系に対応していなかったため今回はRuby 2.3.3(64bit版)をインストールします。
GUIのインストーラーからインストールしても構わないのですが、面倒なのでPowerShellから以下のコマンドでサイレントインストールします。
$RUBY_VER = '2.3.3' $RUBY_INSTALL_PATH = 'C:\Ruby23-x64' # ダウンロード Invoke-WebRequest -Uri "https://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-$RUBY_VER-x64.exe" -OutFile "$(Get-Location -PSProvider Filesystem)\rubyinstaller-$RUBY_VER-x64.exe" # インストール Start-Process -FilePath ".\rubyinstaller-$RUBY_VER-x64.exe" -ArgumentList @("/dir=""$RUBY_INSTALL_PATH""", '/silent', '/tasks="addtk,modpath"', '/lang=ja') -Wait -PassThru # PowerShellを再起動しない場合はPATHを追加しておく $env:PATH = "$(Join-Path $RUBY_INSTALL_PATH "bin");" + $env:PATH
Rubyのインストールオプションは以下となります。
- インストール先 :
C:\Ruby23-x64
- インストールオプション :
- Tcl/Tkのサポートをインストールする
- Rubyの実行ファイルパスをPATH環境変数に追加
続けてDevelopment Kitをインストールします。
以下のコマンドを実行してC:\MinGW
に展開しておきます。
# Development Kit(Ruby 2.0~2.3向け)のインストール $RUBY_DEVKIT_INSTALL_PATH = 'C:\MinGW' # ダウンロード Invoke-WebRequest -Uri "https://dl.bintray.com/oneclick/rubyinstaller/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe" -OutFile "$(Get-Location -PSProvider Filesystem)\DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe" # 解凍+展開 Start-Process -FilePath ".\DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe" -ArgumentList @("-o""$RUBY_DEVKIT_INSTALL_PATH""", "-y") -Wait -PassThru # Gemのインストールに必要なためPATHを追加しておく $env:PATH = "$(Join-Path $RUBY_DEVKIT_INSTALL_PATH "bin");$(Join-Path $RUBY_DEVKIT_INSTALL_PATH "mingw\bin");" + $env:PATH
以上でRubyとDevelopment Kitのインストールは完了です。
2. Redmineのインストール
2-1. Redmineのダウンロードと解凍
ここからRedmine 3.4.2のインストールを行います。
以下のコマンドでC:\redmine-3.4.2
にソースを展開します。
$REDMINE_VER = '3.4.2' $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
ちなみに、Zipの解凍についてはPowerShell 5.0以降であればExpand-Archive
コマンドが使えます。
# PS 5.0以降ならExpand-Archiveで解凍可能 Expand-Archive -LiteralPath "$(Get-Location -PSProvider Filesystem)\redmine-$REDMINE_VER.zip" -DestinationPath $REDMINE_INSTALL_ROOT
2-2. 事前準備
ここで先にconfig/database.yml
を設定します。
今回は最小構成にしたいのでSQLiteにします。
# config/database.yml を設定。SQLiteを使用する。 @" # SQLite3 configuration production: adapter: sqlite3 database: db/redmine.sqlite3 "@ -replace "`n","`r`n" | Set-Content (Join-Path $REDMINE_INSTALL_PATH "config\database.yml") -Encoding Default
また、アプリケーションサーバーにThin 1.7.2を使用したいので、Gemfile.local
を作成しRedmineで使用するGemをカスタマイズします。
# Gemfile.local を設定。thinを使う設定を追加。 @" gem "thin", "1.7.2" "@ -replace "`n","`r`n" | Set-Content (Join-Path $REDMINE_INSTALL_PATH "Gemfile.local") -Encoding Default
2-3. インストール作業
ここから本格的に設定を開始します。
セットアップのためのBundlerとThinをWindowsサービス化するためにthin_serviceをインストールします。
# 事前に必要なGemのインストール # ※thin_serviceはbundle installでは正常に動作しなかったためgem installにしている gem install bundler --no-rdoc --no-ri gem install thin_service --no-rdoc --no-ri
続けてRedmineを展開したディレクトリに移動してbundle
コマンドを実行していきます。
# ディレクトリ移動 cd $REDMINE_INSTALL_PATH # 64bit版のためImageMagic抜きで(--without rmagick)bundle install bundle install --without development test rmagick --path vendor/bundle # セッション改ざん防止用秘密鍵の作成 bundle exec rake generate_secret_token # データベースのマイグレーション bundle exec rake db:migrate RAILS_ENV="production" # 初期データのロード bundle exec rake redmine:load_default_data RAILS_ENV="production" REDMINE_LANG="ja"
2-4. 動作確認
ここで動作確認のためにThinをコマンドラインから起動します。
こちらは必要に応じて行ってください。
# 動作確認のため、必要に応じて実行する # http://localhost:3000/ にアクセスして動作を確認する bundle exec thin start -e production -p 3000 -a 0.0.0.0 -c "$REDMINE_INSTALL_PATH"
もしThinの起動に失敗する場合はwebrick
で確認してみるのも良いでしょう。
# 動作確認のため、必要に応じて実行する # http://localhost:3000/ にアクセスして動作を確認する bundle exec rails server webrick -e production
2-5. Windowsサービスの設定
動作確認に問題がないことを確認したら、最後にthin_service
コマンドを使い、Redmine(Thin)をWindowsサービス化します。
# サービス登録 $REDMINE_SERVICE_NAME = "Redmine" $REDMINE_INSTALL_PORT = 3000 thin_service install -N $REDMINE_SERVICE_NAME -c "$REDMINE_INSTALL_PATH" -p $REDMINE_INSTALL_PORT -e production # サービス起動 Start-Service Redmine
外部からアクセスする必要がある場合はFirewallのポートを開けておきます。
# ポート開放 New-NetFirewallRule -DisplayName $REDMINE_SERVICE_NAME -Group "Redmine" -Direction Inbound -Protocol Tcp -LocalPort $REDMINE_INSTALL_PORT -Action Allow
以上でインストールは完了です。
http://localhost:[$REDMINE_INSTALL_PORTのポート番号]/
にアクセスすればRedmineがふつうに使えます。
注意事項
今回の手順ではRedmineに対してHTTPのみ利用可能でHTTPSでアクセスすることができません。
通常ThinでHTTPSアクセスするには起動時の引数に--ssl
を付ければよいのですが、今回の環境では--ssl
を付けて起動しても、HTTPSでアクセスされたときにThin内部で利用してるEventMachineが以下の様なエラーを吐いてしまいます。
terminate called after throwing an instance of 'std::runtime_error' what(): Encryption not available on this event-machine
HTTPSアクセスするための方法は次のエントリで紹介します。