kotememo

【Windows】インストールせずにバイナリ版でRedmineを起動したい

はじめに

バイナリ版の組み合わせでRedmineを起動できるようにしました。

Dockerを利用したほうがいいと思いながらも、そもそもインストールに制限がある等の状況を想定しています。

(追記 2023/1/6)

始めはJRubyでRedmineを起動しましたが、Git連携が上手くいかなかったためRubyInstallerで入れ直しました。

そのため、Rubyのパッケージを取得するためのMSYS2のみレジストリにインストールしています。

Redmineの起動まで成功すればMSYS2の無い別環境にもファイルコピーするだけで起動できるはずです。

環境

  • Windows 10 Home
  • 本体 → Redmine 4.2.9
  • Ruby → JRuby 9.3.9.0 (→RubyInstaller-2.7.7-1)
  • OpenJDK → Amazon Corretto 17.0.5.8.1
  • データベース → PostgreSQL 14.6.1

概要

主にRedmineのインストールガイドを参考にしています。

  1. 必要データのダウンロード
  2. パスの設定ファイル作成
  3. PostgreSQLの準備
  4. Redmineの設定
  5. Redmineの起動バッチ作成

1. 必要データのダウンロード

Redmineに必要なツールをダウンロードし、任意のディレクトリに格納します。

以降、このディレクトリを%REDMINE_ROOT%と表記します。

%REDMINE_ROOT%
├─amazon-corretto-17.0.5.8.1-windows-x64-jdk
├─ImageMagick-7.1.0-56-portable-Q16-x64
├─jruby-dist-9.3.9.0-bin
├─postgresql-14.6-1-windows-x64-binaries
└─redmine-4.2.9

(追記 2023/1/6)

JRubyではなくRubyInstallerの場合はRubyのパスが変わります。

%REDMINE_ROOT%
├─amazon-corretto-17.0.5.8.1-windows-x64-jdk
├─ImageMagick-7.1.0-56-portable-Q16-x64
├─rubyinstaller-2.7.7-1-x64
├─postgresql-14.6-1-windows-x64-binaries
└─redmine-4.2.9

1.1. Redmine

Redmineダウンロードページよりredmine-4.2.9.zipをダウンロードします。

1.2. Ruby

Redmineと対応Rubyバージョンのページより必要なRubyのバージョンを確認します。

今回はRedmine4.2.9をインストールするため、Ruby2.6.Xに対応しているバイナリ版Jruby9.3.9.0としました。

JRubyのダウンロードページよりJRuby 9.3.9.0 Binary .zipをダウンロードします。

(追記 2023/1/6)

JRubyでもRedmine起動は出来ましたが、Git連携が出来ませんでした(Windowsと相性が悪い?)。

そのため、RubyInstallerに切り替えました。

RubyInstallerのダウンロードページより7-ZIP ARCHIVES版のRuby2.7.7-1をダウンロードします。

後の工程でRubyの必要パッケージをインストールしますが、Devkit(MSYS2)が必要です。

そのためMSYS2を事前にインストールしておきます。

1.3. OpenJDK

OpenJDKにはAmazon Correttoを利用します。

Amazon Corretto 17のダウンロードページよりamazon-corretto-17-x64-windows-jdk.zipをダウンロードします。

1.4. PostgreSQL

PostgreSQLのダウンロードページよりバイナリ版をダウンロードします。

今回はPostgreSQLバージョン14.6をダウンロードしています。

1.5. ImageMagick

エクスポート時の画像操作に必要なようです。念のために入れておきます。

ImageMagickのダウンロードページよりWindowsバイナリ版ImageMagick-7.1.0-56-portable-Q16-x64.zipをダウンロードします。

2. パスの設定ファイル作成

各実行ファイルのパスを一時的に設定するバッチファイルsettings.bat%REDMINE_ROOT%ディレクトリに格納します。

set REDMINE_ROOT=%~dp0

set JAVA_HOME=%REDMINE_ROOT%amazon-corretto-17.0.5.8.1-windows-x64-jdk\jdk17.0.5_8
set JRUBY_HOME=%REDMINE_ROOT%jruby-dist-9.3.9.0-bin\jruby-9.3.9.0
set POSTGRES_HOME=%REDMINE_ROOT%postgresql-14.6-1-windows-x64-binaries
set IMAGICK_HOME=%REDMINE_ROOT%ImageMagick-7.1.0-56-portable-Q16-x64
set REDMINE_HOME=%REDMINE_ROOT%redmine-4.2.9

set PATH=%PATH%;%JAVA_HOME%\bin
set PATH=%PATH%;%JRUBY_HOME%\bin
set PATH=%PATH%;%IMAGICK_HOME%

rem PostgreSQLスーパユーザのパスワード(PostgreSQL設定時に合わせる)
set PGPASSWORD=postgres

(追記 2023/1/6)

JRubyではなくRubyInstallerの場合はRubyのパスが変わります。

set REDMINE_ROOT=%~dp0

set JAVA_HOME=%REDMINE_ROOT%amazon-corretto-17.0.5.8.1-windows-x64-jdk\jdk17.0.5_8
set RUBY_HOME=%REDMINE_ROOT%rubyinstaller-2.7.7-1-x64
set POSTGRES_HOME=%REDMINE_ROOT%postgresql-14.6-1-windows-x64-binaries
set IMAGICK_HOME=%REDMINE_ROOT%ImageMagick-7.1.0-56-portable-Q16-x64
set REDMINE_HOME=%REDMINE_ROOT%redmine-4.2.9

