ぽらろいどの日記

新しい知見を得たり、得られた知見を記録したり共有したりする場を予定しています。

なんとかしてbitnamiを使わずにRedmine4.0.9をWindows10で起動する

いいカンバンのアプリケーションないかなと思っていたら、Redmineで使えるカンバンプラグインがあった。 it-managers-life.hatenablog.com

やった! と思ったが、Redmineはwindows10でbitnamiを使わない場合、大変にめんどくさいことを思い出した。

「いや、素直にbitnamiを使えば良いのでは?」

そうしたいのは山々なのだが、私は何か前に試そうとして逆に面倒になった前世の記憶があるので、できるなら飛ばしたかったのである。

というわけで、奮闘してbitnamiを使わずにRedmineをWindows10で起動する方法を探す旅が始まったのだった。

1. 基本手順

まず、見つけたのは以下の記事である。結論から言えばこの記事に従えば大体はできた。 water2litter.net

ruby2.4のインストール、database.ymlの変更、Bundlerのインストール。そして、Gemfile.localの編集をしてインストールし、秘密鍵を生成する……。

Eventmachineにエラーが出るところも同じである。よし、じゃあ記載してある解決法に従おうーーと思ったら、うまくいかない。どうやら、再インストールじゃ解決できなくなっているようだった。

解決方法を探さなければならない。


追記 20210604:本当はここでgem install eventmachine --platform rubyで適切なものをインストールしたあと、そのフォルダの名前を「eventmachine-1.2.7-x64-mingw32」だかなんだかに変えて、無理やり使えるようにすれば、すぐに問題が解決できたかもしれない。しかし、その解決策を見つけたのは後々の話なので、ここではそれとは違う方法で解決を試していた。なので、2章に進まずに先にこの方法を試してみた方がいいかもしれない。


2. EventMachineの解決(暫定的な)

というわけで、見つけたのが下の解決方法だ。

github.com

eventmachine.rbに追記をして、問題を回避しようとする作戦である。これで、Eventmachineの問題は解決だ!

ちなみに、純粋にこの手順に従おうとして、ridk exec pacman -Sy opensslを実行しようとするとキーがどうのこうのと言われる。

恐らく追記だけでいいはずだが、全部試してみたければ以下の記事が参考になる。

o-murasaki.liblo.jp

3. マイグレーションの問題回避

あとはインストール完了まで一直線のはずだ。最後にいくつかのマイグレーションのコマンドなどを叩くだけだからだ。

だが残念なことに、これもうまくいかなかった(thinが)。

ただ、ありがたいことに、今度はきちんとしたサポートがある。公式のページだ!(これなら間違いなはずがない)

www.redmine.org

Step6からStep 9まで、丁寧にWindows syntaxが書いてあるので、そのままコピーして利用すればいいだけだ(もちろん、日本語の話者ならset REDMINE_LANG=frset REDMINE_LANG=jaにしよう)。

そして、記事の通り、thinは避けることで当面解決とした。

4. 完了 - ローカルでの起動成功

最後のコマンドも起動し終えて、サービスが起動できることも確認した。ここまで来れば、やっとプラグインが入れられる。インストールの手順通りにプラグインのフォルダに入れて、再起動をすれば使えるようになる。

フォルダ下のmodels/constants.rbの設定をいじれば、コメントの自動挿入を出さないように変更することもできる。

これでローカルでの起動は完了だ。

追記 20210604 thin, thin_serviceの問題を解決する

なお、thin -> thin_serviceをつかってサービス化したい場合はもう少し手順が必要になる。

thin, thin_serviceのインストール

まず、bundlerでthin_serviceを入れると色々問題が起こるらしいので(下記リンクによると)gem install thin_serviceでインストールする(すでに入っている場合はインストールし直しても良いかもしれない)。

blog.shibata.tech

thinでの起動

そしたらGemfile.localを編集、bundlerでthinをインストールし、thin -e production -p 3000 -c c:\redmine-x.x.x startをすれば、起動できるはずだ。

――だが、この最後の起動時にまたもや失敗する。

ここでは、2点問題がある。

  1. no implicit conversion of nil into String: 暗黙の変換はダメだと言われる
  2. Eventmachine.get_sockname( @.. ): 戻り値が何もない
thinの問題解決

なので、手動で2つの変更を加える必要がある。

  1. C:\Rubyxx-x64\lib\ruby\gems\x.x.x\gems\thin-x.x.x\lib\thin\backends\tcp_server.rbを開いて、17行目を~~~ = EventMachine.get_sockname( @ ).to_sに変更する。こうすると、明示的に文字列に変換できる(https://teratail.com/questions/171144)。
  2. gem install eventmachine --platform rubyで適切なものをインストールしたら、そのフォルダの名前を「eventmachine-1.2.7-x64-mingw32」だかなんだかに変えて、無理やり使えるようにする。

こうすれば恐らくthinが問題なくなるので、thin -e production -p 3000 -c c:\redmine-x.x.x startが使えるはずだ。

thin_serviceでのサービス化

thinが無事使えることを確認したら、thin_service install -N Redmine -c c:\redmine-4.0.9 -p 3000 -e productionを使えばサービスが作成されるので、あとはそのサービスを起動するなり登録するなりすれば良い。

FIN.