AWSにRailsアプリをデプロイする(公開編)
次にデプロイするため“aws rails デプロイ”でググってみるとunicorn、nginxというキーワードがでてくるので
とりあえずこれを設定していきます。
アプリのsecret_key_baseの設定
1 2 3 4 5 6 7 8 |
$ vi config/secrets.yml $ production: $ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> //keyを生成する $ bundle exec rake secret //生成したkeyを環境変数に設定する $ export SECRET_KEY_BASE= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
Unicornの設定
1 2 3 |
$ vi Gemfile $ gem 'unicorn' $ bundle install |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
$ vi config/unicorn.rb @app_path = '/home/xxxx/app-name/' working_directory @app_path worker_processes 2 preload_app true timeout 30 listen "/tmp/unicorn.sock", : backlog => 64 pid "/home/youser/tag-manager/tag-manager/shared/tmp/pids/unicorn.pid" stderr_path "#{@app_path}/log/unicorn.stderr.log" stdout_path "#{@app_path}/log/unicorn.stdout.log" before_fork do |server, worker | ENV['BUNDLE_GEMFILE'] = File.expand_path('Gemfile', ENV['RAILS_ROOT']) end before_fork do |server, worker | if defined ? (ActiveRecord::Base) ActiveRecord::Base.connection.disconnect! end old_pid = "#{server.config[:pid]}.oldbin" if File.exists ? (old_pid) && server.pid != old_pid begin Process.kill("QUIT", File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH end end end after_fork do |server, worker | if defined ? (ActiveRecord::Base) ActiveRecord::Base.establish_connection end end |
Nginxのインストール
1 |
$ sudo yum install nginx -y |
Nginxの設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
$ vi /etc/nginx/conf.d/app-name.conf upstream unicorn_server { server unix: /tmp/unicorn.sock fail_timeout = 0; } server { listen 80; client_max_body_size 4 G; server_name * .xxxxx.compute.amazonaws.com; #サーバーネーム記載 keepalive_timeout 5; # Location of our static files root / home / xxxx / app - name;# appname部分は自分自身で設定 location~ ^ /assets/ { root / home / xxxx / app - name / public; #修正後 } location / { proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; if (!-f $request_filename) { proxy_pass http: //unicorn_server; break; } } error_page 500 502 503 504 / 500. html; location = /500.html { root / home / xxxx / app - name; } } |
※サーバーネームをAWSのDNS設定にしたら長すぎると怒られたのでとりあえず*にしたら通った
Nginxの起動
1 |
$ sudo service nginx start |
Nginxの再起動
1 |
$ sudo service nginx reload |
1 2 |
//アプリのディレクトリに移動 $ cd /home/xxxx/app-name |
Unicornの起動
1 |
$ bundle exec unicorn_rails -c /home/xxxx/app-name/config/unicorn.rb -p 8080 -D -E production |
Unicornの起動確認
1 |
ps -ef | grep unicorn | grep -v grep |
ついに、、
ページの確認♡
http://xxxxx.compute.amazonaws.com/
参考URL
Amazon LinuxにRuby on Rails環境構築(rbenv + ruby-build + Ruby 2.2.1 + Rails 4.2.1インストール)
http://qiita.com/na0AaooQ/items/5bd62e630a2faf051a52
(デプロイ編①)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで
http://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e

関連記事
-
-
自社サービスのDocker化(後編)
こんにちは。 インフラ開発部の上田です。 前回、前編としてDockerについて書き、早半年も経ちました。 前編はこちらです 今回は後編として、以下について書いてみたいと思います。 ■複数プロセス起動 前編で書いた通り、通常のOS起動時とは異なり、コンテナ上で個別にプロセスを起動する必要があります。 …
-
-
ゼロからAngularでSPAを作ってみた(1) はじめてのアプリ編
はじめに Single Page Application (SPA)って知っていますか? Webサイトでコンテンツのリンクをクリックした時に妙に表示が早いな〜というとき、実はページを移動するのではなくてページの一部のみを書き換えていたりします。 こういったサイトの作り方を Single Page A …
-
-
Tableauを利用してMySQLとRedshiftのクロスDBジョインを実現する
はじめに RedshiftやTreasureDataなどのデータマート用のDBにはID単位の解析結果が格納され、ローカルのMySQLにはIDに紐づいた名称マスタが管理されている構成の場合、データマートのクロス集計結果に対してIDに紐づいた名称を付与したいことがあります。 データマート用に用意したDB …
-
-
Scala実践「Either型を使ってimmutable(不変)なコードを書こう!」
はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 Scalaでイケてるコードを書きたい! 背景 わたくしはDACに入社してからScala …
-
-
クラウド電話API “Twilio”で起こされてみた
どうも、開発部のクラヴマガです。 弊社サービスも最近はAWSの様なクラウド環境でサービスを構築することが多くなりました。 そこで問題になるのが、障害などによる深夜対応・・・。 データセンターに物理サーバをおいていた頃は、データセンターから障害発生時に 電話連絡をもらっていたのですが、クラウド環境では …
-
-
fastavroとjqでAVRO形式のファイルからデータを取得しよう
AVRO形式のファイルを取り扱いたい AVROとはApacheプロジェクトのひとつとして開発されているデータ交換形式です。 コンパクトなバイナリで高速なシリアライズ・デシリアライズが行えるため、サーバーログなどに利用されています。 弊社内での一部システムのログデータにも利用されているのですが、専用の …
-
-
いまさらですが… GNU screen チートシート
最近はローカル環境で開発するようになってきたので、screen コマンドを使う機会も少なくなって来たような気がします。で、使ってないと忘れてしまうので、チートシートを作ってみました。 参照サイト GNU screen [quick_reference] 起動 コマンド 動作 screen -S &l …
-
-
kubernetes の全ノード上で同じコンテナを動かす
今回は、kubernetes上で同一コンテナを全ノードで動かす方法を紹介したいと思います。kubernetes自体の起動方法はここでは割愛します。 はじめに 以前、CoreOSのFleet上でmackerel-agentを動かすということを行いました。今回は、kubernetes上で同じようにクラス …
-
-
Android 非同期処理についてまとめてみた
Androidには、UIに影響を与えないよういくつか非同期処理が用意されています。 今回は非同期処理の代表的な ・Service ・IntentService ・HandlerThread について違いを踏まえながらまとめます! 非同期処理について(http://codezine.jp/articl …
-
-
最強のSQLクライアント(GUIツール)「TeamSQL」を使ってみた!
はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 エンジニアの皆さん、SQLクライアント(GUIツール)って何使ってます? わたくしはこ …
- PREV
- AWSにRailsアプリをデプロイする(準備編)
- NEXT
- Burpの使い方!