كيفية تثبيت خادم ويب باستخدام Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [الجزء الأول: العرض التقديمي]

منذ وقت ليس ببعيد ذكرنا ذلك الآن DesdeLinux (جميع خدماتها) تعمل في خوادم GNUTransfer.com. لقد تحسنت المدونة كثيرًا من حيث السرعة والسيولة ، حتى عندما نتوقف عن امتلاك (بعد دمج UsemosLinux) أكثر من 30.000 زيارة يوميًا (ما يقرب من 200 مستخدم متصلون في وقت واحد). كيف يمكن تحقيق أداء خادم جيد حتى مع هذا الحجم من حركة المرور؟

في الوقت الحالي ، تمتلك خدمة Justice (VPS حيث توجد المدونة وبعض الخدمات الأخرى) ذاكرة وصول عشوائي (RAM) بسعة 3 غيغابايت ، ومع ذلك يتم استهلاك أقل من 500 ميجابايت ، وهذا ممكن من خلال الاختيار الصحيح للبرنامج المطلوب استخدامه والتهيئة المناسبة لها. على سبيل المثال ، يعد Apache بلا شك أحد المواقع الرائعة في العالم ، فهو رقم 1 عندما يتعلق الأمر بالاستضافة ، ولكن لهذا السبب بالتحديد ، فإن Apache ليس دائمًا الخيار الأفضل. عندما تكون حركة المرور عالية وجهاز الخادم ليس كبيرًا حقًا (على سبيل المثال: 8 أو 16 جيجابايت من ذاكرة الوصول العشوائي) قد يستهلك Apache الكثير من ذاكرة الوصول العشوائي مما يجعل الخادم في أوقات معينة يستغرق وقتًا طويلاً للاستجابة ، أو أسوأ من ذلك ، أن موقعنا غير متصل بالإنترنت بسبب عدم كفاية الموارد. هذا هو السبب في أن الكثير منا يختار Nginx على Apache.

إنجن إكس:

لقد أخبرناك بالفعل عن Nginx مسبقًا في المقالة Nginx: بديل مثير للاهتمام لـ Apache، لقد أخبرناك أنه خادم ويب مثل Apache أو LightHttpd أو Cherokee، ولكن بالمقارنة مع Apache، فهو يتميز بأدائه وانخفاض استهلاك الأجهزة، وهو ما يفسر على وجه التحديد العديد من المواقع الكبيرة مثل Facebook أو MyOpera.com أو DropBox أو حتى WordPress .com استخدم Nginx بدلاً من Apache. في عالم لينكس DesdeLinux إنه ليس الوحيد الذي يستخدم Nginx، على حد علمي، يستخدمه emsLinux وMuyLinux أيضًا :)

تعود تجربتي الشخصية مع Nginx إلى عدة سنوات ، عندما بدأت بدافع الضرورة في البحث عن بدائل خفيفة الوزن لـ Apache. في ذلك الوقت ، كان Nginx يعمل على الإصدار 0.6 ولم يكن توافقه مع المواقع عالية الطلب المصنوعة في PHP هو الأفضل ، ولكن في الوقت الحاضر من الإصدار 0.9 وما بعده (يتوفر الإصدار 1.2.1 على Debian Stable ، ويتوفر الإصدار 1.4.2 على ArchLinux) قد تحسن كثيرًا ، لدرجة أنه مع التكوين الصحيح واتحاد Nginx + PHP ، سيعمل كل شيء مثل السحر.

في هذه السلسلة التعليمية سأستخدم Nginx الإصدار 1.2.1-2.2، متوفر في مستودعات ديبيان المستقرة (Wheezy).

PHP5:

PHP ، لغة البرمجة تلك التي تعمل بها العديد من المواقع (و CMS) اليوم ، هي في رأيي ، الخروف الأسود للعائلة. وهذا يعني ، في تجربتي الشخصية ، المواقع الكبيرة ، مع عدد كبير من الزيارات ، مع العديد من الخيارات والوظائف ، وما إلى ذلك ، إذا تم إنشاء مثل هذا الموقع بلغة PHP ، فسيستهلك موارد أكثر من موقع مماثل تم إنشاؤه ، على سبيل المثال ، في RoR. كانت تجربتي أن PHP هي تنين ضخم للموارد ، PHP + Apache كافية لابتلاع مئات ومئات ميغابايت من ذاكرة الوصول العشوائي دون حاجة حقيقية.

