Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
NSEG #31              Railsデプロイ              長野高専 電子情報工学科                3年 奥本 隼12年9月29日土曜日
11時に起きました12年9月29日土曜日
今日              NSEGがあることを                知りました12年9月29日土曜日
枠が空いてる?              Railsの発表しよう                 かな?12年9月29日土曜日
現在に至る12年9月29日土曜日
自己紹介              •   奥本 隼(おくもと はやと)              •   長野高専 電子情報工学科 3年              •   NSEGでの発表は2回目              •   Ruby ...
こんなものを              作っています12年9月29日土曜日
イベント開催システム              「カンファイン」                      http://conf-in.com12年9月29日土曜日
寮食堂の献立配信システム               「Ryo-Lunch」                     http://ryo-lunch.jo-ken.info12年9月29日土曜日
夏休みカウントダウン 「夏休みはあとn日しかない」                    http://ndays.falconsrv.net12年9月29日土曜日
Railsデプロイ12年9月29日土曜日
内容          • Rackについて          • Unicorn & Nginxを使った構成          • 手動でデプロイ          • Capistranoを使った自動デプロイ(次回)12年9月29日土曜日
Railsのデプロイは面倒?          • 設置してパーミッションを設定する           • だけではない...          • Webサーバとアプリケーションサーバ              (Rackサーバ)が必要  ...
Rails本番環境の構成                   Webサーバ                  (Apache, Nginx)                   Rackサーバ                    Rails ...
Rackとは?12年9月29日土曜日
Rackとは?              • サーバとフレームワークをつなぐ                   インターフェース              • サーバ,フレームワーク共にRackに対応                していれば...
Rack対応サーバ              • WEBRick              • Passenger              • Mongrel              • Thin              • Unicor...
Unicorn              • クックパッドやGithubでも採用              • 軽い(メモリをあまり食わない)              • デプロイ時のダウンタイムゼロ               • Pass...
構成例12年9月29日土曜日
できるだけ軽い構成で              •Webサーバ:Nginx              • Rackサーバ:Unicorn12年9月29日土曜日
構成図                Nginx                Unicon                 Rails              アプリケーション12年9月29日土曜日
手動でデプロイ12年9月29日土曜日
大まかな手順              1. アプリケーションを設置(nginxがアク                セスできるパーミッションで)              2. gem install unicorn             ...
Nginxの設定              • リバースプロキシとして動作              • 静的ファイルには直接アクセス               (Unicornに問い合わせない)12年9月29日土曜日
upstream app-server {      server 127.0.0.1:8080;   }   server {      listen 80;      server_name hogehoge.falconsrv.net; ...
Unicornの設定              • デプロイ時のダウンタイムがゼロにな               るようにする              • ワーカーごとにプログラムを読み込ま               ないようにする12年...
RAILS_APP/config/unicorn.rb          worker_processes 2          listen 8082          pid tmp/pids/unicorn.pid          std...
before_fork do |server, worker|       defined?(ActiveRecord::Base) and         ActiveRecord::Base.connection.disconnect!  ...
この周りはあまり              詳しくないので                   こちらへ…              https://github.com/blog/517-unicorn  http://techracho.b...
Unicornの制御12年9月29日土曜日
Unicornの起動              production環境でデーモンとして動作    > unicorn -c config/unicorn.rb -D -E production12年9月29日土曜日
Unicornの設定のリロード              HUPシグナルをmasterプロセスに送る              > kill -HUP `cat tmp/pids/unicorn.pid`              config/...
Unicornの再起動              USR2シグナルをmasterプロセスに送る              > kill -USR2 `cat tmp/pids/unicorn.pid`                プログラムコ...
Unicornの終了              QUITシグナルをmasterプロセスに送る              > kill -QUIT `cat tmp/pids/unicorn.pid`     すべてのリクエストを処理し終えてから...
Unicornの強制終了              INTシグナルをmasterプロセスに送る              > kill -INT `cat tmp/pids/unicorn.pid`               リクエストの処理...
まとめ              • Railsのデプロイはちょっと手間がかかる               • 使える組み合わせが多い              • Unicornは設定をしないとダウンタイムゼ               ロ...
宣伝12年9月29日土曜日
再来週(13,14日)              高専プロコンに              出場します!                    http://www.procon.gr.jp/12年9月29日土曜日
長野高専の出場チーム              • 自由部門「TERAKOYA」               • 5年生4名,専攻科2年生1名              • 自由部門「みんなのそろばん」               • 1年生1...
10/20, 21(土, 日)              長野高専 工嶺祭でも                  展示予定        ぜひお越しください!12年9月29日土曜日
Upcoming SlideShare
Loading in …5
×

Railsデプロイ

5,036 views

Published on

NSEG #31での発表スライド
思いつきでエクストリームスライド作成して発表.

Published in: Technology

Railsデプロイ

  1. 1. NSEG #31 Railsデプロイ 長野高専 電子情報工学科 3年 奥本 隼12年9月29日土曜日
  2. 2. 11時に起きました12年9月29日土曜日
  3. 3. 今日 NSEGがあることを 知りました12年9月29日土曜日
  4. 4. 枠が空いてる? Railsの発表しよう かな?12年9月29日土曜日
  5. 5. 現在に至る12年9月29日土曜日
  6. 6. 自己紹介 • 奥本 隼(おくもと はやと) • 長野高専 電子情報工学科 3年 • NSEGでの発表は2回目 • Ruby / Rails / Vim / Linux etc... • Twitter: falcon_8823, Facebook: falcon.882312年9月29日土曜日
  7. 7. こんなものを 作っています12年9月29日土曜日
  8. 8. イベント開催システム 「カンファイン」 http://conf-in.com12年9月29日土曜日
  9. 9. 寮食堂の献立配信システム 「Ryo-Lunch」 http://ryo-lunch.jo-ken.info12年9月29日土曜日
  10. 10. 夏休みカウントダウン 「夏休みはあとn日しかない」 http://ndays.falconsrv.net12年9月29日土曜日
  11. 11. Railsデプロイ12年9月29日土曜日
  12. 12. 内容 • Rackについて • Unicorn & Nginxを使った構成 • 手動でデプロイ • Capistranoを使った自動デプロイ(次回)12年9月29日土曜日
  13. 13. Railsのデプロイは面倒? • 設置してパーミッションを設定する • だけではない... • Webサーバとアプリケーションサーバ (Rackサーバ)が必要 • トータルすると設定量が多いかも…?12年9月29日土曜日
  14. 14. Rails本番環境の構成 Webサーバ (Apache, Nginx) Rackサーバ Rails アプリケーション12年9月29日土曜日
  15. 15. Rackとは?12年9月29日土曜日
  16. 16. Rackとは? • サーバとフレームワークをつなぐ    インターフェース • サーバ,フレームワーク共にRackに対応 していれば,組み合わせは自由 • フレームワーク:Rails, Sinatra, etc...12年9月29日土曜日
  17. 17. Rack対応サーバ • WEBRick • Passenger • Mongrel • Thin • Unicorn12年9月29日土曜日
  18. 18. Unicorn • クックパッドやGithubでも採用 • 軽い(メモリをあまり食わない) • デプロイ時のダウンタイムゼロ • Passengerとかだと10秒ぐらいダウン タイムが生じる12年9月29日土曜日
  19. 19. 構成例12年9月29日土曜日
  20. 20. できるだけ軽い構成で •Webサーバ:Nginx • Rackサーバ:Unicorn12年9月29日土曜日
  21. 21. 構成図 Nginx Unicon Rails アプリケーション12年9月29日土曜日
  22. 22. 手動でデプロイ12年9月29日土曜日
  23. 23. 大まかな手順 1. アプリケーションを設置(nginxがアク セスできるパーミッションで) 2. gem install unicorn 3. DBの作成,nginxの設定など 4. Unicornの設定 5. Unicornの起動12年9月29日土曜日
  24. 24. Nginxの設定 • リバースプロキシとして動作 • 静的ファイルには直接アクセス (Unicornに問い合わせない)12年9月29日土曜日
  25. 25. upstream app-server { server 127.0.0.1:8080; } server { listen 80; server_name hogehoge.falconsrv.net; root /PATH/TO/APP/public; try_files $uri $uri/index.html @unicorn; location @unicorn { proxy_pass http://app-server; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 20; } }12年9月29日土曜日
  26. 26. Unicornの設定 • デプロイ時のダウンタイムがゼロにな るようにする • ワーカーごとにプログラムを読み込ま ないようにする12年9月29日土曜日
  27. 27. RAILS_APP/config/unicorn.rb worker_processes 2 listen 8082 pid tmp/pids/unicorn.pid stdout_path log/unicorn.log stderr_path log/unicorn.log timeout 30 preload_app true12年9月29日土曜日
  28. 28. before_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! old_pid = "#{server.config[:pid]}.oldbin" if old_pid != server.pid begin sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU Process.kill(sig, File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH end end sleep 1 end after_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end12年9月29日土曜日
  29. 29. この周りはあまり 詳しくないので こちらへ… https://github.com/blog/517-unicorn http://techracho.bpsinc.jp/piichan1031/2010_07_09/207512年9月29日土曜日
  30. 30. Unicornの制御12年9月29日土曜日
  31. 31. Unicornの起動 production環境でデーモンとして動作 > unicorn -c config/unicorn.rb -D -E production12年9月29日土曜日
  32. 32. Unicornの設定のリロード HUPシグナルをmasterプロセスに送る > kill -HUP `cat tmp/pids/unicorn.pid` config/unicorn.rbを変更した時などに実行 例)ワーカー数を増やしたときなど ダウンタイムゼロ12年9月29日土曜日
  33. 33. Unicornの再起動 USR2シグナルをmasterプロセスに送る > kill -USR2 `cat tmp/pids/unicorn.pid` プログラムコードの変更を適用する ダウンタイムゼロ12年9月29日土曜日
  34. 34. Unicornの終了 QUITシグナルをmasterプロセスに送る > kill -QUIT `cat tmp/pids/unicorn.pid` すべてのリクエストを処理し終えてから終了する12年9月29日土曜日
  35. 35. Unicornの強制終了 INTシグナルをmasterプロセスに送る > kill -INT `cat tmp/pids/unicorn.pid` リクエストの処理をすべて中断し, 直ちに終了する12年9月29日土曜日
  36. 36. まとめ • Railsのデプロイはちょっと手間がかかる • 使える組み合わせが多い • Unicornは設定をしないとダウンタイムゼ ロにならないので注意 • Railsは楽しいです12年9月29日土曜日
  37. 37. 宣伝12年9月29日土曜日
  38. 38. 再来週(13,14日) 高専プロコンに 出場します! http://www.procon.gr.jp/12年9月29日土曜日
  39. 39. 長野高専の出場チーム • 自由部門「TERAKOYA」 • 5年生4名,専攻科2年生1名 • 自由部門「みんなのそろばん」 • 1年生1名,2年生3名,3年生1名 • 競技部門 • 4年生3人12年9月29日土曜日
  40. 40. 10/20, 21(土, 日) 長野高専 工嶺祭でも 展示予定 ぜひお越しください!12年9月29日土曜日

×