Ruby on rails

トップ > チップス > Ruby on rails
2014-07-07, ruby rails linux

CentOS6.5でRailsを動かす

CentOS6.5にRuby2.1とRails4、それからPassenger(ApacheとRailsをつないでくれるモジュール)をインストールする手順です。yumで一発、という訳にはいかないので中々大変です。PHPに慣れてると、ここまでして使いたいか?!って思っちゃわなくもないですが…。

まずはRubyをソースコードからコンパイルして、gemで必要なモジュールを入れるところまで。このあたりは至って素直です。環境によってはさらに必要なモジュールもあるかもしれませんが、エラーメッセージをきちんと読んでいれば対処出来るかと思います。

# yum -y install httpd gcc-c++ apr-devel apr-util-devel curl-devel httpd-devel mysql-devel openssl-devel readline-devel sqlite-devel zlib-devel
$ wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz
$ tar xzf ruby-2.1.2.tar.gz
$ cd ruby-2.1.2
$ ./configure
$ make
# make install
# /usr/local/bin/gem install rails
# /usr/local/bin/gem install passenger
# /usr/local/bin/passenger-install-apache2-module

Railsのアプリ作成手順は省きますが、この環境で作成しようとするとJavaScriptのランタイムが無い、と怒られてしまいます。その場合は、アプリ内のGemfileを編集して以下の行を追加して下さい(コメントとして記述されていますので、そのままコメントイン?するだけです)。

/opt/myapp/Gemfile
gem 'therubyracer', platforms: :ruby

Apacheの設定は、色々ありますが、以下が恐らくミニマムでしょうか。モジュールのパスはインストールしたpassengerのバージョンによって変化しますので、passengerインストール時のガイドに合わせて書き換えて下さい。SECRET_KEY_BASEに指定するキーは「rake secret」で生成することができます(productionモードで動かす場合のみ、残りはconfig/secrets.ymlに記載されています)。

/etc/httpd/cond.d/passenger.conf
LoadModule passenger_module /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.45/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.45
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>

NameVirtualHost *:80

<VirtualHost *:80>
  SetEnv SECRET_KEY_BASE {key for production}
  ServerName example.com
  DocumentRoot /opt/myapp/public
</VirtualHost>

デフォルトではproductionモードで稼動するようなので、エラーメッセージが全然得られなくて大変です(something wrongとしか言ってくれません)。開発用に立ち上げるだけであれば、以下のように設定しておくとWebrickでテストするときと同じメッセージが得られます。

  PassengerAppEnv development

ちなみに今回は「rake db:migrate RAILS_ENV=production」を忘れていたがために、1時間以上関係ないところを彷徨ってしまいました。かように、productionモードだとエラーの原因を教えて貰えません。次はパフォーマンスの測定ですね。どの程度の速度で動作するんでしょうか。Tomcatを使っていた頃はServlet+JSPの便利さはあったものの、いつまでも無くならないメモリリークに苦しんで結局やめてしまいましたが、、こちらの安定性もどの程度なのか気になるところです。

参考URL

この記事は役に立ちましたか?