السبب وراء عدم استخدام RoR أو Django أو أي شيء آخر هو ذلك بكل بساطة DesdeLinux (المدونة، مدونتنا الرائدة) تعمل مع WordPress، وهو نظام إدارة محتوى تم تطويره باستخدام PHP والذي يوفر لنا الكثير من وسائل الراحة، لدرجة أننا ببساطة لا نخطط لتغييره على المدى القصير أو المتوسط، بصراحة، WordPress، حتى عندما لا يكون مثاليًا، يخدمنا لما نحتاجه وربما أكثر.

فيما يتعلق بلغة PHP ، في هذه الدروس سأستخدم ملف إصدار PHP 5.4.4-14 متوفر على Debian Wheezy (Stable)

Spawn_FastCGI:

يمكن القول أن هذا هو ما يربط Nginx بـ PHP ، أي أنه حتى لو كان لديهم حزمة PHP5 مثبتة إذا لم يكن لديهم Spawn_FastCGI مثبتًا ومنفذًا عند فتح موقع في PHP ، فسيقوم المتصفح بتنزيل الملف ، ولن يقوم بذلك أظهر لهم أي شيء تمت برمجته .php لأن الخادم لا يعرف كيفية معالجة ملفات .php ، وهذا هو السبب في أنه من الضروري تثبيت وتهيئة Spawn_FastCGI.

إذا استخدمنا Apache ، فسيكون الأمر بسيطًا مثل تثبيت حزمة libapache2-mod-php5 ولكن نظرًا لأننا نستخدم Nginx ، فسيتعين علينا تثبيت حزمة spawn-fcgi بدلاً من ذلك. سأشرح أيضًا في البرنامج التعليمي كيفية إنشاء نص أولي له في /etc/init.d/ حتى تتمكن من التحكم فيه بشكل أكثر راحة.

الخلية:

قد تكون هذه علامة استفهام كبيرة أو ربما ، بالنسبة للبعض ، الملاحظة المتضاربة. كثير ممن أعرفهم سيسألونني السؤال: لماذا أستخدم MySQL وليس MariaDB؟

المشكلة ببساطة هي أنه ليس لدي ما يكفي من الوقت لتكريسه لإجراء الترحيل في هذه اللحظة من MySQL إلى MariaDB، وهو الترحيل الذي من الناحية النظرية يجب أن يكون شفافًا للجميع، ومتوافقًا بنسبة 100٪ مع كل شيء، ولكن هذا... قلت نظريا. في ذلك الوقت بدأت في نقل الخدمات DesdeLinux من VPS إلى آخر، اضطررت إلى ترك Apache واستخدام Nginx، وهذا يتضمن ملفات تكوين مختلفة، وطرق مختلفة للإعلان عن VHosts، وتثبيت وتكوين الخادم وخدماته من الصفر، وفي ذلك الوقت لم أتمكن من إضافة مهمة أخرى إلى VPS. القائمة، أيضًا، ولكي أكون صادقًا، لقد قمت بتغيير Apache لـ Nginx لأن Apache لم يلبي احتياجاتي، ومع ذلك، فإن MySQL حتى الآن تلبي احتياجاتي بنسبة 100٪، ولا أرى أي سبب يجعلني أزيد عبء العمل عن طريق تغيير شيء كان يعمل بالفعل جيد من الناحية الفنية بالنسبة لي.

أوضح ذات مرة لماذا لم أقم بتثبيت MariaDB ، اشرح أيضًا أنه نظرًا لأن الغالبية العظمى من مواقع الويب تحتاج إلى قاعدة بيانات لتشغيلها ، حيث يتم تخزين الكثير من المعلومات (أو جميعها تقريبًا). هناك البعض ممن يحبون Postgre أو أي شخص آخر ، في هذه السلسلة من البرامج التعليمية سأشرح كيف تثبيت MySQL وتكوين مستخدمين منفصلين لكل موقع.

