Nginx + MySQL + PHP5 + APC + Spawn_FastCGIを使用してWebサーバーをインストールする方法[第1部:プレゼンテーション]

少し前に私たちは今それについて話しました DesdeLinux (そのすべてのサービスが) で動作しています GNUTransfer.comサーバー。 ブログは、私たちが持っていたからでも、スピード、流動性の点で大幅に改善されました(UsemosLinuxマージ後)毎日30.000回以上の訪問(約200人のユーザーが同時に接続)。 この量のトラフィックでもサーバーで良好なパフォーマンスを実現するにはどうすればよいですか?

現在、Justice(ブログやその他のサービスがあるVPS)には3GBのRAMがありますが、消費されるRAMは500MB未満です。これは、使用するソフトウェアを正しく選択し、それらを適切に構成することで可能になります。 たとえば、Apacheは間違いなく世界で優れており、ホスティングに関してはNo.1ですが、まさにそのため、Apacheが常に最良の選択肢であるとは限りません。 トラフィックが多く、サーバーハードウェアがそれほど大きくない場合(例:8GBまたは16GBのRAM)、ApacheはRAMを大量に消費する可能性があり、サーバーが応答するのに時間がかかりすぎるか、さらに悪いことに、サイトがオフラインになります。不十分なリソース。 これが、私たちの多くがApacheではなくNginxを選択する理由です。

nginxの:

記事の前半ですでにNginxについてお話しました Nginx:Apacheの興味深い代替手段そこでは、Apache、LightHttpd、または Cherokee のような Web サーバーであると説明しましたが、Apache と比較すると、パフォーマンスとハードウェア消費量の少なさで際立っており、まさに Facebook、MyOpera.com、DropBox、さらには WordPress などの多くの大規模サイトが使用されている理由です。 .com では、Apache の代わりに Nginx を使用します。 Linuxの世界では DesdeLinux Nginx を使用しているのはこれだけではありません。私の知る限り、emsLinux と MuyLinux もそれを使用しています:)

Nginxでの私の個人的な経験は、やむを得ずApacheの軽量な代替品を探し始めた数年前にさかのぼります。 当時、Nginxはバージョン0.6であり、PHPで作成された需要の高いサイトとの互換性は最適ではありませんでしたが、今日ではバージョン0.9以降(v1.2.1はDebianStableで利用可能、v1.4.2はArchLinuxで利用可能)は大幅に改善され、適切な構成とNginx + PHPの結合により、すべてが魅力のように機能するようになりました。

このチュートリアルシリーズでは Nginxバージョン1.2.1-2.2を使用します、Debian Stableリポジトリ(Wheezy)で入手できます。

PHP5:

多くのサイト(およびCMS)が今日使用しているプログラミング言語であるPHPは、私の見解では、家族の黒い羊です。 つまり、私の個人的な経験では、訪問数が多く、オプションや機能などが多い大規模なサイトでは、そのようなサイトをPHPで作成すると、RoRなどで作成した同様のサイトよりも多くのリソースを消費します。 私の経験では、PHPは巨大なリソースドラゴンであり、PHP + Apacheは、実際の必要なしに数百MBのRAMを飲み込むのに十分です。

RoR や Django などを使用しない理由は単純です。 DesdeLinux (私たちのフラッグシップであるブログは) WordPress と連携しています。WordPress は PHP で開発された CMS で、非常に多くの快適さを提供してくれるので、短期的にも中期的にも変更する予定はありません。WordPress は、たとえ完璧ではないとしても、正直に言って、私たちが必要とするもの、あるいはそれ以上のものを私たちに提供します。

PHPに関しては、これらのチュートリアルでは、 PHPバージョン5.4.4-14 Debian Wheezyで利用可能(安定版)

Spawn_FastCGI:

これは、NginxとPHPを接続するものであると言えます。つまり、PHP5パッケージがインストールされていても、PHPでサイトを開いたときにSpawn_FastCGIがインストールおよび実行されていない場合、ブラウザーはファイルをダウンロードしますが、サーバーが.phpファイルの処理方法を知らないため、.phpがプログラムされていることをすべて表示します。そのため、Spawn_FastCGIをインストールして構成することが不可欠です。

Apacheを使用した場合、libapache2-mod-php5パッケージをインストールするのと同じくらい簡単ですが、Nginxを使用しているため、代わりにspawn-fcgiパッケージをインストールする必要があります。 また、チュートリアルでは、/ etc / init.d /に初期スクリプトを作成して、より快適に制御できるようにする方法について説明します。

MySQL:

これは大きな疑問符であるか、場合によっては不一致なメモである可能性があります。 私が知っている多くの人が私に質問をするでしょう:なぜMariaDBではなくMySQLを使うのですか?

