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

قبل حين لقد أخبرتك عن هذه السلسلة من الدروس، حول كيفية تثبيت خادم وتكوينه للاستضافة عالية الطلب. ستتناول هذه المقالة تثبيت Nginx وتكوينه:

إنجن إكس:

لقد أخبرناك بالفعل عن 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).

يتناول هذا البرنامج التعليمي Nginx فقط وحصريًا ، وليس حول Nginx + PHP ، سيتم تناول اتحاد Nginx + PHP بالإضافة إلى تحسينه أو التكوين الضروري في البرنامج التعليمي التالي

1. التثبيت:

سنبدأ بأول شيء تثبيت Nginx من مستودعاتنا.

يتم تنفيذ جميع الأوامر التي سيتم تنفيذها باستخدام أذونات الجذر ، إما عن طريق وضع sudo في بداية كل سطر أو بتسجيل الدخول باسم الجذر

إذا كنت تستخدم توزيعة على الخادم الخاص بك مثل Debian أو Ubuntu أو بعض المشتقات في الجهاز ، فيجب عليك وضع ما يلي والضغط على أدخل :

aptitude install nginx

لم يتم تثبيت aptitude افتراضيًا في Ubuntu ، ومع ذلك أوصي بتثبيته واستخدامه بدلاً من apt-get ، لأن aptitude يقوم بإدارة التبعيات بشكل أفضل في مناسبات معينة

إذا كنت تستخدم توزيعة أخرى على خادمك مثل CentOS و Red Hat و Fedora ، فما عليك سوى تثبيت الحزمة: nginx من المستودع الرسمي

أنا شخصياً لا أوصي بأي مشتق من دبيان ، ولا حتى Ubuntu للخوادم ، على مر السنين لم تكن تجربتي مرضية تمامًا. خياري الأول لنظام تشغيل الخادم هو Debian ، ثم أفكر في CentOS ، وأخيراً بعض BSD

2. التكوين:

لقد قمنا بالفعل بتثبيت Nginx، ولكن من الواضح أننا بحاجة إلى تهيئته. لقد قمت بإعداد ملف مضغوط على FTP يحتوي على جميع التكوينات المستخدمة على الخوادم. DesdeLinux، لكل من PHP وNginx وما إلى ذلك. لنقم بتنزيل هذا الملف وفك ضغطه:

cd ~ && wget http://ftp.desdelinux.net/nginx-spawn-fastcgi.tar.gz && tar xf nginx-spawn-fastcgi.tar.gz

سيؤدي هذا إلى إنشاء مجلد يسمى nginx-spawn-fastcgi ، سنحتاج منه إلى ملفين لـ Nginx الخالص (أي بدون ربطه بـ PHP):

  • nginx.conf - »ملف تكوين Nginx الرئيسي (سنتحدث عن محتواه لاحقًا)
  • index.html - »ملف html بسيط سنستخدمه لمعرفة ما إذا كان Nginx مناسبًا لنا حقًا في أبسط أشكاله
  • mywebsite.net - »ملف التكوين لموقع ويب بسيط ، مضيف V (مضيف افتراضي) يقوم بتهيئة الوصول إلى html السابق

دعنا ننتقل أولاً إلى مجلد إعدادات Nginx:

cd /etc/nginx/

ثم دعونا نزيل التكوين الافتراضي ونضع التكوين الخاص بنا:

mv nginx.conf nginx.conf_BK && cp ~/nginx-spawn-fastcgi/nginx.conf ./

هذا ، كما قلت ، هو ملف ضبط Nginx الرئيسي ، وقد عرّفت فيه بالفعل ما يلي:

مستخدم www-data؛ worker_processes 4؛ pid /var/run/nginx.pid؛

وصول المستخدم إلى نظام الملفات (الذي يمكن لـ nginx الوصول إليه في كل مكان) ، وعدد العمليات التي يجب العمل بها وأيضًا معرّف PID (معرّف عملية nginx).

لدينا أيضًا كتلة صغيرة تسمى الأحداث (إعدادات الأحداث) تحتوي على سطر يشير إلى الحد الأقصى لعدد الاتصالات المسموح بها لكل حدث. يوجد أدناه كتلة تسمى http.

