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

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

ただいまの
回答率

88.64%

開発環境の構築とデプロイまでの流れ

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 2,825

PartyKids

score 65

閲覧ありがとうございます!
先日までDockerでVPSのデプロイ方法を質問させて頂いたのですが、いくら勉強してもdockerでのデプロイ方法が理解できなかったので、一旦docker無しでデプロイを試してみました。

デプロイ環境

ローカル

  • Mac OS X Sierra

VPS

  • Centos 7
  • Rails 5.1
  • rbenv
  • Ruby 2.4.1
  • Puma
  • MySQL
  • Capistrano
  • Nginx

なんとかipアドレスを打てば、アプリケーションを表示することが出来きたので、次はdockerを使って開発環境の構築&デプロイまでの流れを勉強しようと挑戦しましたが、やっぱり理解出来なかったです。。。(なんでスクリプト言語やDBばかりのイメージをコンテナ化していて、osのイメージをコンテナ化しないの?。。。 コンテナ自体linux上で起動しているから、centosやubuntuが必要ない?。。。)
悩んでても仕方がないので、一旦資料が豊富なvagrant virtual boxで開発環境を構築してみました。

開発環境

  • Mac OS X Sierra

  • Vagrant1.9.7

  • Virtualbox 5.1.24

  • Centos 7

  • Rails 5.1

  • rbenv

  • Ruby 2.4.1

  • Puma

  • MySQL

  • Nginx


"Yay! You’re on Rails!"を表示できたので環境開発の構築は出来たと思います?

疑問1:stagingとproductionの使い方

VPSで本番環境を構築中にcap installするとstaging.rbとproduction.rbが作成され、production.rbは本番環境(VPS)の設定だな!っと考えたのですが、stagingが何をさしているのかが分かりませんでした。vagrantで開発環境を構築してるときに、この開発環境をstagingをさしているのでは?と感じたのですが。。。。
つまり、開発しているアプリケーションをいきなり本番(VPS)にアップするのは危険なので、VPS環境をvagrantで擬似的に作成し、開発中はcap staging deployでvagrantで確認し、okならばcap production deployでVPSにデプロイする使い分けでよろしいのでしょうか?
vagrantにマウント機能があるので、わざわざgitからpullする必要性がないような。。。。

疑問2:プライベートリポジトリの場合の環境変数の取扱

なんかおかしいなと思いながら、VPSサーバーにmysqlのユーザー名やパスワード、secret_key_baseを直貼りして、一旦アプリケーションをデプロイしてみました。デプロイ後に、ユーザー名やパスワードの取扱について調べたところ、環境変数を使う!と書かれていたのですが、gitで間違えてアップロードしてしまったや、gitignoreに入れ忘れたなど、前提が公開されるgitの場合ばかりでした。Bitbucketのプライベートリポジトリの場合には、環境変数の設定は不要なのですか?

初歩的な質問で申し訳ないのですが、よろしくお願い致します!

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

0

 ステージング環境について

Web開発の実務において、一般的に以下の3つの環境が存在します。

  • 開発環境
  • テスト環境/試験環境/ステージング環境/プレビュー環境
    (呼び方は人によって異なるが、指すものは同じ)
  • 本番環境

開発環境は、特に限定されませんが一般的にはローカルのPC(仮想マシン含む)です。
テスト環境(ステージング環境)、本番環境は外部に対して公開する環境です。
ただし、テスト環境は顧客など関係者のみに公開します。
アクセス制限の方法としてIPアドレスまたはBasic認証などで制限するといった方法がよく取られると思います。

ここで言うテスト環境とは、railsのrspecなどのテストではない点に注意。
「テスト」という言葉は、文脈により指すものが変わります。

テスト環境は、本番環境とまったく同じ構成のサーバで本番環境と同じように運用します。
(構成の違いによる不具合が起きる可能性もあるため)
受託開発を想定すると分かりやすいと思うのですが、
顧客に修正内容を確認してもらう場がテスト環境(=ステージング環境)です。
最終的に顧客からOKをもらったら、本番環境へ反映します。
開発者が勝手に本番環境へ反映するといった事は基本的にしません。

小さいシステムで考えると、テスト環境と本番環境はそれぞれ別のVPSを契約して、
同一設定にしたものと考えてもらって良いです。

 プライベートリポジトリの場合の環境変数の取扱について

好きにすれば良いというのが答えです。
外部にパスワードや重要なデータが漏れる事のないように運用すれば、どのように取り扱っても問題ありません。
プライベートリポジトリで確実に外部から閲覧される事がないと保証されているなら、
パスワードは直書きで問題ないので、環境変数を使わなくても良いでしょう。
しかし、そういう過信というか事故があまりにも多いので環境変数を使うという手法が考えられたという事です。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/07/22 14:36

    返信ありがとうございます!

    最後の方は、アプリケーション・サーバーとwebサーバーの役割の違いを仰っているんですね!

    恥ずかしながら、mingosさんに『rake assets:precompile』教えていただくまで、アセットパイプラインについて何も知りませんでした。もっと言えば、rails側の開発環境と本番環境の挙動の違いの理解も乏しかったです。それが原因だと思うのですが、mingosさんに教えていただいた最初の部分があまり理解できないので(勉強不足&飲み込みが遅くて申し訳ないです。。。)、一度、教えていただいた情報を整理し、rails tutorialを仮想(開発&ステージング)で実行して、再度質問したいのですが、よろしいでしょうか?

    ご迷惑をおかけして申し訳ございません。

    よろしくお願いいたします!

    キャンセル

  • 2017/07/22 15:46

    はい、また何かあれば質問してもらって良いです。
    分かる範囲であれば回答したいと思います。

    キャンセル

  • 2017/07/23 00:17

    お手数をおかけして申し訳ございません。

    今回も助けて頂き、本当にありがとうございました!

    今後ともよろしくお願いいたします!

    キャンセル

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

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

関連した質問

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