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