كتلة http هذه هي التي تحتوي تقريبًا على كل ما يتعلق بالاستضافة ، على الأقل العديد من الأشياء التي قد تهمك. على سبيل المثال ، الحد الأقصى لوقت البقاء أو الانتظار (المهلة) ، حيث ستكون سجلاتنا العامة (access.log و error.log) ، وضغط البيانات باستخدام gzip ، بالإضافة إلى القواعد الأخرى التي قد تكون مفيدة في المستقبل.

بمجرد أن يصبح ملف التكوين الرئيسي في مكانه ، فلننسخ الملف من مضيف V الخاص بنا إلى مجلد المواقع المتاح

cp ~/nginx-spawn-fastcgi/mywebsite.net sites-available/

بالإضافة إلى ذلك ، يجب علينا إنشاء ارتباط رمزي من هذا الملف إلى مجلد المواقع الممكنة.

ln -s /etc/nginx/sites-available/mywebsite.net /etc/nginx/sites-enabled/

أشرح فائدة وجود مواقع ممكنة ومتاحة.

سيجدون لحظات عندما يجب أن يكون لديهم العديد من ملفات vhost جاهزة ومهيأة ، لأنهم في هذا الخادم سيضعون على الإنترنت ، على سبيل المثال 5 مواقع. ومع ذلك ، يحدث أنه لم يحن الوقت بعد لتمكين 2 من هؤلاء المضيفين الخمسة ، ولكن يجب أن يكون لديهم الملفات جاهزة بحيث تكون متصلة بالإنترنت عند الضرورة في أقصر وقت ممكن. يمكنك وضع أكبر عدد تريده من المضيفات الافتراضية في المواقع المتاحة (المواقع المتاحة) ، لأن تلك التي يقرأها Nginx لوضعها على الإنترنت هي فقط تلك الخاصة بالمواقع التي تم تمكينها (المواقع التي تم تمكينها) ، وستعمل أيضًا في الاتجاه المعاكس ، في حالة رغبتك في وضع عدم الاتصال ( مؤقتًا على سبيل المثال) موقع ، ليست هناك حاجة لحذف الملفات من الخادم الخاص بك (الملفات التي سنحتاجها في وقت آخر) ، فنحن ببساطة نزيل الرابط الرمزي للمواقع الممكنة وهذا كل شيء. فائدة وجود روابط رمزية وليس مجرد نسخ الملف من مجلد إلى آخر ، هي أنه عندما نريد تعديل مضيف ، لا يهم إذا قمنا بتحرير الملف الموجود في ممكّن أو متاح ، في النهاية هو نفسه
أرشيف.

ملف mywebsite.net كما قلت من قبل ، مضيف vhost يعمل كمثال ، أي وبعبارة أخرى ، يجب علينا تعديل mywebsite.net وإنشاء التكوينات الخاصة بنا.

يجب تغيير ما يلي:

  • access_log (السطر 3): سيكون هذا هو مسار ملف سجل الوصول إلى هذا الموقع
  • error_log (السطر 4): سيكون هذا هو مسار ملف سجل الأخطاء لهذا الموقع
  • اسم_الخادم (السطر 5): عنوان URL، المجال الذي تتم استضافته في هذا المجلد، على سبيل المثال، إذا كان المنتدى DesdeLinux سيكون: اسم خادم المنتدى.desdelinuxصافي
  • الجذر (السطر 6): المسار إلى المجلد حيث توجد ملفات html ، فلنترك هذا في / var / www / لأنه سيكون اختبارًا فقط
من الواضح أنهم يجب أن يشيروا في سجلات DNS الخاصة بهم لمزود الاستضافة (باستخدام CPanel أو أداة أخرى) إلى أن المجال أو المجال الفرعي المعلن في server_name يقع على عنوان IP لهذا الخادم الذي يقومون بتكوينه. أي أنه في DNS حيث ينشئون نطاقات فرعية لمجالاتهم ، يجب أن يعلنوا أن المجال أو المجال الفرعي الذي وضعوه في السطر 5 موجود على هذا الخادم (هذا الخادم = عنوان IP للخادم المعني)

الآن نحتاج فقط إلى نسخ ملف html إلى المجلد الذي نحدده في ملف VHost ، / var / www /:

mkdir /var/www/ && cp ~/nginx-spawn-fastcgi/index.html /var/www/

