Rocky Linux 8.6 へ Redmine 5.0をインストールする。

Pocket

はじめに

Rocky Linux 8.6(8.5で良いのですが。。。)へRedmine 5.0をインストールしている情報が見当たらなかったので、トライしてみることにしました。
入手のし易さからすると、Redmine 4.xをインストールする感じだったのですが、Rubyの2.7は通常メンテナンスフェーズを終了している様なので、Ruby 3.0以降を導入するのがベターと考えました。
更には、Ruby 3.0以降をサポートしているのは、Redmine 5.0以降という情報もあり、やっぱりこの選択肢を選ぶことになるな・・・という感じです。

まあ、色々と問題は出てくると思いますが、取り敢えず進めて行こうと思います。

彼是5年程前にRedmineをインストールした記録があります。
https://tech.godpress.net/?p=610
インターネット上で確認出来る資料と、過去を思い起こしながらインストールを進めたいと思います。

環境確認

今回インストールを行うサーバは、既に別の作業を進めていたこともあり、以下の構成が既に構成されています。

OS:Rocky Linux 8.6
DB:Mariadb 10.3

epel-releaseリポジトリはインストール済みでした。

一応、コマンドで確認しておきます。
# mysql –version
mysql Ver 15.1 Distrib 10.3.32-MariaDB, for Linux (x86_64) using readline 5.1

他に必要そうなものは入っていなかったみたいです。

インストール

基本的なパッケージのインストール

データベースのインストール方法については割愛します。

それでは必要なパッケージ類を問答無用でインストールしてしまいます。

# dnf install epel-release
# dnf groupinstall "Development Tools"
# dnf install openssl-devel readline-devel zlib-devel curl-devel
# dnf install --enablerepo=powertools libyaml-devel
# dnf install httpd httpd-devel
# dnf install --enablerepo=powertools ImageMagick ImageMagick-devel

ここまでは順調でしたが。。。。フォントのインストールが上手く行きません!?

# dnf install --enablerepo=powertools ipa-pgothic-fonts

色々探してみて、こんな感じでインストールします。

# rpm -Uvh https://pkgs.dyn.su/el8/base/x86_64/ipa-pgothic-fonts-003.03-14.el8.noarch.rpm

Rubyインストール(自己責任で!)
#あまりここの部分は信用しないように(^^;

さて、ここからは私の勘です!間違っていたらご容赦ください。
ちなみに、私はVM上に環境構築を行っています。
自信もないので、知れっとスナップショットを作成して、Rubyインストール前の環境を保存しておきます。

何故この様なことをするかと言いますと、他のサイトで記載されている方法はrpmを直接インストールする方法が取られています。
私は、パッケージのバージョン管理を極力省くためにdnfでのインストールを行う様にしています。(好みの問題ですね)
rpmでインストールした場合でもdnfでインストールの確認などを行えることは重々承知しているのですが、リポジトリとして管理されているかというと、そうではないでしょう(想像)。
ということは、更新があったことを知る術が無い。
後々の構成管理に矛盾が生じてしまうのではないか?

ということで、出来るだけdnfでインストールを行いたいと思っています。

今回、Rubyのサポート状況などを気にしていることもあり、出来れば3.0以降を導入したい訳ですが、果たして3.0以降を素直にインストールさせてくれるでしょうか?

# dnf list | grep -i ruby
kf5-kross-ruby.x86_64                                             21.08.3-1.el8                                             epel
libselinux-ruby.x86_64                                            2.9-5.el8                                                 appstream
mlt-ruby.x86_64                                                   6.24.0-4.el8                                              epel
munin-plugins-ruby.noarch                                         2.0.66-1.el8                                              epel
remctl-ruby.x86_64                                                3.17-4.el8                                                epel
ruby.i686                                                         2.5.9-109.module+el8.5.0+740+b85cbe0d                     appstream

結論としてRubyのバージョンは2.5.9と無残にもダメでした。
何かリポジトリを追加して・・・とか探していたのですが、これです!

