2011年12月9日金曜日

CentOS 5.7 に ruby 1.9.3 と Ruby on Rails 3.1.3 をインストール

実行環境:
CentOS 5.7
sqlite3 5.7.4
ruby 1.9.3
Rails 3.1.3
新しいマシンにOSからインストールしたので Rails を使えるようにするまでのメモです。

checkinstall をインストール

これからインストールするアプリケーションは yum で入れられないものが多いので、ソースをダウンロードしてきて入れる訳ですが、直にインストール(直接 make install)すると消したくなったときに大変なのでRPM化してからインストールしたいところ。そのRPM化をしてくれるツールがcheckinstallです。

使い方は簡単で、通常のインストール手順で
# ./configure
# make
# make install
とするところを、「make install」に変えて「checkinstall -R」コマンドをうちます。
# ./configure
# make
# /usr/local/sbin/checkinstall -R
-R オプションはRPMパッケージを作ってくれという指示です。(-R を指定しないと途中でどんなパッケージを作るか聞かれますのでそこで RPM と答えてもいいです。)後はデフォルトの選択肢を選んでいけば(リターンキー連打で)大丈夫です。

うまく行けば「/usr/src/redhat/RPM/i386/」ディレクトリに RPM ファイルができますので、後はそれを rpm コマンドでインストールすればOK。
# rpm -ivh /usr/src/redhat/RPM/i386/**********.rpm
もしアンインストールしたくなったら
# rpm -e **********.rpm
こんな感じで消せます。
使い方がなんとなく分かったところで、まずは checkinstall 自体を入れてあげないといけません。

まずはwebからソースを取ってきて普通にインストールします。
# cd /usr/local/src      #<== このフォルダにソースを展開する 
# wget http://asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz
# tar zxvf checkinstall-1.6.2.tar.gz
# cd checkinstall-1.6.2
# make
# make install
これでインストール完了。

なんだけど、後々のために RPM 化して上書きインストールします。
# /usr/local/sbin/checkinstall -R    #<== 上からの続きでまだ checkinstall-1.6.2 ディレクトリにいます。
いろいろなことを言ってきますが、基本的にデフォルトの返事でOKなのでリターンキーで進みます。

ほいでもって、RPM化できたら rpm コマンドでそのファイルをインストールします。
# cd /usr/src/redhat/RPMS/i386
# rpm -ivh checkinstall-1.6.2-1.i386.rpm


sqlite3 3.7.4をインストール

CentOS5の標準でインストールされるsqlite3のバージョンが 3.3.x とちょっと古いのでアップデートします。 sqlite3 自体が古いと ruby 用の sqlite3 アダプタの新しいものがインストールできないので rails を入れる前にアップデートしておきます。 でも yum でインストールできるのは全然新しくないので、ソースをダウンロード ⇒ checkinstall ⇒ rpm の流れでインストールします。
# cd /usr/local/src 
# wget http://www.sqlite.org/sqlite-autoconf-3070400.tar.gz
# tar xzvf sqlite-autoconf-3070400.tar.gz
# cd sqlite-autoconf-3070400
# ./configure
# /usr/local/sbin/checkinstall -R
# rpm -ivh /usr/src/redhat/RPMS/i386/sqlite-autoconf-3070400-1.i386.rpm


いよいよ ruby 1.9.3 のインストール

ruby 1.9.3 のインストールには、事前に libyaml-devel が必要との情報をゲットしたので、先にインストールしておきます。
# yum install libyaml-devel
次は本丸の ruby です。
# cd /usr/local/src
# wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz
# tar zxvf ruby-1.9.3-p0.tar.gz
# ./configure
# make
んで、ここから checkinstall で RPM 化したいのですが、やってみると途中で止まったようにえらい時間がかかるようです。 Web上の評判だと8~10時間くらいかかるそう。そんなに待ってられないのでここはやむなく直にインストールします。ちぇっ。
# make install


Ruby on Rails 3.1.3 のインストール

Rails のインストールですが、ruby と一緒に gem コマンドがインストールされるのでそれを使います。
# gem install rails
さらに必要なものを gem で入れます。
# gem install sqlite3


Railsアプリケーションの公開(デプロイ)

デプロイには passenger を使いたいと思います。Apache のモジュールとして組み込めるので、システムを再起動しても勝手に起動してくれるので楽ちんです。 インストールは gem で行います。
# gem install passenger
そしてビルドとインストールを次のコマンドで実施します。
passenger-install-apache2-moduleiryo
このコマンドの最後の方で、httpd.conf に追記する設定が表示されるので、それをコピーして httpd.conf の末尾にペーストします。(下記の内容は使っている環境によって異なるので注意)
/etc/httpd/conf/httpd.conf
LoadModule passenger_module /usr/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/ext/apache2/mod_passenger.so ailsSpawnServer /usr/lib/ruby/gems/1.8/gems/passenger-1.9.1/bin/passenger-3.0.11 RailsRuby /usr/local/bin/ruby

次にアプリケーションを設定します。
1つのサーバで複数のアプリケーションを走らせたいと思います。
実現方法はざっくりと
① VirtualHost を複数設定してアプリケーション毎に1つの VirtualHost を割り当てる方法
② Host は単一として、DocumentRoot にサブディレクトリを切ってアプリケーション毎にサブディレクトリを割り当てる方法
が考えられます。
最終的には趣味の問題ですが、ここでは②のやり方で行きたいと思います。

Webの公開ディレクトリ内の構成は、3つのRailsアプリケーション(MyApp1, MyApp2, MyApp3)があるとしたら
DocumentRoot
 ├─ MyApp1    #<== MyApp1のpublicディレクトリのシンボリックリンク
 ├─ MyApp2    #<== MyApp2のpublicディレクトリのシンボリックリンク
 └─ MyApp3    #<== MyApp3のpublicディレクトリのシンボリックリンク
というような形にします。

httpd.confの末尾にそれぞれの Rails アプリケーションのURI的パスを記載します。
/etc/httpd/conf/httpd.conf
RailsBaseURI /MyApp1 RailsBaseURI /MyApp2 RailsBaseURI /MyApp3
これで httpd を再起動すればOKです。
# /etc/rc.d/init.d/httpd restart

0 件のコメント:

コメントを投稿