ثم نعيد تشغيل Nginx وهذا كل شيء:

service nginx restart

وفويلا ، سيظهر شيء مثل هذا:

nginx-pure-test-site-html

أذكرك أننا نعمل أولاً مع Nginx لـ HTML ، دون الحاجة إلى دعم PHP ، سيكون تثبيت PHP هذا وربطه بـ Nginx هو محتوى البرنامج التعليمي التالي (في غضون أيام قليلة ، أعدك).

على أي حال ، هذا هو البرنامج التعليمي الخاص بتثبيت وتهيئة Nginx بحيث يعمل بشكل خالص ، أي موقع HTML ، آمل أن يكون موضع اهتمامك.

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

تحياتي


اترك تعليقك

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

*

*

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

  1.   نيلسون قال

    شكرا ، مفيد جدا!

    1.    KZKG ^ جارا قال

      شكرا لك على التعليق

  2.   صائد قال

    في backports يوجد nginx 1.4 ..

    1.    KZKG ^ جارا قال

      نعم ، لكن في خادم إنتاج لا أستخدم أيًا من ذلك 😀

      1.    صائد قال

        تقصد بـ "it" أحدث إصدار مستقر ومُختبَر تم إصداره بواسطة nginx ، فأنت تجعله يبدو وكأنه مثبت من sid. ~ _ ~

        1.    KZKG ^ جارا قال

          آه ، هل هذا ... على الخوادم التي لم أحبها أبدًا استخدام repos أو backports أو أي شيء من هذا القبيل 🙂

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

        دائمًا مستقر على الخوادم ، تعلمت ذلك منذ سنوات.

        1.    صائد قال

          Nginx 1.4 مستقر منذ أبريل الماضي ، في backports هو 1.4.1-3.

          2013-04-24

          تم إصدار الإصدار المستقر nginx-1.4.0 ، والذي يشتمل على العديد من الميزات الجديدة المطورة في الفرع 1.3.x - دعم وكلاء اتصالات WebSocket وتدبيس OCSP ووحدة SPDY ومرشح Gunzip والمزيد.

          http://nginx.org/en/CHANGES-1.4

          1.    رافائيل كاسترو قال

            أنت محق فيما تقوله ، قبعتي مرفوعة.

  3.   تشينولوكو قال

    شكرًا على المشاركة ، أنا حاليًا أضع أقدم مشاركة لك قيد الممارسة.
    سأقوم بتعبئة الأسئلة XD

    1.    KZKG ^ جارا قال

      شكرا على القراءة 🙂
      إذا كان لديك أي أسئلة أو استفسارات، كما تعلمون، نحن هنا للمساعدة، وهناك المنتدى.desdelinux.net حيث سنحاول معًا أن نقدم لك أفضل الحلول

      تحياتي

      1.    جبران باريرا قال

        لدي سؤال عندي LAMP [Linux (Debian Wheezy) و Apache و PHP و MySQL] يعمل على خادمي لـ WordPress و Owncloud ، كيف أقوم بالانتقال إلى Ngnix ، وسؤال آخر هو ما الفرق بين Ngnix و Lighttpd.

        1.    KZKG ^ جارا قال

          أكبر تعقيد أو صعوبة في الترحيل من Apache إلى Nginx هي تكوينات كل موقع ، أي بالتحديد .htaccess الذي تستخدمه.

          يعد .htaccess هو الأكثر تعقيدًا عند التبديل إلى Nginx ، نظرًا لأنها تكوينات مختلفة يجب عليك وضعها في Nginx VHost.

          حول LightHTTPd و Nginx ... لا أعرف ، لقد استخدمت LightHTTPd مرة واحدة فقط منذ عدة سنوات ، وليس لدي حاليًا أي فكرة عن كيفية تطورها ، خاصة باستخدام PHP.

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

    يبدو NGINX واضحًا جدًا مقارنة بأباتشي. في انتظار الحلقة القادمة لتتمكن من استكمالها بـ PHP

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

    أنا في انتظار النصائح لتحسين المزيد من nginx 😀

    بالمناسبة Gaara ، يمكنك تضمين في البرنامج التعليمي التالي كيفية تنفيذ دعم SSL.

    تحية.

    1.    KZKG ^ جارا قال

      النصائح التي تأتي هي في الواقع لتحسين معالجة PHP، والتخزين المؤقت للموقع، ويمكنني أن أعطي مثالاً على التكوين الذي نستخدمه DesdeLinux لـ Nginx+Wordpress+W3_Total_Cache :)

  6.   كايزر قال

    شكرا لك مساهمة جيدة.

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

    ودليل ارشلينوكس متى؟ وجه ضاحك

    1.    KZKG ^ جارا قال

      لقد كان الأمر مشابهًا جدًا في Arch ، حيث تتغير أسماء الحزم فقط ولكن ...

      لكن من لديه خادم إنتاج مع Arch؟ 😀

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

    مرحبا هناك،

    إنه لي مرة أخرى xD ...

    كنت أتبع خطواتك لتطبيقها على جهاز مع archlinux ولدي المشكلة التالية:

    [abr4xas@Genius www]$ systemctl status nginx.service
    nginx.service - A high performance web server and a reverse proxy server
    Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
    Active: failed (Result: exit-code) since vie 2013-11-15 20:11:35 VET; 1min 13s ago
    Process: 1258 ExecStartPre=/usr/bin/nginx -t -q -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=1/FAILURE)

    أي اقتراحات 😀

  9.   ريز قال

    Jo ... xox ، أريد فقط خادمًا داخليًا ، أي أريد فقط استبدال xampp ، هل يجب أن أفعل كل هذا؟

    1.    KZKG ^ جارا قال

      إذا كنت تريد يمكنك تنفيذ هذا (والذي أكرره ، فهو ما يعمل معه DL) ، في الواقع خادمي الافتراضي (الذي أستخدمه للتطوير والاختبار) لقد قمت بذلك بنفس الشيء الذي أشرح له.

      أي أنه يمكنك إما إزالة XAMPP ووضع هذا المتغير وسيعمل بشكل جيد ، أو إذا كنت تريد مغادرة XAMPP ... فسيظل يعمل من أجلك.

      النقطة الإيجابية في استخدام هذا التي أعرضها هي الاستهلاك المنخفض جدًا للأجهزة مقارنةً بـ Apache ، ولكن ، على جهاز الكمبيوتر الشخصي الخاص بك ، وهو ليس طلبًا كبيرًا على الاستضافة بأي وسيلة ... إذا كان XAMPP يعمل جيدًا بالنسبة لك ، فأنا لا ر ترى لماذا إزالته

  10.   إسحاق قال

    لدي بالفعل خادم Linux يعمل (Debian و Nginx و MySQL و PHP) لقد واجهت صعوبة في جعل PHP تعمل مع Nginx لأنني كنت معتادًا على خادم ويب Apache بسيط.

    حسنًا ، سؤالي هو: هل يعرف أي شخص كيف يمكنني توجيه مجال اختبار اشتريته إلى الخادم الخاص بي؟ أرغب في تجربة نطاق .com الخاص بي لمعرفة كيفية عمله ، لكن ليس لدي أدنى فكرة عن كيفية القيام بذلك ، لأنني كنت دائمًا أستخدم عنوان NOIP للوصول إليه باستخدام noip DUC.

    أتمنى أن يساعدني أحد ، شكرًا!

  11.   إبراهيم قال

    أفهم هذا عند محاولة الاتصال ببروتوكول نقل الملفات الخاص بك:

    cd ~ && wget http://ftp.desdelinux.net/nginx-spawn-fastcgi.tar.gz && tar xf nginx-spawn-fastcgi.tar.gz

    تم إرسال طلب HTTP ، في انتظار الاستجابة ... 404 غير موجود
    2015-11-23 17:46:30 خطأ 404: غير موجود.

  12.   ريان قال

    لدي خادم يعمل على CentOS (Gunicorn ، Nginx ، PHP) لقد كلفني الكثير من العمل لجعلها تعمل ولكن النقطة التي علقت فيها هي أن صفحة الويب التي أريد إطلاقها تحتاج إلى تكوين مزود المجال في هذا الحالة Go Daddy ، لذلك في هذه المرحلة لا أعرف كيف أستمر.

  13.   ريكاردو قال

    هل يمكنك مشاركة ملفات التكوين معي حيث لا يمكنني تنزيلها من فضلك