# dnf module list ruby
メタデータの期限切れの最終確認: 1:57:02 時間前の 2022年06月04日 16時07分16秒 に実施しました。
Rocky Linux 8 - AppStream
Name                            Stream                             Profiles                              Summary
ruby                            2.5 [d]                            common [d]                            An interpreter of object-oriented scripting language
ruby                            2.6                                common [d]                            An interpreter of object-oriented scripting language
ruby                            2.7                                common [d]                            An interpreter of object-oriented scripting language
ruby                            3.0                                common [d]                            An interpreter of object-oriented scripting language

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled

インストール対象のモジュール一覧を確認出来ます。
2.5がデフォルトになっている様ですが、3.0の存在も確認出来ました!

では!

# dnf module enable ruby:3.0
メタデータの期限切れの最終確認: 2:01:26 時間前の 2022年06月04日 16時07分16秒 に実施しました。
依存関係が解決しました。
=======================================================================================================================================================================================
 パッケージ                                  アーキテクチャー                           バージョン                                   リポジトリー                                サイズ
=======================================================================================================================================================================================
モジュールストリームの有効化中:
 ruby                                                                                   3.0

トランザクションの概要
=======================================================================================================================================================================================

これでよろしいですか? [y/N]: y
完了しました!

再度確認してみると。。。

# dnf module list ruby
メタデータの期限切れの最終確認: 2:01:37 時間前の 2022年06月04日 16時07分16秒 に実施しました。
Rocky Linux 8 - AppStream
Name                            Stream                             Profiles                              Summary
ruby                            2.5 [d]                            common [d]                            An interpreter of object-oriented scripting language
ruby                            2.6                                common [d]                            An interpreter of object-oriented scripting language
ruby                            2.7                                common [d]                            An interpreter of object-oriented scripting language
ruby                            3.0 [e]                            common [d]                            An interpreter of object-oriented scripting language

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled

ということで、3.0がenableになりましたね。
これで通常と同じようにインストールを行うと3.0をインストールすることが出来ます。

# dnf install ruby
メタデータの期限切れの最終確認: 2:01:50 時間前の 2022年06月04日 16時07分16秒 に実施しました。
依存関係が解決しました。
=======================================================================================================================================================================================
 パッケージ                                  アーキテクチャー                バージョン                                                       リポジトリー                       サイズ
=======================================================================================================================================================================================
インストール:
 ruby                                        x86_64                          3.0.2-140.module+el8.5.0+668+665814fa                            appstream                           88 k
依存関係のインストール:
 ruby-libs                                   x86_64                          3.0.2-140.module+el8.5.0+668+665814fa                            appstream                          3.2 M
 rubygem-json                                x86_64                          2.5.1-140.module+el8.5.0+668+665814fa                            appstream                           99 k
 rubygem-psych                               x86_64                          3.3.0-140.module+el8.5.0+668+665814fa                            appstream                           98 k
弱い依存関係のインストール:
 ruby-default-gems                           noarch                          3.0.2-140.module+el8.5.0+668+665814fa                            appstream                           79 k
 rubygem-bigdecimal                          x86_64                          3.0.0-140.module+el8.5.0+668+665814fa                            appstream                          101 k
 rubygem-bundler                             noarch                          2.2.22-140.module+el8.5.0+668+665814fa                           appstream                          443 k
 rubygem-io-console                          x86_64                          0.5.7-140.module+el8.5.0+668+665814fa                            appstream                           72 k
 rubygem-rdoc                                noarch                          6.3.1-140.module+el8.5.0+668+665814fa                            appstream                          458 k
 rubygems                                    noarch                          3.2.22-140.module+el8.5.0+668+665814fa                           appstream                          318 k

トランザクションの概要
=======================================================================================================================================================================================
インストール  10 パッケージ

ダウンロードサイズの合計: 5.0 M
インストール後のサイズ: 16 M
これでよろしいですか? [y/N]: y