La إصدار MySQL الذي سأستخدمه هو v5.5.31

ناقلات الجنود المدرعة:

APC هو مُحسِّن لـ PHP (شرحه بكل بساطة). بمجرد تكوينه بشكل صحيح ، فإنه يسمح لنا بأن تعمل معالجة PHP بشكل أفضل ، وأن الاستجابات من الخادم تكون أسرع.

ومع ذلك ، هناك بدائل مثل memcache ، فقد استخدمت دائمًا APC وحصلت على نتائج إيجابية للغاية. أوصي بقراءة هذا المقال باللغة الإنجليزية: مقارنة APC و Memcache كذاكرة تخزين مؤقت للمحتوى المحلي

سأستخدم في البرنامج التعليمي إصدار PHP-APC v3.1.13-1 متوفر أيضًا في مستودعات ديبيان المستقرة.

وخلاصة القول:

هذه الطريقة لتثبيت تكوين خادم الويب ليست هي الأفضل ، بعيدًا عن ذلك ، على سبيل المثال ، سيوصي الكثيرون بـ Varnish ، والتي من خلال ما قرأته تعمل معجزات حقيقية لأن كل شيء أو كل شيء تقريبًا مخبأ ، لكن في حالتنا لا نفعل ذلك نحتاج إلى أن يتم تخزين 100٪ من الموقع دائمًا مؤقتًا لأننا لا نريد أو نحتاج إلى الذهاب إلى هذا الحد الأقصى. ومع ذلك ، أوضح ، كما قلت أعلاه: "بقدر ما قرأت" ، أنا شخصياً لم أستخدم الورنيش حتى اليوم ، لذلك لا يمكنني إعطائك رأيًا موضوعيًا بنسبة 100٪.

ستكون هذه سلسلة من البرامج التعليمية التي سأوضح لك فيها كيفية تثبيت خادم ويب مثل الخادم الذي تستضيفه هذه اللحظة. DesdeLinux (مدونة، منتدى، لصق، الخ). تحظى المدونة بـ 30.000 زيارة يوميًا، ويصل إليها ما يقرب من 200 مستخدم في وقت واحد، ومع ذلك فإن ذاكرة الوصول العشوائي (RAM) لا تتجاوز 500 ميجابايت مستهلكة، بالنسبة للبعض قد يكون هذا استهلاكًا مفرطًا ولكن... مهلا، لدينا 3 جيجابايت من ذاكرة الوصول العشوائي، أقل من 500 ميجابايت (والتي تشمل خدمة FTP، SSH، وما إلى ذلك) جيدة حقًا، أليس كذلك؟ 🙂

كل السحر لا يتم فقط بواسطة Nginx + Spawn_FastCGI + APC ، نظام التخزين المؤقت للمدونة الخاص بنا مهيأ جيدًا وقواعد Nginx دقيقة ، وهذا يجعل المدونة حتى عندما تتلقى الكثير من عمليات المرور أقل بكثير من PHP مما المعتاد ، لأنه يحتوي على الكثير من ذاكرة التخزين المؤقت بالفعل. إذا كان لديك موقع مرتفع الطلب ولديك مشاكل في الموارد ، فإنني أوصي بشدة أن تدرس لمعرفة نظام ذاكرة التخزين المؤقت الذي سيعمل بشكل أفضل بالنسبة لك ، أيهما يناسب احتياجاتك بشكل أفضل.

آمل أن تجد هذه الدروس ممتعة ، سأحاول في كل منها شرح كل شيء بطريقة شاملة ومفصلة وبسيطة قدر الإمكان.

