Webサーバの性能を考えますと、Redmineは、Linux に準備すべきと思うのですが、どうしても、Windowsサーバを使いなさいとの指示で、勉強してみました。
以前、Linux(debian想定)に準備したときの資料を参考にします。
RaspberryにRedmine6を立てる
Postgres
ダウンロードして、Installしましょう
https://www.postgresql.org/download/windows/
※何を使うにしても、新しいバージョン程、望ましいと思いますが、セットアップするRedmineが対応しているかも重要です。(私は17で作業しています)
Install作業は、概ね、デフォルトのままで問題ありません。
インストールが終わると、「pgAdmin4」という管理画面機能がありますが、
「SQL Shell (psql)」という機能も用意されており、Linuxのコマンド操作に慣れている方は、こちらが御勧めです。
という事で、私は後者のコマンド作業です。
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'password' NOINHERIT VALID UNTIL 'infinity';
※個人的には見慣れないオプションがあるので解説です
ENCRYPTED: 指定されたパスワードが暗号化されて保存されます
NOINHERIT: 権限を自動的に継承せず、GRANTコマンドで権限を付与する必要あり
VALID UNTIL 'infinity': パスワードの有効期限が無期限です
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
redmine用のロールを作成し、データベースも作成します。
Ruby
ダウンロードして、Installしましょう
https://rubyinstaller.org/downloads/
Redmine6のrubyの対応は、3.3がmaxのようでした。
Install作業は、概ね、デフォルトのままで問題ありません。最後に、MSYS2のSetUpを行うようにしましょう。
MSYS2のセットアップ画面は、DOS窓になってます。とりあえず、
1.base installation
2.system update
の2つを順に実行しておきましょう。
Redmine
ダウンロードして、解凍しましょう
https://www.redmine.org/projects/redmine/wiki/Download
データベースの設定ファイルを更新しましょう
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "password"
encoding: utf8
PowerShellを管理者で実行します。
カレントディレクトリをredmineのホームへ変更して、順にコマンドを実行します。
gem install bundler
bundle install
bundle exec rake generate_secret_token
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake redmine:load_default_data RAILS_ENV=production
起動して確認
$env:RAILS_ENV="production"
bundle exec puma -p 3001
※以前のRedmineのバージョンでは、Webサーバはwebricが用意されていました。
ただ、webricは、シングルスレッドで動作するため、同時リクエストの処理能力が低く、採用されなくなったのかなぁ...と。
現在採用されているのは、「puma」なのですが、windowsでは並行処理モードがサポートされず、並行処理能力が制限されています。 (これが冒頭のLinuxが良いと感じる理由です)
ちなみに、webサーバの設定を変更したい場合は、Redmineホームの「config.ru」を編集しましょう。
対応例)RestAPIで他のWebに利用したい場合の、「CORS」エラーへの対応
① Redmineのホームの「Gemfile」の最終行に、「gem 'rack-cors'」を追加
② bundle install
③ Redmineのホームの「config.ru」を編集 (utf8で更新しましょう)
require_relative 'config/environment'
require ::File.expand_path('../config/environment', __FILE__)
require 'rack/cors'
use Rack::Cors do
allow do
origins 'http://localhost:3000' # RestAPIを利用するサイト
resource '/users.json', :headers => :any, :methods => [:get, :post, :options] # 許可するリソースとHTTPメソッドを指定
end
end
run Rails.application
以上の作業後、Redmineを再起動する事で、CORSエラーが解消します。
お疲れさまでした~。