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

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

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

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

4回答

1364閲覧

ApacheHTTPServerは何をしているのか

itukikikuti

総合スコア19

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2017/07/01 11:05

ApacheHTTPServerが何をしているのか知りたいです。
PHPのビルトインサーバー等では
セキュリティ的によくないことはわかるんですが
PHPのビルトインサーバーとの違いがよくわかっていないので
その違いを具体的に教えていただきたいです。
(個人的にはセキュリティを向上させる処理をしているのではないかと推測しています。)

よろしくお願いします。

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

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

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

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

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

guest

回答4

0

質問が緩いので、回答者の主観でいろいろ回答が付きそうですが、公式の Wiki にこんな表現がありました。
What is Apache?

内容が少し古い気もしますが、そこそこ伝わるかと思います。

投稿2017/07/01 11:55

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

Apacheはセキュリティ的には、PHPのビルトインウェブサーバーに勝るところは(あまり)ないと思いますよ。

ブラウザはいくつものファイルを平行に取得しようとします。
一度HTMLを読み込むと、CSSやJavaScriptや画像などを幾つも並列に取得します。
Apacheはそれを(幾つか)並列に処理することが出来ます。
さらにいくつものクライアント(相手のパソコンです)と通信できます。

それに対して、PHPのビルトインウェブサーバーは、公式の説明を借りると

このウェブサーバーは単一のシングルスレッドプロセスしか実行しないので、 リクエストがブロックされると、PHP アプリケーションはストールします。

一台のクライアントの一つのリクエストしか処理できません。HTMLを返したら、次にCSSを返して、次にJavascriptを返して・・・みたいに逐次処理になります。
それがいくつものクライアントから来たら・・・そのうちリクエストがタイムアウトしてしまいます。
つまり取りこぼしてしまいます。絶対的に信頼性に欠けるわけです。

なので、そういうことは専門家、つまり、Apacheやnginxにやってもらった方がいい、ということになります。(それ以外にも理由がありますが・・・)

投稿2017/07/01 13:53

shi_ue

総合スコア4437

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

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

0

PHPに限らずなんですが、ぱっと思いつくのは
1.(PHP等)アプリケーションプログラムまで処理を流したくない場合、アプリケーションプログラムが"最前面"だと対応できないから。
2.ApacheHTTPServerの細かい設定を利用できるから。
でしょうか。
まず大原則として運営中のWEBサービスっていかなるときも"止めてはならない"のです。
ECサイトとかソーシャルゲームでよく"メンテナンス中"ってあるじゃん、て思うかもしれないけど、あれはちゃんと"メンテナンス中"ってレスポンスを返却する処理が動いている。でその処理はだれがやるかというとメンテナンス対象であるアプリケーションプログラム自身にやらせるわけにはいかない(メンテ中だから動く保証が無い)。こういう場合、Apacheでリクエストの処理先をアプリケーションプログラムから固定のメンテナンスページに変えてから作業に入るのがよくあるやり方です(Apacheが"メンテナンス中"ページを返す)。逆にいうとアプリケーションプログラムの前面に何もないとアウトです。
※PHPだと止める必要ない場合もあるとおもうけど再起動が必要なJavaやDBメンテが入る場合とかはまずこれが必要。あと根本的にバグってたら流石に止めざるを得ませんよね...。
あとは固定HTMLとかはいちいちアプリケーションプログラムに流さなくていい(性能面で)。その振り分けをさせるとかが1に該当します。
2の設定についてはDoS攻撃で同一IPの短時間連続アクセスを遮断するとか、管理画面でベーシック認証かけるとかが考えられます。

投稿2017/07/19 06:40

編集2017/07/19 06:54
kurokoba

総合スコア276

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

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

0

PHPビルトインウェブサーバーはアプリ開発の支援用として設計されたもので、テストや制約のある環境でアプリのデモを行うために使えます。

ApacheHTTPServerはWebサーバ専用アプリケーションですので、性能やセキュリティ機能も豊富です。但し、設定は簡単ではありません。

アプリ開発中や開発メンバー間での簡単なデモであればPHPビルトインウェブサーバーで事足りるよねって位です。

投稿2017/07/19 06:30

moonphase

総合スコア6621

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問