تحياتي


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   برونو كاسيو قال

    جيد جدا وواضح! أهنئك!

    1.    KZKG ^ جارا قال

      شكرا لك

  2.   كريستوفر كاسترو قال

    تعليمي جيد جدا.

    ما يملأني بالشك هو كيفية تكوين خادم البريد الإلكتروني.

    1.    KZKG ^ جارا قال

      MailServer شيء منفصل ، أي أنه لا علاقة له بخادم الويب كما تعلم 🙂

      ومع ذلك ، قررت منذ وقت طويل عدم تعقيد نفسي مع MailServer ، اخترت استخدام iRedMail (دعم MySQL و LDAP و Postgre) ومع الإعدادات والتفاصيل المناسبة التي أضفتها في ملفات التكوين ، كل شيء يعمل بشكل جيد.

  3.   روتس 87 قال

    يعجبني المقال ، أنتظر سلسلة المقالات

    1.    KZKG ^ جارا قال

      شكرًا ، أتمنى إحضار الإصدار التالي يوم الاثنين أو الثلاثاء ، حيث سيتعامل مع تثبيت Nginx وتكوينه.

  4.   هيئة مكافحة الفساد قال

    جيد جدًا ، التكوين الصحيح ، من الصعب العثور عليه ، التسوية بين العوامل في بعض الأحيان غير قابلة للحل تقريبًا ، ذهبت أيضًا إلى nginx منذ فترة ولاحقًا إلى mariadb (مؤخرًا ، أعتقد قبل عام).

    // كما ذكرت ، سيكون من الجيد إذا قمت بإثارة إمكانية chroot ، واستخدام proxy_cache_path وهو أمر مفيد أيضًا. وكذلك مقارنة المقبس (في الحالات الممكنة) مع المنفذ. وتحديد عدد الأطفال / الكبش بشكل جيد.

    تحياتي

    1.    KZKG ^ جارا قال

      شكرا لتعليقك 🙂
      نعم بالطبع ، سيكون من الجيد جدًا وضع Nginx في قفص لإبقائه منفصلاً على هذا النحو عن بقية النظام ، لم أفكر في هذا الاحتمال في هذه الدروس ، وسأرى ما يمكنني فعله. حول proxy_cache_path ، لم أستخدمه مطلقًا ، سأقرأ عنه قليلاً لأرى كيف ستسير الأمور.

      فيما يتعلق بعدد الخيوط (min & max) ، في تكوين Nginx يتم تحديده بوضوح ، في منشور Nginx سأتحدث كثيرًا عن ملف .conf 😉

      مرة أخرى ، شكرا لتعليقك.

  5.   MSX قال

    هذا النوع من HowTos هو ما يجعل الويب قويًا حقًا لعلماء الكمبيوتر لأنه يوفر لنا الكثير من ساعات البحث والاختبار حتى نقرر أخيرًا الخيار المناسب ، شكرًا جزيلاً!

    سؤال واحد ، هل هذا يعمل على دبيان؟ ما هو إصدار نظام التشغيل والحزم؟

    تحيات!

    1.    KZKG ^ جارا قال

      غراسياس.
      في الواقع ، المواقع التي تقدم التقارير ، والتي تكرر الأخبار وتكررها ، يوجد بالفعل عدد كبير جدًا ... ما نحتاجه هو المواقع التي تضع دروسًا تعليمية ، وهذا ما يحتاجه الويب!

      نعم ، Debian Wheezy (المستقر الحالي) ، إصدارات الحزم موجودة في المنشور 😉

  6.   إليوتيمي 3000 قال

    تعليق ممتاز. دعنا نرى ما إذا كنت أفعل نوعًا من Errata مع ZPanel X ، وبالمناسبة ، أقوم بالتثبيت يدويًا في Debian Wheezy.

  7.   فيديريكو أنطونيو فالديس توجاج قال

    تفضل KZKG ^ Gaara !!! ، أن أفضل معيار للحقيقة هو الممارسة ، ولديك خبرة حول ما تكتبه. موقع محترف وعملي. دوري البيسبول ، يا صاح.

    1.    إليوتيمي 3000 قال

      هذا صحيح. أيضًا ، عندما بدأت اللعب مع خوادم الويب التي قمت بتثبيتها في Windows ، فإن الحقيقة هي أن Apache ينطلق من حيث استهلاك الموارد إذا كنت تستخدم WordPress (في Drupal ، استهلك نصف الموارد).

  8.   عربه قطار قال

    أعتقد أن هذا البرنامج التعليمي سيكون مفيدًا لجزء Nginx. أريد الآن تثبيت خادم يحتوي على Nginx و php و Varnish و MariaDB. لكن بالطبع ، عليك أن تبدأ ، ويمكن للكسل أن يفعل الكثير عندما يتعلق الأمر بالقتال مع الخوادم ، وفي الوقت الحالي أنا سعيد بالمصباح النموذجي و memcache الذي لدي xDD.

    تحية.

  9.   أوروش قال

    رائع ، واحد فقط من هؤلاء سيكون في متناول اليد 🙂 آخر يتطلع إليه.

  10.   إيفان جابرييل سوسا قال

    نحن نتابعك. نحن نبدأ حاليًا في عالم خوادم الويب. اشترينا اثنين من Hostinger ، وساعدنا أحد الأصدقاء في تكوينه من البداية (PHP ، MySQL ، Apache). إنها المجموعة الوحيدة المستخدمة في Linux ، وهي منصة أستخدمها منذ يناير.
    لكنني كنت مهتمًا جدًا بهذا الموضوع. في صحتك!

  11.   مانويل جوزيه قال

    لم أقم بتثبيت خادم ويب مطلقًا ، ولكن إذا أردت القيام بذلك ، فإن السؤال ، هل المستوى اللازم لفهم البرامج التعليمية وهل يكون التثبيت مرتفعًا أم مع المعرفة الأساسية هل يمكنني تجربته؟ شكرا لك مقدما.

    1.    إليوتيمي 3000 قال

      الحقيقة هي أنه لا يتطلب الكثير من المعرفة لتكون قادرًا على تشغيل خادم قاعدة البيانات. يخبرك الشخص الذي جرب هذه التجربة بالفعل.

  12.   موريشيوس قال

    مرحبًا ، من الجيد جدًا ما ستفعله بهذه السلسلة من المنشورات.

    لقد قمت مؤخرًا بتثبيت Nginx + Php Fastcgi + Mariadb. Nginx.

    كل هذا ، قمت به في Archlinux ، لأن هذا التوزيع هو الوحيد من وجهة نظري ، والذي لا يجلب الكثير من الأشياء الجيدة مثل الآخرين. لقد وضعته في بيئة محبوسة وسبب لي الكثير من الإزعاج لجعله يعمل بشكل مثالي.

    الآن يعمل بشكل مثالي. على الرغم من أنني مهتم بمعرفة آرائك ، حول آراء الأطفال والآباء ، فكلما زادت النصائح التي يقدمونها لي ، كان ذلك أفضل.

    كل هذا فقط للممارسة.
    يحتوي الجهاز على 4 جيجابايت من ذاكرة الوصول العشوائي DDR2 ومعالج 2 جيجا هرتز Core 2.4duo.

    تحياتي وأنا أتطلع إلى المشاركات القادمة من هذه السلسلة.

  13.   الكاس قال

    200 مستخدم متصل في وقت واحد؟
    فقط في أوقات معينة من اليوم ، أليس كذلك؟ وإلا فإنها ستتجاوز 30.000 زيارة يومية.

    1.    KZKG ^ جارا قال

      نعم ، بالطبع ، لا يوجد دائمًا 200 شخص على الإنترنت ، في هذه اللحظة هناك ما يقرب من 40 شخصًا لأن الوقت لا يزال مبكرًا ، في غضون ساعات قليلة سيتجاوزون 100 شخص.

  14.   صائد قال

    من أجل المتعة فقط ، قمت بالتبديل من lighty إلى nginx على محطة العمل الخاصة بي (Symfony2 الآن) ، أخذت conf من هنا [1] ، بسيط جدًا.

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

  15.   أبريل 4xas قال

    بانتظار استمرار هذا 😀

    1.    KZKG ^ جارا قال

      هذا الأسبوع يجب أن أنشره ، شكرًا لقراءتنا 🙂

      1.    الصحة قال

        و؟ الكثير مفقود؟

  16.   عميد قال

    وظيفة جيدة…

  17.   نويل ايفان قال

    مساء الخير.
    نظرًا لمواصفات مشروع مدرسي ، فقد سمحوا لي بتثبيت NGINX في OPENBSD 5.4 في ORACLE MV VIRTUALBOX لأكون قادرًا على استخدام PHP و MYSQL بين الآخرين ، NADAMAS الذي لم أتمكن من العثور على المعلومات الواردة أعلاه ، فيما سبق ذكره أعلاه.