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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

Q&A

解決済

2回答

2189閲覧

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

ryuuinn

総合スコア75

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

1グッド

1クリップ

投稿2016/08/20 14:44

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

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

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

takotakot👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

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

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

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

投稿2016/08/21 14:23

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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/20 15:34

takotakot

総合スコア1111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryuuinn

2016/08/21 03:13

詳細に解説して頂きありがとうございます! 小規模/大規模サービス、werckerというサービスでのデプロイ方法など、 色んな方法があるという事で勉強にりました。 1点質問なのですが、 > production ブランチにマージ後リポジトリに push し、その後本番サーバで pull 等の方法もあるでしょう。 このデプロイの手順は何となくイメージがわきます。 マージ後に本番環境にログインして、git pullするような流れになると思います。 ただ、その後の > push 後本番サーバでの pull を自動化するデプロイがあってもよいと思います というのが、具体的にどう実現するのかがわからなかったので、教えていただけると嬉しいです。 本番サーバでは、常にリモートのproductionブランチの差分を検知して、最後にpullしたcommitと差分があれば自動的にpullするような仕組みを作るというような事なのでしょうか。
takotakot

2016/08/21 05:41

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問