閲覧ありがとうございます。
vagrantで開発環境&ステージング環境に挑戦中の初心者です。よろしくお願いいたします!
rails tutorialを参考に開発環境で開発する流れを勉強中なのですが、DBの取扱に困っているので助けてください。
前提
vagrant 1.9.7
ホスト
MacOsX sierra
ruby 2.4.1
rails 5.0.2
mysql Ver 14.14 Distrib 5.7.18
ゲスト
centos7(official box)
ruby 2.4.1
rails 5.0.2
mysql Ver 14.14 Distrib 5.7.18
現在、ホスト側で作業、ゲスト側でサーバー起動してブラウザ確認、ッといった開発環境です。
ホストのDBに、一つだけレコードを挿入User.create(name: "thank you for your help")
した後、ゲストのMySQLを見ると先程挿入したデータが入っていませんでした。ホストとゲストのMySQLは別々なので、データが入るはずがないよね!っと納得したが、ホストに挿入したデータを毎回ゲストにしなければいけないのか?っと疑問に思い質問させていただきました。
疑問:そもそもホストで作業する事が間違い?それとも開発環境の構造がおかしい?
DBのレコード挿入を毎回ホスト・ゲストに処理をするっといった、めんどくさい事をしないのでは?ッと思い検索してみたのですが、答えが見つからなかったので、自分の開発の進め方がおかしいのではと思い質問させていただきました。
現在の私の考えは、ホストを中心に、仮想で各々の環境を構築すれば良いと思っています。developでは、DBのみ。ステージングでは、web&アプリーケーションサーバーの設置。
ですが、ゲストを起点に開発するやり方も考えられるとおもうのですが?
つまり、ゲストの開発環境で作業し、ホストはあくまでもバックアップとしての立場。
ゲストで作業する場合だと、DBの取扱は、仮想の中で完結するので、いいのかな?っと思ったり。。。。
ちんぷんかんぷんな事を言っているかもしれませんが、よろしくお願いいたします!
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
ホストで作業するのが間違いです。
ゲストで全て作業してください。
作業面だけで言えば、ホストにMySQLやruby/railsをインストールする必要はありません。
各環境について
前回の質問では、分かりやすく説明するために、開発環境とステージング環境は分けるという話をしました。
ただ、練習という意味では開発用の仮想マシン1台で出来る方法があるので、こちらをおすすめします。
私もrailsチュートリアルを試す時は、この方法でやっています。
開発環境
- 実行ユーザ:partykids(vagrantでも良い)
- RAILS_ROOT:/home/partykids/workspace/sample_app
- RAILS_ENV:development
- ポート番号:3000
- DB名:開発用DB (sample_app_development)
- Appサーバ:puma(rails sで実行)
- Webサーバ:なし
- ソース:Bitbucketで管理
ステージング環境のようなもの
- 実行ユーザ:sample_app(プロジェクト専用のユーザ。本番環境と同じにする)
- RAILS_ROOT:/home/sample_app/approot
(ユーザ名をsample_appとしたので、ディレクトリ名を変えないとややこしいため、approotとした) - RAILS_ENV:production
- ポート番号:3000以外(8210とか9150とか使用されていない番号ならOK。中途半端な番号のほうが被りにくい)
- DB名:本番用DB (sample_app_production)
- Webサーバ:ApacheまたはNginx でバーチャルホストの設定をする
- ソース:Bitbucketで管理
ドキュメントルートは当然、/home/sample_app/approot/publicにする
Linuxユーザを作成した直後は、/home/sample_appのパーミッションが0700なので、
0711に変える必要がある点に注意。
ステージング環境をブラウザで見るための設定
Vagrantfileを修正し、192.168.33.10などでホストからゲストの仮想マシンへアクセスできるように設定する。
ホストの/etc/hostsを編集して、192.168.33.10 sample.example.com など適当なホスト名を設定。
こうすると、ホスト側で http://sample.example.com/ でアクセスできる。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
developでは、DBのみ。ステージングでは、web&アプリーケーションサーバーの設置。
開発環境とステージング環境の認識がおかしい気がします。
開発環境はそのまま製造中のシステムを開発者が確認するための環境で、
ステージング環境は本番リリース前の確認、お客さんに検収をしてもらうための環境と認識しております。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 89.97%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/07/25 19:06
やっぱりそうでしたか!まずはプリコンパイルをしたかったので、作業を進めてましたが。。。早めに知れて良かったです。ありがとうございます!
そうすると、エディタとかは、どのように使えばいいのですか?ターミナル入力は、vagrantに入ってする。それ以外のファイル編集はホストで編集して、マウント機能を介して、ゲストに反映させる。ですか?
また、pumaやnginx等は開発環境に含めなくてもよろしいのでしょうか?
いつも初歩的なことばかり質問して、申し訳ございません。
よろしくお願いいたします!
2017/07/25 19:11
一度読んでから、また返信いたします!
よろしくお願いいたします!
2017/07/25 19:27
2017/07/25 21:48
いつも助けて頂き、本当に有難うございます!
とても具体的に説明していただいたので、自分の考えがかなり間違っていた事に気が付けました!
本を読んでもよく分からなかったので、今回は実践からスタートしたのですが、甘かったです。。。
いくつか分からない点がございますが、mingosさんに一から十まで教えていただくわけにはいかないので(たくさん甘えてすみません)一度作ってみます!
今からモデルを含む、プリコンパイルが出来る所まで作業してみたいと思います!
今回も、本当にありがとうございました!
心より感謝申し上げます。
2017/07/30 15:04 編集
途中、問題点を自分が理解できる所まで落とし込めず、詰まったので、仮想2台でやりました。開発仮想で作ったものを、一度ローカルにgit cloneして、それをcapistranoを使って、ステージング仮想にデプロイしてみました。
質問があるのですが、よろしいでしょうか?
1. 一旦、ローカルで作業(gemのインストールとcapistranoのインストール&設定)してしまったのですが、なにか問題が起こり得るのでしょうか?やはり、仮想の中ですべて完結出来ることが理想ですか?
2. 作った仮想は削除しないのですか?
デプロイ後の運用を考えれば、問題が起こる度に仮想を新規作成するのは面倒。また、以前設定したものが人為的ミスで新規仮想に反映されず、本番環境にミスマッチな開発がされるリスクが起こる?
よろしくお願いいたします!
2017/07/31 10:32
capistranoは作業の自動化のためのツールであって、railsとは無関係です。
一緒に語られる事が多いので混乱しがちですが、PHPアプリのデプロイでもcapistranoは使えますよね。
capistranoを動かす場所がホストである必要があるなら、ホストにcapistranoを動作させるための環境を作るのは当然です。
私が言っているのは、railsやDBを実行するサーバは、本番環境と同じOSの仮想マシンにするべきであるという事です。
2.について
なぜ削除する必要があるのでしょうか?
意味が分かりません。
開発用、ステージングの仮想マシンはそのまま使い続けます。
2017/08/01 01:57
>railsやDBを実行するサーバは、本番環境と同じOSの仮想マシンにするべき
そういうことなんですね!capistranoがデプロイツールなのは分かっていたのですが、仮想の中ですべて完結出来る状態がベストなのかが分からなく質問させていただきました。
まだ、開発では動いてたのに、本番では動かない。。という状況に出会ってないので、何を仮想に入れたら良いのかが分かっていないのが問題ですね。
>開発用、ステージングの仮想マシンはそのまま使い続けます
やはりそうでしたか。。初めての仮想&環境作りだったので、失敗作仮想がすでに6個ぐらい出来てしまいました。何が必要かが分かっていくうちに、仮想で環境を作るのは簡単だなっという反面、簡単に構築出来るなら容量も結構あるので削除してもいいのかな?っと思いました!
本当にありがとうございます!
mingosさんのおかげで、ここまでたどり着けました。
一通り、流れはつかめた?と思いますので、htmlとcssを勉強しながら、実際にアプリケーションを制作していきたいと思います。
ありがとうございました!