ベーシックで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>
ここはそれぞれの環境によって出力されるパスとかが違うと思うので適宜変更してください。
これでようやく完了です。長い、、、