質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.04%

Capistranoを用いたAWSへのデプロイの基本知識に関して

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 2,651
退会済みユーザー

退会済みユーザー

Capistranoを用いたAWSへのデプロイの基本知識に関して、  
どうしようもなくわからなくなったので質問させていただきます。  
環境は、以下になります。  

Ruby: 2.2.0  
Rails: 4.2.0  
Capistrano: 3.4.0  
Unicorn  
Nginx  

gitからコマンドラインで、でAWS(Amazon Web Services)のec2に、  
Githubのmasterの最新をCapistranoを用いてデプロイしたいです。  
以下、不明な点を3つだけあげてみました。検索すればすぐに出てくるような  
基本的なことかもしれませんがご教授いただけますと大変ありがたいです。  
よろしくお願いいたします。  

1) 運用する開発環境なり本番環境なり、リモートのサーバーにsshでログインしてローカルでやったのと同じように、コマンドラインでrbenvとかrailsとか(MySQLとかは入れた)、Unicorn、Capistranoなり同じバージョンのものを、手動で入れないといけない。という認識で合っていますか?  

2) NginxはApatchに変わるwebサーバーであり、UnicornはNginxとRailsを仲介するミドルウェアである。という認識で合っていますか?  

3) Capistranoでデプロイするためにはwebサーバー(ec2)にNginxとUnicornが入っていてかつ起動している必要がある。という認識で合ってますか?  
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+3

# 環境構築

もちろん手動で構築してもいいですが:

* Chef, Ansible など構成管理ツールで環境構成を定義し自動で構築する
* Packer を利用して環境構築済みイメージ(AMI)を自作しAWS に予め用意して、利用する
* 3rd party 製のイメージを利用して、環境構築を省力化する

可能な限り自動化・省力化したほうがよいでしょう

Packer によるイメージ作成の場合は、構成管理ツールを利用することになると思います

バージョンに関しては、なるべく同じものを使い、それぞれのバージョンアップに追従していくのが理想的だと思います


# Nginx, Unicorn

その認識で大きな誤りはないとおもいます
Nginx + Unicornでなくとも、Apache / Nginx + Phusion passenger でRails アプリケーションを動作させることができます


# Capistrano

Capistrano が担当する領域は
* コードのデプロイ(ローカルやGitHub からソースコードを転送)
* アプリケーションサーバの再起動

なので、サービス提供のための環境はすでに動いている必要があるでしょう

Capistrano にはrbenv やrvm を使用できるようになるプラグインが用意されています
Ruby 環境に関しては、設定を記述すればCapistrano が環境構築を手伝ってくれるはずです

そのほかSunzi, Mina といったツールがあるようです

AWS Code Deploy で既存のデプロイツールを使わずにデプロイすることもできるかもしれません


# Links

Fast web server & app server, Ruby Python Node.js - Phusion Passenger
kenn/sunzi
sunzi を試してみる - Memo
Capistrano 3系でRails4.1のデプロイ[rbenv][rvm][ruby2.1] - 酒と泪とRubyとRailsと
Ruby Stack powered by Bitnami on AWS Marketplace
Packer+AnsibleによるAMIの作成 | Developers.IO
Packer by HashiCorp
  ** Amazon AMI Builder - Packer by HashiCorp
AWS CodeDeploy を使って Rails アプリケーションをデプロイしてみた | Developers.IO
Mina - Really fast deployer and server automation tool
Ruby - Minaというデプロイ用のツール... - Qiita


まずはCapistrano でGitHub のコードを引っ張ってくるだけ、といった小さなことから始められるとよいと思います

以上、簡単に調べてみましたが、なにか参考になれば幸いです

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/15 22:47

    ご回答ありがとうございました。添付いただきましたリンク集も参考に
    引続き学習を進めていこうと思います。ありがとうございました。

    キャンセル

checkベストアンサー

+2

こんにちは。

僕からは、項目2について少しくわしく書かせていただきたいと思います。

Nginx(エンジンエックス)は、2000年代の初頭にロシアのIgor Sysoev(イゴール・シソエフ)氏によって、5億リクエスト/日を処理するWebサイトのHTTPサーバーとして開発されました。
ApacheやMicrosoft IISのシェアは依然として高いものの、Nginxの認知度は日に日に高まっていて、急速にシェアを拡大しています。
Nginxが注目されているのは、HTMLドキュメントや画像ファイルなどの静的コンテンツを高速で配信できるとともに、消費メモリが少なく、リバースプロキシやロードバランサーとして動作できる機能を持っている点です。
また、Apacheではサードパーティが提供している機能を、Nginxでは標準で提供されているほか、数多くのモジュールが用意されているなど、ある意味でApacheを超えるともいわれています。

Unicorn(ユニコーン)は、Ruby on RailsやSinatraで使える、汎用のRackアプリケーションサーバーです。
Unicorn単体でも任意のポートをlistenすればWebサーバーとして使用できますが、本番環境ではNginxをリバースプロキシとしてたて、Unicornへリクエストを流すかたちで使うことが多いようです。
こうした構成にする理由としては、静的コンテンツはNginxで高速に配信できる、遅い回線で接続された際にリクエストをNginxでバッファリングすることでUnicornでのワーカプロセスの待ち時間を削減できるなどといったことがあげられます。

以上、ご参考いただければ幸いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/15 22:45

    なるほどそうだったのですね。初めて知ることも多くたいへん参考になりました。
    この度はご丁寧にありがとうございました。

    キャンセル

  • 2015/04/16 09:51

    imachan0322さん、コメント(返信)をいただきありがとうございます。
    僕は、サーバーについてしか書いていませんが、すこしはお役に立てたようでなによりです。
    今後ともよろしくお願いします。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る