いや~知らんかった(^^ゞ
まだまだ修行が足りませんねw

実はここで悩みました。
他のサイトでインストールしている手順と異なるので、どこまで進んだのか解らなくなってしまいました(^^ゞ
取り敢えず、Rubyがインストールされたことを確認します。

# ruby -v
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux]

おぉ~Ruby 3.0.2がインストールされています!
多分、この辺りから再開かな?ということで、bundlerをインストールしてみます。

# gem install bundler
Fetching bundler-2.3.15.gem
Successfully installed bundler-2.3.15
Parsing documentation for bundler-2.3.15
Installing ri documentation for bundler-2.3.15
Done installing documentation for bundler after 0 seconds
1 gem installed

なんだろう。。。もやもやする。。。

でも、取り敢えず進めます。

データベースの設定

データベース(Mariadb)にRedmine用のユーザとデータベースを作成します。

# mysql -u root -p
MariaDB [(none)]> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'XXXX';
MariaDB [(none)]> GRANT ALL ON *.* TO 'redmine'@'localhost' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> CREATE DATABASE redmine CHARACTER SET utf8mb4;
MariaDB [(none)]> exit
Bye

リアルタイムOS上でmsやμs単位でプログラムを組んできた人間にとって、データベースなんてプログラムの足を引っ張る近寄るべからずな存在であり、使えたら良いのにな~という夢の存在でもありましたが、やはり苦手ですw

Redmine本体のインストール

ここまでは全て準備作業でした。
やっとここからRedmineの本体をインストールします。
なんかお手軽インストールの方法もあるようなのですが、最新版ではまだサポートされている気配が無かったので、地道にインストール作業を続けています。
大抵、こういう時は何かの罠に嵌るんですよねぇ~
Linuxのインストールでは毎度のことですが、予定が狂う(TT)

泣き言はやってから!ということで進めます。
以前はSVNを使ってインストールを行いましたが、それも良いのですが、良かったのかどうなのか?というところもありますので、今回はダウンロードで素直に挑んでみたいと思います。

適当なディレクトリへ移動して、パッケージをダウンロードします。
本家からダウロードします。
こちらで対象を確認します。

# cd /home/pkg/redmine
# curl -O https://www.redmine.org/releases/redmine-5.0.1.tar.gz
# tar zxvf redmine-5.0.1.tar.gz
# cd /var/lib
# ln -s /home/pkg/redmine/redmine-5.0.1 redmine
# cd redmine
# bundle install --without development test

ここでエラーが発生しました。
どうも幾つかのパッケージがインストールされていなかったようです。

# dnf install ruby-devel
# dnf list | grep mariadb-devel

多分、これで実行できるはずですが、もしそれでも上手く行かない場合は以下も試してみてください。(多分、関係ないと思いますが・・・)

# dnf install rubygem-mysql2.x86_64

再度実行します。

# bundle install --without development test
<省略>
undle complete! 42 Gemfile dependencies, 73 gems now installed.
Gems in the groups 'development' and 'test' were not installed.
Bundled gems are installed into `./vendor/bundle`
#

こんな感じで上手くインストール出来た様です。

セッションストア秘密鍵の生成を行います。

# bundle exec rake generate_secret_token

データベースへ接続するための設定を行います。

config/database.example.ymlをコピーしてconfig/database.ymlを作成します。
以下の示す様に、必要な項目を変更します。

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "my_password"

以下のコマンドを実行すると、データベース上にテーブルを作成してくれます。

RAILS_ENV=production bundle exec rake db:migrate

更に以下のコマンドを実行してデフォルトデータをデータベースへ登録します。

# RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data


Default configuration data loaded.

次に、passengerをインストールします。

# gem install passenger
# passenger-install-apache2-module –auto –languages ruby

しばらく時間が掛かります。
10分以上掛かったと思います。
次に、このコマンドで設定内容を確認します。

passenger-install-apache2-module –snippet

ここで表示される内容を記録しておきます。
その上で、Apacheの設定を追加します。

# vi /etc/httpd.conf/conf.d/redmine.conf
<Directory "/var/lib/redmine/public">
 Require all granted 
</Directory> 
# Passengerの基本設定。 
# passenger-install-apache2-module --snippet で表示された設定を記述。 
# 環境によって設定値が異なるため以下の3行はそのまま転記せず、必ず 
# passenger-install-apache2-module --snippet で表示されたものを使用すること。 
# 

LoadModule passenger_module /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.1.2/ buildout/apache2/mod_passenger.so 
<IfModule mod_passenger.c>
 PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.1.2
 PassengerDefaultRuby /usr/local/bin/ruby 
</IfModule> 
# Passengerが追加するHTTPヘッダを削除するための設定(任意)。 
# Header always unset "X-Powered-By" Header always unset "X-Runtime" 
# 必要に応じてPassengerのチューニングのための設定を追加(任意)。 
# 詳しくはPhusion Passenger users guide(https://www.phusionpassenger.com/library /config/apache/reference/)参照。 
PassengerMaxPoolSize 20 
PassengerMaxInstancesPerApp 4 
PassengerPoolIdleTime 864000 
PassengerHighPerformance on 
PassengerStatThrottleRate 10 
PassengerSpawnMethod smart 
PassengerFriendlyErrorPages off
# Passengerのログを別で出力する時はこんな感じです。記載しなくてもOKです。
# PassengerLogFile /var/log/httpd/passenger_error.log

RackBaseURI /redmine      <== これは後で追加の理由が解ります。

概ねこんな感じでOKですが、サイトによって記載が異なるので参考までに留めてください。

ディレクトリの権限を変更します。

chown -R apache:apache /var/lib/redmine

ここで、Aapcheを再起動?起動させればOKです。
念のために、フルセットで行っておきますね。

# systemctl stop httpd
# systemctl start httpd
# systemctl enable httpd

これだけやっておけばApacheの起動についてはOKでしょう!

ここで、このシステムをRedmineだけに使おうと思っていないので、少し変更してしまいます。

# cd /var/www/html
# ln -s /var/lib/redmine/public redmine

上記で既に記載していますが、/etc/httpd/conf.d/redmine.confに以下の設定を追加します。これでアクセス可能となります。

RackBaseURI /redmine
http://MyDomain/redmineへアクセスするとRedmineの画面が表示されるはず。。。だったのですが(^^ゞ
エラーが出たり色々ダメですw

他の環境ではここまでで行けるはずなのですが、私の環境では上手く行きませんでした。
こんな感じでエラーが出力されていました。

# tail -f passenger_error.log
[ N 2022-06-05 23:14:33.6804 10996/T8 Ser/Server.h:558 ]: [ServerThr.1] Shutdown finished
[ N 2022-06-05 23:14:33.6805 10996/Td Ser/Server.h:902 ]: [ApiServer] Freed 0 spare client objects
[ N 2022-06-05 23:14:33.6805 10996/Td Ser/Server.h:558 ]: [ApiServer] Shutdown finished
[ N 2022-06-05 23:14:33.7380 11018/T1 age/Wat/WatchdogMain.cpp:1373 ]: Starting Passenger watchdog...
[ N 2022-06-05 23:14:33.7587 11021/T1 age/Cor/CoreMain.cpp:1340 ]: Starting Passenger core...
[ N 2022-06-05 23:14:33.7588 11021/T1 age/Cor/CoreMain.cpp:256 ]: Passenger core running in multi-application mode.
[ N 2022-06-05 23:14:33.7662 11021/T1 age/Cor/CoreMain.cpp:1015 ]: Passenger core online, PID 11021
[ N 2022-06-05 23:14:34.7755 10996/T1 age/Cor/TelemetryCollector.h:531 ]: Message from Phusion: End time can not be before or equal to begin time
[ N 2022-06-05 23:14:34.8075 10996/T1 age/Cor/CoreMain.cpp:1325 ]: Passenger core shutdown finished
[ N 2022-06-05 23:14:36.8751 11021/T5 age/Cor/SecurityUpdateChecker.h:519 ]: Security update check: no update found (next check in 24 hours)

回避方法を記載しておきます。

# gem update strscan

どうもstrscanが古い様です。
新規にインストールしているところなのに不自然ではありますが、アップデートすることで問題の解決に至りました。不思議です。

再度アクセスすると画面が表示出来る様になりました。

このアップデートをする前は以下のコマンドを実行してブラウザでアクセスすると動作を確認出来ました。

bundle exec rails server -e production

こちらも、他のサイトでは以下の様になっていましたが、上記で動作を確認することが出来ました。

bundle exec rails server webrick -e production

自動でwebrickを認識する様で、必要ないみたいです。

サイトにアクセスしてからのID/パスワードはデフォルトで以下になります。

ID:admin
パスワード:admin

結構嵌りました。
もうしばらくすれば、安定したインストールを方法を記載したサイトが出てくると思います。
こちらのサイトは参考までに留めるのが良いかも知れませんね。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください