Help us understand the problem. What is going on with this article?

【画像付きで丁寧に解説】AWS(EC2)にRailsアプリをイチから上げる方法【その4〜Railsアプリの公開編〜】

AWSにRailsアプリをイチから上げるシリーズ 項目表

No タイトル
その1 ネットワーク、データベース設定編
その2 EC2設定編
その3 サーバー設定、Railsアプリ配置編
その4 Railsアプリの公開編
その5 ドメイン設定編
その6 http→httpsへSSL化編

【 第6章 】ロードバランサーを設定する

Elastic Load Balancing を利用してロードバランサーの設定を行います。

1.ロードバランサーの作成

EC2の画面左の「ロードバランサー」を選択して、詳細ページ左上の「ロードバランサーの作成」を選択してください。
image44.png

ロードバランサーの種類の選択
「Application Load Balancer」の「作成」を選択
image52.png

手順 1: ロードバランサーの設定
以下の通り項目に記載

基本的な設定
1 . 名前:「アプリ名-ELB」
2 . スキーム:「インターネット向け」にチェック
3 . IP アドレスタイプ:「ipv4」

リスナー
デフォルトのままでOK

アベイラビリティーゾーン
1 . VPC:「VPC_for_アプリ名」
2 . アベイラビリティーゾーン:「ap-northeast-1a」「ap-northeast-1c」共にチェック

タグ
1 . キー:「Name」
2 . 値:「アプリ名-Webserver」

「次の手順:セキュリティ設定の構成」ボタンを選択する。
image53.png

手順 2: セキュリティ設定の構成
デフォルトのままでOKです。
「次の手順:セキュリティグループの設定」ボタンを選択する。

手順 3: セキュリティグループの設定
以下の通り項目に記載
1 . セキュリティグループの割り当て:「既存のセキュリティグループを選択する」にチェック
2 . 「アプリ名-SecurityGroup」のレコードにチェック
「次の手順:ルーティングの設定」ボタンを選択する。
image54.png

手順 4: ルーティングの設定
以下の通り項目に記載

ターゲットグループ
1 . ターゲットグループ:「新しいターゲットグループ」
2 . 名前:「アプリ名-Target-Group」 ※記入
3 . ターゲットの種類:「インスタンス」にチェック
4 . プロトコル:「HTTP」
5 . ポート:「80」

ヘルスチェック
1 . プロトコル:「HTTP」
2 . パス:「/」

ヘルスチェックの詳細設定
1 . ポート:「トラフィックポート」
2 . 正常のしきい値:「5」
3 . 非正常のしきい値:「2」
4 . タイムアウト:「5」
5 . 間隔:「10」 ※修正
6 . 成功コード:「200」

「次の手順:ターゲットの登録」ボタンを選択する。
image55.png

手順 5: ターゲットの登録

下部の「インスタンス」欄から、
「アプリ名-instance」にチェックを入れ、
「登録済みに追加」ボタンを選択する

「アプリ名-instance」が上部の「登録済みターゲット」欄に
移動した事を確認

「次の手順:確認」ボタンを選択する。
「作成」ボタンを選択する。
image56.png

一覧画面から作成したロードバランサーを確認し、一定時間経過後、状態が「active」なら完了。
image57.png

【 第7章 】Railsアプリの起動

1.アプリの起動手順

長い長い行程を経て、やっとアプリの起動です。

EC2へSSHでログインし、Railsアプリをプリコンパイルする

サーバー環境
$ bundle exec rake assets:precompile RAILS_ENV=production

Nginxを再起動

サーバー環境
$ sudo service nginx restart

Unicornを起動

サーバー環境
$ bundle exec unicorn_rails -c /var/www/rails/アプリ名/config/unicorn.conf.rb -D -E production

Uniconの起動を確認(プロセスのリストが3行程表示されればOK)

サーバー環境
$ ps -ef | grep unicorn | grep -v grep

ブラウザからIPを叩いてアクセス ※IPアドレスはElastic IP

ブラウザ
http://IPアドレス/

Railsアプリが無事動作すれば成功

(補足4)We're sorry, but something went wrong.と表示

残念ながらアプリが作動しなかった場合は、以下のコマンドを試してログを確認してみてください。

サーバー環境(/var/www/rails/アプリ名/)
$ cd log
$ tail -n 30 production.log

エラーの記載があれば、デプロイは出来ているがアプリ内でエラーが発生しています。
エラーの記載が無ければ、デプロイが出来ていない可能性があります。


これにてAWSへのRailsアプリのデプロイが完了です!!
いやぁ〜長かった!
お疲れ様でした!!

とりあえずアプリの公開は出来ましたが、URLが数字のままだと微妙ですね。
次はRoute53を使用して公開したアプリのURLにドメインを適用していく手順を記載します。
ただし、ここまでは1年無料を利用できましたが、Route53もドメインも有料になるので、それでも良い人は次のページもみてください!

その5〜ドメイン設定編〜

参考

世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで
RailsアプリをAWSにイチからデプロイするまでの手順メモ
RailsアプリをAWSでデプロイする②(各種設定編)

初心者でも構築することが出来ました、丁寧なご説明本当にありがとうございます
※当記事では一部バージョンの変更や手順の省略を行っております

また、世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまでは、各処理がどの様な役割を担っているか、ネットワークの解説付きなので、デプロイ出来た方も一読する事を強くオススメします。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away