問題は単純に、現時点では MySQL から MariaDB への移行を行うのに十分な時間がないということです。移行は理論的には誰にとっても透過的で、すべてと 100% 互換性があるはずですが、それは...理論的には、と私は言いました。引越しサービスを始めた当時 DesdeLinux ある VPS から別の VPS に移行するには、Apache を残して Nginx を使用する必要がありました。これには、さまざまな設定ファイル、VHost のさまざまな宣言方法、サーバーとそのサービスのインストールと設定を最初から行う必要があり、当時は別のタスクを VPS に追加することはできませんでした。また、正直に言うと、Apache では私のニーズを満たせなかったため、Apache を Nginx に変更しました。しかし、MySQL は今のところ私のニーズを 100% 満たしています。すでに動作していたものを変更してワークロードを増やす理由はありません。技術的には私にとっては良いです。

MariaDBをインストールしなかった理由を説明したら、多くの情報(またはほとんどすべて)が保存される場所であるため、大多数のWebサイトが操作のためにデータベースを必要とすることも説明します。 Postgreや他の誰かが好きな人もいます。この一連のチュートリアルでは、その方法を説明します。 MySQLをインストールし、サイトごとに個別のユーザーを構成します.

La 使用するMySQLのバージョンはv5.5.31です

APC:

APCはPHPのオプティマイザーです(非常に簡単に説明されています)。 適切に構成すると、PHP処理がより適切に機能し、サーバーからの応答がより高速になります。

memcacheのような代替手段がありますが、私は常にAPCを使用しており、非常に好ましい結果が得られています。 この記事を英語で読むことをお勧めします。 ローカルコンテンツキャッシュとしてのAPCとMemcacheの比較

チュートリアルでは、のバージョンを使用します php-apc v3.1.13-1 DebianStableリポジトリでも利用できます。

一言で言えば:

構成Webサーバーをインストールするこの方法は、最適でもそれ以下でもありません。たとえば、多くの人がVarnishを推奨します。これは、すべてまたはほとんどすべてがキャッシュされているため、私が読んだところから真の奇跡を起こしますが、この場合は必要ありません。極端に移動する必要がないため、サイトの100%は常にキャッシュされます。 ただし、上記で述べたように、「私が読んだ限り」、私は今日まで個人的にVarnishを使用したことがないため、100%客観的な意見を述べることはできません。

これは、この分でホストされているような Web サーバーをインストールする方法を説明する一連のチュートリアルになります。 DesdeLinux (ブログ、フォーラム、ペーストなど)。このブログには毎日 30.000 のアクセスがあり、約 200 人のユーザーが同時にアクセスしていますが、RAM の消費量は 500MB を超えません。一部の人にとっては過剰な消費かもしれませんが... 3GB の RAM があり、500MB 未満です (これには、 FTP サービス、SSH など) は本当に良いですよね? 🙂

すべての「魔法」はNginx + Spawn_FastCGI + APCによって実行されるだけでなく、ブログのキャッシュシステムは非常に適切に構成されており、Nginxのルールは正確です。これにより、大量のトラフィックプロセスを受信する場合でも、ブログはPHPよりもはるかに少なくなります。すでにたくさんキャッシュされているので通常です。 需要の高いサイトがあり、リソースに問題がある場合は、どのキャッシュシステムが最適で、どのキャッシュシステムがニーズに最も適しているかを確認することを強くお勧めします。

これらのチュートリアルがおもしろいと思います。それぞれのチュートリアルで、すべてを包括的で詳細かつ簡単な方法で説明しようと思います。

