2015年11月11日水曜日

AWS無料利用枠のインスタンスで、Ruby on Railsの環境を作成してみる③

こんにちは、井下です。

前々回前回と「AWS無料利用枠のインスタンスで、Ruby on Railsの環境を作成してみる」ことをテーマとしていましたが、今回は「デフォルトで入っているサーバの差し替え」について書いていきます。

ちなみにWebサーバは"Nginx"、アプリケーションサーバは"Unicorn"を導入する手順としています。

1.デフォルトのサーバ設定

サーバの差し替えを行う前の前提知識として、Railsでは"Webrick"というWebサーバが設定を行うことなく起動させることができ、RailsのWebアプリケーションの動作を確認することができます。

"Webrick"の起動はWebアプリケーションのルートディレクトリで"rails server"もしくは"rails s"コマンドで行えます。
※外部からブラウザでアクセスするには、さらにオプションとして"-b 0.0.0.0"を追加します。このオプションがないと、起動したマシンのlocalhostのURLでしかアクセスできません

試しに前回DBをSQLiteからPostgreSQLに差し替えたRailsのWebアプリケーション、"sample"で"Webrick"を起動してみます。
[ec2-user@ip-xxx ~]$ sudo service postgresql start

Redirecting to /bin/systemctl start  postgresql.service
[ec2-user@ip-xxx ~]$ cd sample/
[ec2-user@ip-xxx sample]$ rails s -b 0.0.0.0
=> Booting WEBrick
=> Rails 4.2.4 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2015-11-08 19:48:46] INFO  WEBrick 1.3.1
[2015-11-08 19:48:46] INFO  ruby 2.2.3 (2015-08-18) [x86_64-linux]
[2015-11-08 19:48:46] INFO  WEBrick::HTTPServer#start: pid=1954 port=3000

これでブラウザからアクセス、する前に、EC2インスタンスのセキュリティグループを編集し、ポート3000へのアクセスを許可します。

ブラウザからのアクセス準備が整ったので、"http://EC2インスタンスのIPアドレス:3000/"へアクセスします。

Railsではおなじみの画面が開きます。
この画面はブラウザからのリクエストを処理するWebサーバと、Rails自体を動作させるアプリケーションサーバが連携して開くことができます。
"Webrick"はWebサーバに分類されますが、Railsではアプリケーションサーバの役割も与えられています。

"Webrick"は特に設定を行うことなく、手早くWebアプリケーションの動作させられるメリットがありますが、レスポンスや起動の所要時間はあまり早くないため、本番用としてはWebサーバ・アプリケーションサーバを別途用意するのが一般的です。

それでは、ここからWebサーバ"Nginx"、アプリケーションサーバ"Unicorn"を導入していきます。