Apacheまたはlighttpd [終了]
質問
開発では、ローカルLAMPスタックを使用します。本番では、 MediaTempleのDjango Container (BTWが大好きです)。 MTのコンテナはlighthttpdを使用します。正直なところ、私はそれを他に経験したことがありません。私は常にApacheを使用しています。私はいくつかの読書をしてきました:
質問は次のとおりです。
- 一方が他方よりも優れている点は何ですか?
- 開発環境でlighthttpdを使用するのはメリットですか?
- 両方の使用法はどうですか? Linux.comの記事では、Apacheでのlighttpd の使用について説明しています。
解決
WebサーバーとDjango間のインターフェイスの方法は、Webサーバーソフトウェアを選択するよりもパフォーマンスに大きな影響を与える可能性があります。たとえば、mod_pythonはRAMが重いことが知られています。
この質問とその回答では、他のウェブサーバーオプションについても説明しています。
クライアントソフトウェアとの互換性の問題は気にしません( MarkRのコメントを参照) 。 lighttpdとFastCGIを使用してDjangoにサービスを提供するとき、このような問題はありませんでした。サーバーソフトウェアとクライアントソフトウェアの両方の多様なエコシステムを見たいです。単一のベンダーが提供する事実上の製品よりも、優れた標準を持つことの方が優れています。
他のヒント
両方の利点:Apacheはより強力で拡張性があり(そのパワーが必要ない場合は、とにかく...)、静的コンテンツではlighttpdが高速です。アイデアは、サイトを静的コンテンツ(css、js、画像など)とApacheを流れる動的コードに分割することです。
lighttpdだけでは多くのことができないとは言いません。あなたはできる、そして人々はそうする。
実稼働サーバーでのみlighttpdを使用している場合は、開発サーバーおよびステージングサーバーでlighttpdをミラーリングすることを真剣に検討し、展開前に何を期待すべきかを正確に把握します。
個別のIPアドレスからのn個のhttp要求がある純粋に静的なWebページ(.gif、.cssなど)の場合: 1. Apache:n個のプロセスを実行します(mod_perl、mod_phpをメモリ内で使用) 2. lighttpd:1つのプロセスと1つのスレッドを実行します(起動する前にm個のスレッドを割り当てることができます)
異なるIPアドレスからのn個のhttpリクエストを含む純粋に動的なWebページ(.php、.pl)の場合: 1. Apache:n個のプロセスを実行します(mod_perl、mod_phpをメモリ内で使用) 2. lighttpd:非同期I / Oのおかげで1つのlighttpdプロセスを実行し、スクリプト言語ごとにm個のfast-cgiプロセスを実行します。
Lighttpdははるかに少ないメモリを消費します。 YouTubeは、Googleに買収されるまでlighttpdの大ユーザーでした。詳細については、ホームページにアクセスしてください。
PS私の前の会社では、両方をロードバランサーとともに使用して、URLサフィックスに従ってHTTPトラフィックを分散しました。完全にlighttpdしないのはなぜですか?レガシーの理由で。
答えは、プロジェクトの目標によって異なります。稼働時間が重要で負荷が大きい大規模なサイトになる場合は、lighttpdを使用します。驚くほどスケーリングします。唯一の欠点は、最初はもっと手を伸ばさなければならないことです。ほとんどのホストはこれをサポートせず、lighttpdで何をしているのかを知ることは本当に役に立ちます。
もしそれがあなたの母親のためのサイトであれば、月に数千人の訪問者を得ることができます。彼女は新しいホストに簡単に移動できるようになり、サポートが見つけやすくなります。
標準のWebサーバーを使用します。 ApacheはWebサイトの50%で使用されています( Netcraft )したがって、Apacheを使用する場合、人々のWebブラウザー、スパイダー、プロキシなどは、サイト(とにかくWebサーバー)で動作することがほぼ保証されています。
LighthttpdはWebサイトの1.5%で使用されています( Netcraft )、それで人々がそれを使ってアプリをテストする可能性ははるかに低くなります。
本番環境では、パフォーマンスの違いは問題になりません。 Apacheサーバーはおそらく、運用環境で展開する可能性のある最も遅いハードウェアで、あなたが持っているよりもはるかに高い帯域幅で静的リクエストを処理できます。