Ruby知識ゼロでRedmineを構築するまでの壁
Ruby の知識がゼロの状態で Redmine を構築するまでの奮闘をココに残そうと思います。
そもそも Redmine は使った事があったのだけど実際にイチからインストールした事は無く、今回は自分でインストールする必要があったのだけれども Ruby の知識はゼロ。 でも Java も PHP でもWEBアプリを動かすインフラの構築にはそれなりの知識を持ち合わせているので、Ruby環境もサクッと理解できるだろうと思ったわけですが・・・。
なお、どうせなので Ruby 関連のノウハウをまとめて残すページも作ってみました。 こういうインフラ構築系の作業は繰り返しやらないから手順をあっという間に忘れてしまいますしね。
まずは Ruby のインストールだ!
Redmine は Ruby で動いていることは知っていたので、「まずは Ruby のインストールだな」と言うことはすぐにわかりインストールの方法を探しました。
Linux の基本的な事として「ソースからインストールする」「yum でインストールする」ということは知っていたわけですが、Googleで「Ruby インストール」と検索すると何やら見慣れないインストール手順がたくさん結果に現れ「むむむ!」となったのが最初の壁となりました。
調べてみると Ruby をインストールするには4つの常套手段があると言うことが理解できてきました。
- ソースコードからインストールする
- yumでインストールする
- RVMでインストールする
- rbenv+ruby-buildでインストールする
とりあえず、この段階で頭を整理する意味も兼ねて「RubyをCentOS/RedHatにインストールする4つの方法」という記事を書きました。 それぞれのインストール方法の概要は記事をご覧ください。
という事で、一つ目の壁は、Ruby をインストールするという作業の中で RVM と rbenv+ruby-build という新しい知識が必要となり、自分にあった方法を判断する必要があった事でした。
rbenv+ruby-buildをインストールする
上記の調査結果を踏まえ、今回は rbenv と ruby-build を利用して Ruby をインストールすることに決めました。
rbenv をチェックアウトする知識として Git と、rbenv がシェルプログラムなので bash などの知識が必要となりました。 私は幸いにもそれらの基本知識は持ちあわせていたので難なく作業を進めることができましたが、それらの知識がない場合にはココも壁になり兼ねないなと感じました。
私は最初、GitHub の rbenv のページに書かれている方法で素直にインストールしてみたのですが、インストールが完了して「あれ? なんかやろうと思っていた事と違う・・・よな?」と違和感に気づきました。 rbenv も用途によってインストール方法を考慮する必要がありそうだという事が2つ目の壁でした。
調べてみると、GitHub の rbenv のページに書かれているインストール方法だと、ユーザーごとに rbenv をインストールすることになってしまうため、システム全体として(システムワイドに)インストールする場合は、 /usr/local などにインストールするようにする手順が必要でした。 /usr/local にチェックアウトすればいいんだねと分かれば特に難しい事はありませんでしたが、公式のインストール手順に騙されたというか、早とちりしてしまったというか。
このrbenvのインストール手順は、記事「rbenv+ruby-buildをインストールする手順 (CentOS/RedHat)」に調査した結果をまとめました。
やっと本当に Ruby のインストール!
rbenv + ruby-build のインストールが完了したことで、やっと Ruby がインストールできるようになりました。 特に難しい操作はなく Ruby をインストールすることができました。
rbenv install 2.1.0
このステップについても、記事「Rubyをrbenv+ruby-buildを利用してインストールする手順 (CentOS/RedHat)」にまとめましたので、詳しくはそちらを御覧ください。
Phusion Passenger のインストールと Apache 連携
Redmine を最終的には Apache 上で動かしたかったので調べてみると Phusion Passenger の存在を知ることができました。 なるほど、Phusion Passenger は Apache モジュールがあるのですね。 PHPの場合も mod_php モジュールを導入するので、同じようなものだと理解できました。
Phusion Passenger のインストール手順は、記事「Phusion Passenger の概要とインストール手順」にまとめました。 gem についても、yum や pear などを知っていたので、考え方的にも特に違和感なく使うことができました。
そして Apache との連携です。 VirtualHost に Ruby on Rails のアプリをのせる設定をするわけですが、 Ruby on Rails のアプリの構造を先に知っていればなんてことはないのですが、Ruby on Rails の知識も無しにやろうとしたもんだから、public ディレクトリを DocumentRoot に設定すれば良いという事をしらずに一瞬ハマりましたが、JavaのWarアプリのように決まった構造があるものだと理解できました。 Apache との連携については、記事「Apache 2.2 に Phusion Passenger をプラグインする手順 (CentOS/RedHat)」に整理しました。
やっと Redmine のインストールだ!
以上にて Apache 上で Ruby on Rails アプリケーションを動かすことができる環境が整いましたので、あとは Redmine のインストールです。
インストールは Redmine の公式ページを見ながら行いました、特にコマンドの実行で失敗することもなく難なく終了することができまして、最後に今一度 VirtualHost の設定をすれば Apache でめでたく動かすことができました。
最後にここまでの Redmine のインストール手順を、記事「Redmine 2.4 のインストール手順 (CentOS/RedHat | Apache | MySQL)」にまとめました。 これで手順の記事化も最後にしました。
おわりに
1日2~3時間、1週間かけて Redmine の構築についてじっくり学びました。 スピードが求められた仕事であれば Ruby もソースからインストールして、コマンド1つ1つの意味も考えずにひたすら構築してあっという間にインストールできたとは思いますが、ちょうど冬休みでしたので丁寧にじっくり学習を行いました。 お陰で Ruby on Rails の動作環境について基本的な事が学べたと思っています。 あとは bundle とか rake などのキーワードが「おまじない」程度でしか理解できていません(汗) これからもしばらくじっくり勉強して基礎知識を身につけていきたいと思っています。
ぁっ、あけましておめでとうございました。