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

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

ただいまの
回答率

89.99%

vagrant等で立ち上げたゲストOSの内容は、いかにして本番サーバなどにデプロイするのでしょうか

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 1,314

ryuuinn

score 73

最近、ローカルの開発環境を作るために、vagrantを使って作業しています。
ふとした疑問なのですが、ここで作ったファイルは最終的に特定のサーバにデプロイしていきたいのですが、
そのデプロイはどのように行うのが一般的なのでしょうか。

vagrantで立ち上げたゲストOS内で行った作業をgithubなどにアップして、
それを特定のデプロイ専用サーバなどから、対象の本番サーバに対してデプロイ。
みたいな作業を踏むのでしょうか。

よく分かってないのでご教示頂けますと幸いです。

  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

+1

GitHub: Webhook
BitBucket: Hook
…と呼ばれるサービスを使って自動デプロイが可能です。

Webサーバーを立ち上げて、そこにアクセスするとサーバー内のファイルを書き換える解決法があります。
Katzさんという方のブログで紹介されています。
Bitbucket や GitHub で自動デプロイするためのサンプル PHP スクリプトを拾って改造してみた - アルケミスタの住人

他にも一旦クッションとなる別のWebサーバーを立ち上げてWebhookからのリクエストを受け、
本番環境にSSHで接続してデプロイを行うという方法もあります。
例えば本番環境に反映されてしまう前に一度Jenkinsから自動テストを走らせて確認するという事も可能になります。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

checkベストアンサー

0

ファイルの転送だけであれば、rsync 等で直接転送し終了で良いと思います。

バージョン管理を行っている場合は、例えば、production ブランチにマージ後リポジトリに push し、その後本番サーバで pull 等の方法もあるでしょう。push 後本番サーバでの pull を自動化するデプロイがあってもよいと思います。

もう少し大規模なサービスになれば、push 後に各種テストが走り、pass した場合は予備サーバにデプロイし、本番サーバと入れ替え(障害時は差し戻し)なんていうのもあるかもしれません。

場合によっては、「コード編集 -> vagrant 環境にデプロイ」で動作確認をしていれば、「コード編集 -> 本番サーバにデプロイ」で適用完了になるかもしれません。

さて、Capistrano タグがついていますから、Ruby on Rails で Capistrano を使ったデプロイでしょうか。現在私が知っているものでは
・bitbucket (github みたいなやつです) に staging/production ブランチの push をすると
・wercker というサービスが、(Capistrano を使って)自動で ステージ/本番 サーバにデプロイ
する WEB サービスがあります。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/08/21 12:13

    詳細に解説して頂きありがとうございます!

    小規模/大規模サービス、werckerというサービスでのデプロイ方法など、
    色んな方法があるという事で勉強にりました。

    1点質問なのですが、

    > production ブランチにマージ後リポジトリに push し、その後本番サーバで pull 等の方法もあるでしょう。

    このデプロイの手順は何となくイメージがわきます。
    マージ後に本番環境にログインして、git pullするような流れになると思います。

    ただ、その後の

    > push 後本番サーバでの pull を自動化するデプロイがあってもよいと思います

    というのが、具体的にどう実現するのかがわからなかったので、教えていただけると嬉しいです。
    本番サーバでは、常にリモートのproductionブランチの差分を検知して、最後にpullしたcommitと差分があれば自動的にpullするような仕組みを作るというような事なのでしょうか。

    キャンセル

  • 2016/08/21 14:41

    deploy.sh に、一連のコマンドを記述し、実行して途中でパスワード入力くらいのつもりでした。
    push 先とデプロイ先のサーバが同じなら、フックスクリプトが使えるかもしれません。

    キャンセル

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

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