ベーシックでRubyのプロジェクトがあったので、RubyといったらRuby On Railsでしょう、ということで環境を構築しました。

  • サーバ:AmazonEC2
  • DB:MySQL
  • Webサーバ:Apache
  • フレームワーク:Ruby On Rails

こんな構成です。

Rubyのインストール

まずはRubyをインストールしないと話になりません。

$ sudo yum install ruby

でもいいのですが、、、

せっかくなので最新のRubyをインストールしたい、ということで 「rbenv+ruby-buid」 を使ってインストールをします。

rbenvのインストール

rbenvとは、、、

rbenvはRubyの複数バーションを管理するためのものです。

rbenv自体にはRubyのインストールをサポートしていないのですが、後述するruby-buildプラグインを使うことでRubyのインストールをすることができます。

まずはrbenvプロジェクトをcloneします。
gitを使うのであらかじめサーバにはインストールしておきましょう。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

次に環境設定

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
exec $SHELL -l

ここまでやったら、rbenvを確認します

$ rbenv --version

これでrbnevはOK!

ruby-buidをインストール

ruby-buildとは、、、

rbenvのプラグインで、これをインストールすることでRubyをインストールすることができるようになります。

こちらもまずは、ruby-buildプロジェクトをclone。

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

次にインストールしたいRubyを確認します。

$ rbenv install --list
Available versions:
  1.8.6-p383
  1.8.6-p420
  1.8.7-p249
  1.8.7-p302
  1.8.7-p334
  1.8.7-p352
  1.8.7-p357
  1.8.7-p358
  1.8.7-p370
  1.8.7-p371
  1.8.7-p374
  1.8.7-p375
  1.9.1-p378
  1.9.1-p430
  1.9.2-p0
  1.9.2-p180
  1.9.2-p290
  1.9.2-p318
  1.9.2-p320
  1.9.2-p326
  1.9.3-dev
  1.9.3-p0
  1.9.3-p125
  1.9.3-p194
・・・

ずらずらーっとインストール可能なRubyのバージョンがでてきます。

このinstallコマンドはruby-buildがないと使えないです。

いよいよRubyをインストールするのですが、、、その前にRubyのインストールに必要な下記のパッケージをいれておきます。

$ sudo yum install gcc openssl-devel

これがないとRubyのインストールで

no acceptable C compiler found in $PATH

とか

The Ruby openssl extension was not compiled. Missing the OpenSSL lib

でおこられます。

必要なパッケージが無事インストールできたら、 rbenv install -v <バージョン番号> でインストールしましょう。

$ rbenv install -v 2.1.0

結構時間がかかる(15〜20分ぐらい?)ので、先ほどのパッケージがインストールされてなくてエラーで中断すると「ムキー!ヾ(`Д´)ノ」ってなります。

無事完了したら、rbenvでどのバージョンを使うかを指定して終わり。

$ rbenv rehash
$ rbenv global 2.1.0
$ ruby -v

Ruby On Railsのインストール

続いてRailsをインストールします!

インストールにはRubyのライブラリ管理に使うGemを使います。

$ gem install rails

EC2がmicroインスタンスの場合メモリ不足でインストールできませんでした。microインスタンスでWebサービスを作るってことはあまりないと思いますが、、、

Railsプロジェクトの作成

Ruby On Railsは特に意識をしなければ

  • Webサーバ:webrick
  • DB:SQLite

を使うことになります。さくっとWebサービスを作る場合はそれでも無問題なのですが、慣れ親しんだApacheとMySQLを使いたいのでごにょごにょします。

Railsプロジェクトは

$ rails new <プロジェクト名>

で作成できます。

MySQLを使う

RailsプロジェクトでMySQLを使う場合は

$ rails new <プロジェクト名> -d mysql

MySQLとRubyのMySQL用のパッケージをあらかじめ入れておかないと怒られます。

ERROR:  Error installing mysql2:
ERROR: Failed to build gem native extension. 

RubyのMySQL用のパッケージはGemでインストールできます。

$ gem install mysql2
Building native extensions.  This could take a while...
Successfully installed mysql2-0.3.15
Parsing documentation for mysql2-0.3.15
Installing ri documentation for mysql2-0.3.15
Done installing documentation for mysql2 after 0 seconds
1 gem installed 

Apacheを使う

Rails環境をApache上で動かすには 「Phusion Passenger」 というApacheのモジュールが必要です。

まずはGemでPassengerをインストール。

$ gem install passenger

passengerをインストールが完了したら passenger-install-apache2-module を実行します。最初はこいつがどこにあるのかわからなかったのですが、自分の環境では

/home/ec2-user/.rbenv/versions/2.1.0/bin/passenger-install-apache2-module

におりました。

このまま実行すると、またいろいろ足りないといわれます。。。

* To install Curl development headers with SSL support:
   Please install it with yum install curl-devel

 * To install Apache 2 development headers:
   Please install it with yum install httpd-devel

 * To install Apache Portable Runtime (APR) development headers:
   Please install it with yum install apr-devel

 * To install Apache Portable Runtime Utility (APU) development headers:
   Please install it with yum install apr-util-devel

If the aforementioned instructions didn't solve your problem, then please take

上記のメッセージで出てきたのをyumでインストール。

$ sudo yum install curl-devel httpd-devel apr-devel apr-util-devel

コマンドが正常に完了するとApacheにこれ設定してね、というメッセージがでてきます。これを忘れずに設定。

LoadModule passenger_module /home/ec2-user/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-4.0.37/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
     PassengerRoot /home/ec2-user/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/passenger-4.0.37
     PassengerDefaultRuby /home/ec2-user/.rbenv/versions/2.1.0/bin/ruby
</IfModule>


<VirtualHost *:80>
      ServerName www.yourhost.com
      # !!! Be sure to point DocumentRoot to 'public'!
      DocumentRoot /somewhere/public   
      <Directory /somewhere/public>
         # This relaxes Apache security settings.
         AllowOverride all
         # MultiViews must be turned off.
         Options -MultiViews
      </Directory>
 </VirtualHost>

ここはそれぞれの環境によって出力されるパスとかが違うと思うので適宜変更してください。

これでようやく完了です。長い、、、