よろしく


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ブルーノカシオ

    とても良くてクリア! おめでとうございます!

    1.    KZKG ^我愛羅

      ありがとう

  2.   クリストファーカストロ

    とても良いチュートリアル。

    私を疑問に思うのは、彼らが電子メールサーバーをどのように構成したかです。

    1.    KZKG ^我愛羅

      MailServerは別のものです。つまり、ご存知のようにWebサーバーとは何の関係もありません🙂

      ただし、ずっと前にMailServerを複雑にしないことに決め、iRedMail(MySQL、LDAP、およびPostgreのサポート)を使用することを選択しました。適切な設定と詳細を構成ファイルに追加すると、すべてが正常に機能します。

  3.   rots87

    私は記事が好きです、私は一連の記事を待っています

    1.    KZKG ^我愛羅

      ありがとう、私は月曜日か火曜日に次のものを持ってくることを望みます、それはNginxのインストールと構成を扱います。

  4.   アカ

    非常に良い、正しい構成、それを見つけるのは難しいです、要因間の妥協は時々ほとんど解決できないことがあります、私もしばらく前にnginxに行き、後でmariadbに行きました(最近、私はXNUMX年前だと思います)。

    //先ほど述べたように、chrootの可能性を上げて、proxy_cache_pathを使用すると便利です。 また、ソケット(可能な場合)とポートの比較。 子/ラムの数を明確に定義します。

    よろしく

    1.    KZKG ^我愛羅

      コメントありがとうございます🙂
      はい、もちろん、Nginxをケージに入れて、システムの他の部分から分離しておくと非常に便利です。これらのチュートリアルではその可能性を考慮していませんでした。何ができるかを見ていきます。 proxy_cache_pathについては、使用したことがありません。少し読んで、どのように動作するかを確認します。

      スレッド数(最小と最大)に関しては、Nginx構成では明らかに定義されていますが、Nginxの投稿では、.confファイルについて多くのことを話します😉

      繰り返しになりますが、コメントありがとうございます。

  5.   MSX

    このタイプのHowTosは、最終的に適切なオプションを決定するまでの調査とテストにかかる時間を大幅に節約できるため、コンピューター科学者にとってWebを真に強力なものにします。

    XNUMXつの質問、これはDebianで実行されますか? OSとパッケージのバージョンは何ですか?

    ご挨拶!

    1.    KZKG ^我愛羅

      ありがとう。
      確かに、ニュースを繰り返して繰り返すサイトはすでに多すぎます...必要なのはチュートリアルを掲載するサイトです。それがWebに必要なことです。

      はい、Debian Wheezy(現在の安定版)、パッケージのバージョンは投稿にあります😉

  6.   エリオタイム3000

    素晴らしいコメント。 ZPanel Xで一種のErrataを実行するかどうかを確認し、ちなみに、DebianWheezyで手動でインストールを実行します。

  7.   フェデリコ・アントニオ・ヴァルデス・トゥジャグ

    KZKG ^ Gaara !!!、真実の最良の基準は実践であり、あなたは自分が書いたものについての経験を持っています。 プロフェッショナルで実用的なウェブサイト。 メジャーリーグベースボール、おい。

    1.    エリオタイム3000

      それは本当だ。 また、WindowsにインストールしたWebサーバーで遊び始めたとき、実際には、WordPressを使用するとApacheはリソース消費量の点で急上昇します(Drupalではリソースの半分を消費しました)。

  8.   キャリッジ

    Nginxの部分では、このチュートリアルが役立つと思います。 次に、Nginx、php、Varnish、MariaDBを使用してサーバーをインストールします。 しかしもちろん、私たちは始めなければなりません、そしてサーバーとの戦いに関しては怠惰は私にとって多くのことをすることができます、そして今のところ私はxDDを持っている典型的なランプとmemcacheに満足しています。

    挨拶。

  9.   アウロスZx

    素晴らしい、これらのうちのXNUMXつだけが役に立ちます🙂もうXNUMXつはそれを楽しみにしています。

  10.   イワン・ガブリエル・ソーサ

    私たちはあなたに従います。 現在、Webサーバーの世界から始めています。 HostingerからXNUMXつ購入し、友人が最初から構成するのを手伝ってくれました(PHP、MySQL、Apache)。 これは、私がXNUMX月から使用しているプラ​​ットフォームであるLinuxで使用されている唯一の組み合わせです。
    しかし、私はこのトピックに非常に興味を持っていました。 乾杯!

  11.   ホセ·マヌエル

    Webサーバーをインストールしたことはありませんが、インストールしたい場合は、チュートリアルを理解してインストールを行うために必要なレベルが高いのでしょうか、それとも基本的な知識があれば試してみることができますか? 前もって感謝します。

    1.    エリオタイム3000

      真実は、データベースサーバーを処理するために多くの知識を必要としないということです。 すでにその経験を試したことがある人はあなたに話します。

  12.   モーリシャス

    こんにちは、この一連の投稿であなたがやろうとしていることはとても良いことです。

    最近、Nginx + Php Fastcgi + Mariadbをインストールしました。 Nginx。

    このすべて、私はArchlinuxでそれを行いました。なぜなら、そのディストリビューションは私の観点からは唯一のものであり、他のディストリビューションほど多くのメリットをもたらさないからです。 私はそれをケージ環境に置きました、そしてそれを完全に機能させることは私に多くの不便を与えました。

    今では完全に機能しています。 私はあなたの意見を知ることに興味がありますが、子供と父親のプロセスの意見については、あなたが私に与えるヒントが多ければ多いほど良いです。

    これはすべて練習用です。
    この機器には、4GBのDDR2RAMと2GhzCore2.4duoプロセッサが搭載されています。

    ご挨拶と私はこのシリーズの今後の投稿を楽しみにしています。

  13.   カス

    200人のユーザーが同時に接続しましたか?
    一日の特定の時間にだけですよね? そうでなければ、それはそれらの30.000の毎日の訪問を超えるでしょう。

    1.    KZKG ^我愛羅

      はい、もちろん、オンラインで常に200人がいるわけではありません。現時点では、まだ早いため40人近くになり、数時間で100人を超えることになります。

  14.   ハンター

    楽しみのために、ワークステーション(現在Symfony2)でlightyからnginxに切り替えたところ、ここからconfを取得しました[1]。非常に簡単です。

    【1] http://ihaveabackup.net/2012/11/17/nginx-configuration-for-symfony2

  15.   Apr4xas

    これの継続を待っています😀

    1.    KZKG ^我愛羅

      今週私はそれを公開しなければなりません、私たちを読んでくれてありがとう🙂

      1.    salud

        そして? 多くが欠けていますか?

  16.   ディーン

    良い投稿…

  17.   ノエル・イバン

    こんばんは。
    学校のプロジェクトの仕様により、Oracle MVVIRTUALBOXのOPENBSD5.4にNGINXをインストールして、PHP、MYSQL、その他のNADAMAを使用できるようにしました。これは、上記に関する情報を見つけることができなかったと信じています。上記で問題が発生しました。