set PATH=%PATH%;%JAVA_HOME%\bin
set PATH=%PATH%;%RUBY_HOME%\bin
set PATH=%PATH%;%IMAGICK_HOME%

rem PostgreSQLスーパユーザのパスワード(PostgreSQL設定時に合わせる)
set PGPASSWORD=postgres

3. PostgreSQLの準備

データクラスタ、ログ、本体の階層は次のようにしています。

%REDMINE_ROOT%
└─postgresql-14.6-1-windows-x64-binaries
  ├─data
  ├─log
  └─pgsql

ここではコマンドのみを記載します。%REDMINE_ROOT%は自身で配置したパスに置き換えてください。

データクラスタ作成時のスーパユーザのパスワードはsettings.batに合わせてpostgresとします。

rem データクラスタ作成
cd %REDMINE_ROOT%
call settings
cd %POSTGRES_HOME%
mkdir data
mkdir log
set data_dir="%POSTGRES_HOME%\data"
%POSTGRES_HOME%\pgsql\bin\pg_ctl initdb -D %data_dir% -o "-U postgres -E UTF8 --no-locale -A scram-sha-256 -W"

rem PostgreSQL起動
set data_dir="%POSTGRES_HOME%\data"
set log_file="%POSTGRES_HOME%\log\postgresql.log"
%POSTGRES_HOME%\pgsql\bin\pg_ctl start -w -D %data_dir% -l %log_file% -o "-p 5432"

rem PostgreSQLログイン
%POSTGRES_HOME%\pgsql\bin\psql -h localhost -p 5432 -U postgres -d postgres

PostgreSQL設定の詳細な手順は過去記事を参照してください。

4. Redmineの設定

4.1. Redmine用のロール、データベース作成

PostgreSQLにスーパユーザpostgresでログインし、Redmine用のロールと空のデータベースを作成します。

テスト的に全て同じredmineにしています。

  • ロール名:redmine
  • パスワード:redmine
  • データベース名:redmine
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'redmine' NOINHERIT VALID UNTIL 'infinity';
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;

4.2. データベースへの接続設定

%REDMINE_ROOT%\redmine-4.2.9\config内のdatabase.yml.exampleを同ディレクトリにdatabase.ymlとしてコピーします。

その後、database.ymlの中身を削除し、PostgreSQLの内容のみを記述します。

# PostgreSQL configuration example
production:
 adapter: postgresql
 host: localhost
 port: 5432
 database: redmine
 username: redmine
 password: "redmine"

4.3. 依存するソフトウェアのインストール

%REDMINE_ROOT%\redmine-4.2.9\Gemfileを開き、一部内容を変更します。

  • Windows端末のため後半情報を削除
# 修正前
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :x64_mingw, :mswin]

# 修正後
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data'
  • JRubyのためコメントアウト(※RubyInstallerの場合は修正しない)
# 修正前
# Optional Markdown support, not for JRuby
group :markdown do
  gem 'redcarpet', '~> 3.5.1'
end

# 修正後
# Optional Markdown support, not for JRuby
# group :markdown do
#   gem 'redcarpet', '~> 3.5.1'
# end
  • PostgreSQLのためアダプタ追加
# 修正前
      when /postgresql/
        gem "pg", "~> 1.2.2", :platforms => [:mri, :mingw, :x64_mingw]

# 修正後
      when /postgresql/
        gem "pg", "~> 1.2.2", :platforms => [:mri, :mingw, :x64_mingw]
        gem 'activerecord-jdbcpostgresql-adapter'

4.4. 依存するソフトウェアのインストール

Redmineに必要なgemをインストールします。

%REDMINE_ROOT%は自身で配置したパスに置き換えてください。

cd %REDMINE_ROOT%
call settings
cd %REDMINE_HOME%
bundle config build.pg --with-pg-config=%POSTGRES_HOME%\pgsql\bin\pg_config
bundle install --without development test

4.5. セッションストア秘密鍵の生成

コマンドを実行します。

cd %REDMINE_ROOT%
call settings
cd %REDMINE_HOME%
bundle exec rake generate_secret_token

4.6. データベースのテーブル等の生成

PostgreSQLを起動している状態でコマンドを実行します。

cd %REDMINE_ROOT%
call settings
cd %REDMINE_HOME%
set RAILS_ENV=production
bundle exec rake db:migrate

4.7. デフォルトデータの生成

PostgreSQLを起動している状態でコマンドを実行します。

cd %REDMINE_ROOT%
call settings
cd %REDMINE_HOME%
set RAILS_ENV=production
set REDMINE_LANG=ja
bundle exec rake redmine:load_default_data

4.8. インストールの確認

WEBrickによるwebサーバを起動し、正常に動作するか確認します。

成功すれば、ブラウザで http://localhost:3000/ を開くとRedmineのページが表示されます。

Redmineの初期ユーザ名とパスワードは共にadminです。

cd %REDMINE_ROOT%
call settings
cd %REDMINE_HOME%
bundle exec rails server webrick -e production

5. Redmineの起動バッチ作成

Redmineの起動バッチを%REDMINE_ROOT%に配置しておけば、次回以降の起動が楽になります。

PGPASSWORDにpostgresユーザのパスワード設定後、PostgreSQLを起動しRedmineを起動しています。

終了する場合はCtrl+Cです。

cd %~dp0
call settings

set data_dir="%POSTGRES_HOME%\data"
set log_file="%POSTGRES_HOME%\log\postgresql.log"
set PGPASSWORD=postgres
%POSTGRES_HOME%\pgsql\bin\pg_ctl start -w -D %data_dir% -l %log_file% -o "-p 5432"

cd %REDMINE_HOME%
bundle exec rails server webrick -e production