普段MacOSX Snow LeopardでRuby on Railsの開発をしているのですが、開発環境から本番環境に移すためにサラのCentOS5.5に環境を立てたのでその健忘録。
- Ruby 1.8.7のソースからのインストール
gccがそもそも入っていなかったのでgccからインストール。
$ sudo yum install gcc
その後Ruby 1.8.7をソースからインストール。
$ sudo wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz $ sudo tar zxvf ruby-1.8.7.tar.gz $ cd ruby-1.8.7 $ sudo ./configure $ sudo make $ sudo make install
無事、インストールが終了したら、PATHを通す。
$ cd ~/ $ vim .bash_profile
PATHに/usr/local/bin/rubyを追加しておく。:で追加するのを忘れずに。それからバージョンを確認。
$ ruby -v ruby 1.8.7 (2008-05-31 patchlevel 0) [i686-linux]
これでOK。
- RubyGems1.3.7をインストール
このバージョンはMacに立てている環境と同じものを用意。
$ sudo cd /usr/local/src/ $ sudo wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz $ sudo tar zxvf rubygems-1.3.7.tgz $ cd rubygems-1.3.7 $ sudo ruby setup.rb $ gem -v 1.3.7
問題なくインストールでき、確認。
- Rails2.3.8をインストール
$ sudo gem install rails -v 2.3.8
と実行すると、
no such file to load -- zlib (LoadError)
というわけで、zlibやらopensslやら足りなさそうなので、インストールしてRubyの拡張をインストール。
$ sudo yum install zlib $ cd /usr/local/src/ruby-1.8.7/ext/zlib/ $ sudo ruby extconf.rb --with-zlib-include=/usr/include --with-zlib-lib=/usr/lib $ sudo make $ sudo make install $ sudo yum install openssl $ sudo yum install openssl-devel $ cd /usr/local/src/ruby-1.8.7/ext/openssl/ $ sudo ruby extconf.rb $ sudo make $ sudo make install
これで再度。
$ sudo gem install rails -v 2.3.8 $ rails -v Rails 2.3.8
としてインストール終了。
- PosgresSQL 8.1をインストール
あとでpgをインストールする際に必要となるので、postgresql-develも入れておく。
$ sudo yum install postgresql-server $ sudo yum install postgresql-devel
これでOK。
細かいpostgreSQLの設定は、
http://www.crimson-snow.net/hmsvr/centos/db/postgresql.html
を参考に、ユーザー作ったり、外部からアクセスできるようにして、MacのpgAdminからの接続を確認して終了。
- pg0.10.0をインストール
$ sudo gem install pg -- --with-pg-config=/usr/bin/pg_config $ gem list | grep pg pg (0.10.0)
これで、RailsでPosgreSQLが使えるようになる。
自分は、/var/www/rails/application_nameに展開。
Railsアプリケーション自体の設定は、
http://guides.rubyonrails.org/v2.3.8/
を見ながら設定。おもにconfig/database.ymlの設定をして早速実行してみる。
$ cd /var/www/rails/application_name $ sudo rake db:create RAILS_ENV=production $ sudo rake db:migrate RAILS_ENV=production $ sudo ruby script/server -e production
http://hostname:3000/にアクセスしてみて動くことを確認してみる。
- Mongrelをインストールして、Mogrelで動かしてみる。
$ sudo gem install mongrel $ gem list|grep mongrel mongrel (1.1.5)
インストールは完了。
$ cd /var/www/rails/application_name $ sudo mongrel_rails start -d production -p 3000 -B
http://hostname:3000/にアクセスして動くことを確認。
$ sudo mongrel_rails stop
これで終了しておく。
ちゃんと起動できているかも
$ vim /var/www/rails/application_name/log/mongrel.log
でログを確認してみる。特にエラーがなければOK。
と思いきや。リダイレクト処理などがうまく行かない様子...。
(追記)
どうやらこのMongrel1.1.5とRails2.3.8の組み合わせにはバグが有るらしく、
https://gist.github.com/471663
でダウンロードできるmongrel.rbをRailsアプリケーションのconfig/initializer/においてあげないと正しく動かないようでした。
これで解決。詳しくは、
https://rails.lighthouseapp.com/projects/8994/tickets/4690
今回は静的ファイルが少ないのでMongrelだけで本番環境を構築します。というわけで、chkconfigに追加する方法も紹介。
$ sudo vim /etc/init.d/application_name
を編集し、
#!/bin/sh # chkconfig: 2345 86 25 # description: application_name # MONGREL=/usr/local/bin/mongrel_rails PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin/ruby APPLICATION_NAME_PATH=/var/www/rails/application_name case "$1" in start) $MONGREL start -e production -d -p 3000 -c $APPLICATION_NAME_PATH ;; stop) $MONGREL stop -c $APPLICATION_NAME_PATH ;; esac exit 0
のようにしておく、
$ sudo chmod 755 /etc/init.d/application_name $ sudo chkconfig --add application_name $ sudo /sbin/chkconfig --list | grep application_name application_name 0:off 1:off 2:on 3:on 4:on 5:on 6:off
このようにRunレベル2〜5で動くようになっていればOK。
$ sudo reboot
で再起動して、サービスが起動しているかhttp://hostname:3000/にアクセスして確認してみる。
$ vim /var/www/rails/application_name/log/mongrel.log
のログを見て問題なければOK。
以上、CentOS5.5にRuby on Rails/PostgreSQL8.1の環境を作るまでの手順でした。