公式のAmazon-Linux AMIがこなれてきたので、サードパーティのCentOSではなくAmazon Linuxを使うことが増えてきました。便利なんですが、一点だけ注意点があります。Amazonのaws関係ツールがRuby 1.8系に依存している為、Railsアプリ等でRuby 1.9系を利用する場合工夫が必要だということです。
対応策としては、2つあります。デフォルトのRubyをruby187等にリネームして、1.9系をメインで使う。そして、awsツールのソースのruby呼び出し部分を一括置換して、ruby187を呼び出すようにする。メリットとしては、 rubyのアプリを入れる時に特にrvmを意識しなくて良いのがGoodです。デメリットとしては、yum update等でawsツールがアップデートされる毎に、書き換えないといけないことです。
もう一つの方法としては、まっすぐrvmを利用することです。メリットとしては、複数バージョンのrubyの管理が簡単なこと。デメリットとしては、アプリによってはrvmの設定を明示的に書いておかないと動かないこと。capistranoのように、rvm用のモジュールに分離しているケースがあります。
今回は、rvmを利用するケースでの主なインストール手順を記載します。
タイムゾーンの変更
余りrvmもrailsも関係ないですが、解りづらいので最初に設定しておきましょう。
cp -i /usr/share/zoneinfo/Japan /etc/localtime
開発キットのインストール
Developer ToolsとLibrariesはまとめて入れると楽です。本番機等で管理の手間を最小限にしたい場合は、個別に必要なモジュールだけいれると良いと思います。
yum install git yum groupinstall "Development Tools" yum groupinstall "Development Libraries" yum install libxslt-devel yum install sqlite-devel
apache関係のインストール
特に工夫する所は無いです。
yum install httpd yum install mod_ssl yum install httpd-devel chkconfig httpd on
RVMのインストール
RVMのインストール方法は、割りとコロコロ変わるので公式サイトのクイックインストールを見るのが一番確実です。
ビルドに時間が割りと掛かります。
curl -L https://get.rvm.io | bash -s stable --ruby curl -L https://get.rvm.io | bash -s stable --rails curl -L https://get.rvm.io | bash -s stable --without-gems="rvm rubygems-bundler"
Passengerのインストール
gem install passenger --no-ri --no-rdoc passenger-install-apache2-module
Passengerの設定は、インストール完了時に出てくる設定を
/etc/httpd/conf.d/passenger.confあたりに貼り付けるとよいです。
後は必要に応じて、MySQLやSQLite等のDBクライアントを入れておくと良いと思います。個人的には、awsのツール群をさっさと1.9系に対応して頂きたいと思います。
Enjoy!