調べた情報のメモ書き。
CentOS7にRedmine2系を入れる場合とか。
◆RubyとRails
CentOS7に用意されてるRubyで対応できるRedmineなら、Rubyの導入はyumで済む。
具体的には、
ここに記載があったが、Redmine2.4でRubyの1.9.3と2以降に対応している。(古いバージョンの情報は不明)
端的にバージョンだけ書くと、Redmine2.4以降であればRubyの1.9と2.0の何方でも動くため、CentOS7に直接インストールすることが可能。
◆Passenger
gemでインストールする関連パッケージは基本的に自動で対応するバージョンの物を導入してくれるが、Passengerはバージョンに注意が必要。
Redmine1.X系の場合は、Passengerの3系列
Redmine2.X系の場合は、Passengerの4系列
Redmine3.X系の場合は、Passengerの5系列
でないと動作しないらしい。
これで実際に詰まったんだけど、具体的にどう動かないのかというと、例えばDBの初期設定も行わずとりあえずアクセスしようとした際に、トップページにエラーすら表示できない。
Passenger周りの導入が出来ていない場合は、httpdやpassengerのエラーコードを拾うことすらでき無いので、ここは要注意点。
逆に言うと、Redmine/public を表示しても"index of /~" や"404"になる場合は、Passenger周りの導入で失敗している可能性が高い。
◆Mysql
先程のリンクのページ(redmine.jp)にも書いてあるのだが、Redmine2.X以下はMySQL5.7.3以降との互換性が無いらしい。
CentOS7でデフォルトで導入されるMariaDBもこれに該当すると思われる。
ちなみに、一応導入しようとしてみたが、Redmine2.X系でDBを作成しようとしたとき(rake db:migrateの実行時)にプライマリキーのエラーが発生するため、CentOS7の最新DBでやりたい場合はRedmine側も3.0系で導入する必要があるようだ。
今回は、Redmine2.X系のデータを加工なしで移行するという要件だったので、
Dockerを用いてCentOS7上にMySQL5.2以下の環境を構築した。
◆Docker
CentOS上でコンテナを用いて、仮想OSなどを稼働するソフトウェア。
CentOS7上でCentOS6そのものを稼働させたり、
仮想プロセスとして複数バージョンのMySQLDBを稼働させたりということが出来るらしい。
それだけならば今までもやりようはあったが、Dockerfileというファイルを用いることで、仮想環境のもととなるビルドを簡単に構築できるのが特徴。
具体的には、
Dockerfileと設定ファイルを事前に用意しておけば、それと同じ環境を構築・複製することが非常に簡単なのがメリットと感じた。
ちなみに今回は、移行後サーバ(Cent7)にMySQLのアクセスがあった場合に、CentOS6の仮想プロセスで稼働しているMySQLへ転送し、CentOS6上でyumインストールしたMySQL5.1にアクセスさせるように設定した。
とっつきにくい点の一つとして、利点であるDockerファイルの記法や起動方法を覚える必要がある点と、仮想プロセスの維持にクセがあることがあげられる。
例えば、MySQLを稼働させておきたい場合、下記の参考サイトにあるように、「service mysqld start」とDockerfileのCMDで実行すると、処理が完了扱いになってプロセスが終了してしまう。
CMDコマンドで実行したプロセスが終了した時点で、仮想全体が終了してしまうらしい・・・が、この辺はまだ理解が追いついてないので勉強しないとな。
参考
Dockerコンテナ内に
MySQLサーバを立てる
CentOS6でMySQL5.1を稼働させるだけのDockerfile
反面、運用サーバの構築などでは、失敗した場合に元に戻す(導入したパッケージを削除したりとか)のが大変だったりするが、DockerではDockerfileのみを修正すれば1からリビルドできる利点が大きいため、CentOS7上でMariaDBをDockerで動かしたりとかするメリットもあるっちゃあるみたい。
Dockerのプロセスに入る場合、exit等のコマンドを実行するとDockerのプロセス自体が終了してしまったりするので、癖はある。
また、導入時に気を付けなければいけないのは、Dockerで特に指定しない場合は起動したコンテナ内部で処理が完結してしまうため、例えばDockerのコンテナ内のDBデータやログを参照したい場合に注意が必要ということ。
ここは導入時にしっかり設定しておかないと運用開始してからの設定では遅い。
公式の
Docker.Hubというサイトで既存イメージを入手することが出来るので、大幅に作業短縮できるメリットをとるかどうか。といったところか。a