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

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

ただいまの
回答率

88.09%

ローカル開発環境とサーバーについて

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,705

score 30

とあるサイトを参照したところ
クライアント -> Webサーバー -> APサーバー -> DBサーバー
DBサーバー -> APサーバー -> Webサーバー -> クライアント
の一連の流れでアプリケーションが動いていると記載されていました

また
サーバーというのは専用のサーバーソフトが動いていて
特定の機能に特化したコンピューターという認識です

例として
Apache HTTP Serverというサーバーソフトを動かしているコンピューターなら
Webサーバーソフト

Apacheというサーバーソフトを動かしているコンピューターなら
アプリケーションサーバー

MySQLというサーバーソフトを動かしているコンピューターなら
DBサーバー

そして仮想サーバーは
一つのコンピューターの領域をを分けてDBサーバーやアプリケーションサーバーなどの複数のサーバーを
まとめていると解釈しました

先ずここまでの解釈に誤りがあればご指摘ください。

私は現在ローカル開発環境を構築してアプリ開発を試みていますが
先ずは、VirtualBoxをダウンロードしました。
これは、PCには1つしかOSを導入できず。サーバー系のOS(例CentOS)での動作確認が必要なため
仮想マシンにサーバー系のOSに導入するためだと某サイトに記載されていました。
次に簡易的にVirtualBoxを操作するVagrantをインストールした後にlaravelでの開発を始めたのですが
ローカル開発環境で、Webサーバー,APサーバー,DBサーバーを構築した覚えがないのに
アプリが動く仕組みが理解できません
また、サーバーが構築してある場合、私の仮想マシン内に構築されているのでしょうか?

どなたかご教示いただけないでしょうか?

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • m6u

    2019/05/24 15:00

    Vagrant+VirtualBoxでのデバッグ環境に関する説明は、どこの情報を参考にしているか、本文中に追記してください。

    キャンセル

  • honda_toru

    2019/05/24 15:08

    ローカル開発環境構築に関してはドットインストールを参照しております
    デバック環境という言葉意図が間違っていましたら申し訳ありません。

    キャンセル

回答 3

checkベストアンサー

+4

Oracle VirtualBoxっていうのは、パソコン上で別のOSを仮想PC上で動かすソフトですね。
これ一つで、例えばCentOSだのUbuntuだのLinuxディストロのインストールDVDイメージファイルを用意して、
インストールして立ち上げることが出来ます。
でも、CentOSならCentOSの初期設定や必須ソフトの構築など、
細かなこと全部自分で行う必要が生じて面倒だし時間もかかります。

そこで、Vagrantです。
VagrantはVirtualBoxなどの仮想OSソフトを制御して、
どういうOSを入れるのか、そのOS上にどういうソフトをインストールして動かすのか、
というサーバー構築に関わる情報をvagrantfileというものに記述し、
それに従ってOSのインストールイメージファイルのダウンロードやインストールから
サーバーソフト類のインストールと初期構築を自動化するものです。

どういうコマンドを叩けばどうなるのか、っていうのが
Vagrant+VirtualBoxでのデバッグ環境構築に関する記事の中で解説されているので、
自分で打ったコマンドによって開発環境(デバッグ環境)ができたかどうかがわかります。

しかし、パソコンに入っているウイルス対策ソフト(ファイアウォール)によっては
思い通りにすんなり立ち上がらないこともあるので、
コマンドを叩いたからと言って狙った通りにサーバーが稼働しているかどうかはわかりません。
動作確認を行って不測の事態の対策を取る必要があります。
ずっこけているとコンソールすら開けないとかsshログインできないとかありえます。

--

サーバーに関して。
必要な機能が動き十分速く処理できさえすれば、
すべて一台で賄うことも可能です。
webサーバー役、サーバー側言語処理役、データベースサーバー役、メディアサーバー役などなど。
しかし、システムへのアクセス量が多いとか、短時間で大量のデータ処理が必要になるなど、
一台で賄うには高性能なサーバーが必要になったりします。
一つのサーバーアクセスを受け取り、処理して、結果を返すのに2秒かかるとしたばあい、
10件で20秒、100件で200秒、1000件で、10000件で、と順調にリニアに増えることもあれば、
予測に反して余計に時間がかかることもあります。
処理の負担が、webアクセスにかかるのか、サーバー側言語処理にかかるのか、
データベースへのクエリーにかかるのかなどを見極めて、
webアクセスを分散させるためにインターネットとwebサーバーとの間にロードバランサーをおいて
webサーバーを複数台にし、一つのデータベースサーバーにアクセスする構成に拡大したり、
あるいはデータベースを多重化することもあります。
一台で担う役が少なくなれば、極端に高性能なハードウェアでなくても動きやすくなります。

ローカルでの開発においては、
全て一台で賄うことが多いですが、
複数のサーバーを駆使する大規模開発になるとローカルでも複数台を置くこともあります。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/05/24 15:16

    VagrantとVirtualBoxについてご教示ありがとうございました。
    もしサーバーに関する内容もご存知でしたらご教示お願い申し上げます。

    キャンセル

  • 2019/05/24 15:57

    それは、回答内にも書きましたが、vagrantfileの中身次第です。
    https://www.vagrantup.com/docs/vagrantfile/
    そして、
    http://www.vagrantbox.es/
    をみると、どういう構成のサーバーが立ち上がるかを示したものが掲載されていて、
    簡単にサーバー環境(開発環境、デバッグ環境)が立ち上がります。
    なので、
    じぶんでどこまでやったかを示しつつ、
    vagrantfileの内容も示してくれれば、
    読める人が解説してくれるはずです。

    キャンセル

+2

仮想化技術は物理サーバのリソース(CPU、メモリ、ディスク、ネットワーク)を効率良く使用することを目的とし、OS単位、ソフトウェア単位で分割します。
従って、「仮想化サーバーとは役割毎にサーバを分けて、1サーバに纏めることだ」という理解には違和感を感じます。

OS、ソフトウェア分割にはそれなりのメリットがあり、これを見込むのであれば分割もありですが、
開発を目的としているのであれば、1仮想サーバに全ての役割を収めるで問題ないかと。

ローカル開発環境で、Webサーバー,APサーバー,DBサーバーを構築した覚えがないのに
アプリが動く仕組みが理解できません

開発環境をどのように構築したか?ではないでしょうか?
例えばHomesteadを使用すれば、一式の環境構築ができるようです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/05/24 16:43

    適切に回答いただきありがとうございます。
    とても参考になりました。

    キャンセル

0

サーバー1台で全部動かしてもいいと理解すればいい。

PHPの場合アプリサーバーは意識しないのでWebサーバー+DB。

Laravelの前にレンタルサーバー辺りでPHPの基礎を勉強したほうがいい。
WebサーバーでPHPが動く仕組みなんてことはLaravel前に知ってて当然の前提なので
知らない段階で使うのは無理。
ぐぐって見つけた情報をコピペして真似しかできない。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/05/24 15:31

    php-fpmとしてAPサーバを立てた構成も、(特にnginxには直接PHPを組み込めないこともあって)ちょくちょく取られるかと思います。

    キャンセル

  • 2019/05/24 15:39

    申し訳ございません
    PHPの基礎を学習するためにドットインストールというサイトのレッスンと
    PHPの絵本という書籍を学習したのですがサーバー関係の知識を得ることができませんでした
    レンタルサーバーを借りるだけでサーバーに関する知識が身につくのでしょうか?

    キャンセル

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

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

関連した質問

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