خادم الويب على CentOS 8 مع php7 وnode.js وredis

مقدمة

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

لكن في البداية أريد أن أتحدث بإيجاز عن سبب أهمية التحول إلى هذا الإصدار من جميع الإصدارات السابقة، وهناك سببان لذلك:

  1. PHP7! في الإصدار السابق من CentOS تم تثبيت php5.4 "الأرثوذكسي"...

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

  2. الانتقال من يم إلى dnf. والفرق الرئيسي هو أنه أصبح الآن مدعومًا رسميًا للعمل مع عدة إصدارات من الحزم في وقت واحد. في الثامنة، لم أجد هذا مفيدًا أبدًا، لكنه يبدو واعدًا.

قم بإنشاء آلة افتراضية

هناك برامج Hypervisor مختلفة وليس لدي أي هدف لتكييف القارئ مع برنامج معين، وسأخبرك بالمبادئ العامة.

ذاكرة

أولاً... لتثبيت نظام CentOS ابتداءً من 7 بالتأكيد، وفي رأيي كان هذا هو الحال أيضاً في 6 ("لكن هذا غير مؤكد")، تحتاج الحد الأدنى 2 جيجا رام. لذلك، أنصحك بإعطاء هذا القدر أولاً.

ولكن إذا حدث أي شيء، بعد التثبيت يمكن تقليل حجم الذاكرة. عند 1 غيغابايت، يعمل النظام المجرد بشكل جيد، كما تأكدت.

أسطوانة

للتثبيت العادي، يجب عليك إنشاء قرص افتراضي بسعة 20-30 جيجابايت. وهذا يكفي للنظام. وقرص ثاني للبيانات. يمكن إضافته في مرحلة إنشاء جهاز افتراضي وبعده. عادةً ما أقوم بإضافته لاحقًا.

معالج

في قلب واحد، لا يتباطأ النظام العاري. وبما أن الموارد قابلة للتطوير بحرية، فلا أرى أي فائدة في تقديم المزيد في مرحلة التثبيت (إلا إذا كنت تعرف المتطلبات تمامًا وتكون كسولًا جدًا بحيث لا تتمكن من الدخول إلى أداة التهيئة مرة أخرى)

يمكن عادةً ترك الباقي كإعداد افتراضي.

التثبيت الفعلي

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

التثبيت الأساسي نموذجي تمامًا، وسوف أتناول بضع نقاط فقط.

اختيار المصدر

منذ إصدار النسخة الثامنة، كانت المرآة من ياندكس ملقاة لعدة أيام. حسنًا، أي أنه يرتفع بشكل دوري، ثم يبدأ مرة أخرى في إظهار الخطأ. أنا متأكد من أن السبب هو الحمل الزائد على الخدمة. لذلك، للإشارة إلى المصدر، كان علي شخصيا أن أذهب بدلا من إدخال العنوان المعتاد هنا، حدد المرآة التي تعجبني هناك وأدخل العنوان يدويًا في نافذة المثبت. من المهم أن تتذكر هنا أنك تحتاج إلى تحديد المسار إلى المجلد الذي يوجد به الدليل com.repodata. على سبيل المثال Mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

تقسيم القرص

هذا السؤال ديني إلى حد ما في رأيي. ولكل مسؤول موقفه الخاص في هذا الشأن. لكنني سأظل أشارك وجهة نظري حول هذه القضية.

نعم، من حيث المبدأ، يمكنك تخصيص المساحة بأكملها للجذر وسيعمل، في أغلب الأحيان بشكل جيد للغاية. لماذا إذن سياج الحديقة بأقسام مختلفة؟ — في رأيي، هناك سببان رئيسيان لذلك: الحصص وقابلية النقل.

على سبيل المثال، إذا حدث خطأ ما وحدثت أخطاء في قسم البيانات الرئيسي، فأنت تريد أن تظل قادرًا على تشغيل النظام وتنفيذ إجراءات الإنعاش. لذلك، أقوم شخصيًا بتخصيص قسم منفصل لـ /boot. هناك نواة ومحمل التشغيل. عادة ما تكون 500 ميغابايت كافية، ولكن في حالات نادرة قد تكون هناك حاجة إلى المزيد، وبما أننا اعتدنا بالفعل على قياس المساحة بالتيرابايت، فإنني أخصص 2 غيغابايت لهذا القسم. والشيء المهم هنا هو أنه لا يمكن القيام بذلك lvm.

التالي يأتي جذر النظام. بالنسبة للتثبيت العادي، لم أحتاج مطلقًا إلى أكثر من 4 جيجابايت لكل نظام، ولكن أثناء الأحداث المجدولة غالبًا ما أستخدم الدليل /tmp لتفريغ التوزيعات، ولا أرى أي فائدة في تخصيصه لقسم منفصل - في الأنظمة الحديثة يتم تنظيفه تلقائيًا، لذلك لا يتم ملؤه. لذلك قمت بتخصيص 8 جيجابايت للجذر.

مقايضة... على العموم، هناك القليل من الاستخدام العملي منه. إذا بدأت في استخدام المبادلة على الخادم الخاص بك، فهذا يعني اليوم في العالم الحقيقي فقط أن الخادم يحتاج إلى إضافة المزيد من ذاكرة الوصول العشوائي. خلاف ذلك، يتم ضمان مشاكل الأداء (أو بعض البرامج "تسرب" الذاكرة). لذلك، هذا القسم مطلوب لأغراض التشخيص فقط. ولذلك فإن 2 جيجا بايت هو رقم ممتاز. نعم، بغض النظر عن حجم الذاكرة الموجودة على الخادم. نعم، قرأت كل تلك المقالات التي كتبت فيها عن نسبة حجم الذاكرة إلى حجم المبادلة... IMHO، لقد عفا عليها الزمن. خلال 10 سنوات من الممارسة، لم أحتاج إلى هذا مطلقًا. منذ 15 عامًا، استخدمتها، نعم.

IMHO، يمكن للجميع أن يقرروا بأنفسهم ما إذا كانوا يريدون تخصيص /home في قسم منفصل. إذا كان شخص ما على الخادم سيستخدم هذا الدليل بشكل نشط، فمن الأفضل تخصيصه. إذا لم يكن هناك أحد، ليست هناك حاجة.

التالي، /فار. في رأيي، ينبغي بالتأكيد تسليط الضوء عليه. للبدء، يمكنك أن تقتصر على 4 غيغابايت، وترى كيف ستسير الأمور. ونعم، بقول "كيف ستسير الأمور" أعني ذلك

  1. أولاً، يمكنك دائمًا تحميل قرص آخر في الدليل الفرعي /var (والذي سأعرضه لاحقًا مع مثال)
  2. ثانيًا، لدينا lvm - يمكنك إضافته دائمًا. وعادةً ما يتعين عليك إضافته عندما يبدأ تدفق عدد كبير جدًا من جذوع الأشجار هناك. لكنني لم أتمكن أبدًا من التنبؤ بهذا الرقم مسبقًا، لذلك أبدأ بـ 2 جيجا بايت ثم أشاهد.

ستظل المساحة غير المخصصة خالية في مجموعة المجلدات ويمكن استخدامها دائمًا لاحقًا.

LVM

جميع من المنطقي إنشاء أقسام أخرى غير /boot في LVM. نعم، بما في ذلك المبادلة. نعم، وفقًا لجميع النصائح، يجب أن يكون المبادلة في بداية القرص، ولكن في حالة LVM لا يمكن تحديد موقعه من حيث المبدأ. ولكن كما كتبت أعلاه، النظام الخاص بك لا ينبغي استخدم المبادلة على الإطلاق. ولذلك، لا يهم أين هو. حسنًا، نحن لا نعيش في عام 95، بصراحة!

علاوة على ذلك، يوجد في LVM العديد من الكيانات الأساسية التي تحتاج إلى أن تكون قادرًا على التعايش معها:

  • الحجم المادي
  • مجموعة الحجم
  • الحجم المنطقي

يتم دمج الأحجام المادية في مجموعات، ويمكن أن يكون كل حجم مادي في مجموعة واحدة فقط، ويمكن تحديد موقع المجموعة على عدة وحدات تخزين مادية في وقت واحد.
والمجلدات المنطقية كلها في مجموعة واحدة.

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

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

لنبدأ التثبيت.

ما بعد التثبيت

لذلك، تم تمهيد النظام المثبت حديثًا أخيرًا. أول شيء تحتاج إلى التحقق منه هو الإنترنت.

ping ya.ru

هل هناك إجابة؟ - عظيم، اضغط على Ctrl-C.
إذا لم يكن الأمر كذلك، فاذهب وقم بإنشاء شبكة، فلا حياة بدون ذلك، لكن هذا ليس ما تدور حوله مقالتي.

الآن، إذا لم نكن تحت الجذر بعد، فانتقل إلى الجذر، لأن الكتابة هو عدد الأوامر مع Sudo حطمني شخصيًا (وأرجو أن يسامحني المسؤولون المصابون بجنون العظمة):

sudo -i

الآن أول شيء نفعله هو الكتابة

dnf -y update

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

الآن دعونا نقوم بتكوين القرص المتبقي

لنفترض أن قسم النظام كان xvda، فسيكون قرص البيانات xvdb. نعم.

ستبدأ معظم النصائح بـ "تشغيل fdisk وإنشاء قسم..."

اذن هذا هو غير صحيح!

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

والأمر المريح هو أنه إذا كنت تريد توسيع قسم البيانات، فما عليك سوى إضافة مسافات إلى القسم الظاهري، ثم توسيع المجموعة باستخدام vgextend وهذا كل شيء! في حالات نادرة، قد تكون هناك حاجة إلى شيء آخر، ولكن على الأقل لن تضطر إلى توسيع الحجم المنطقي في البداية، وهو أمر جيد بالفعل. بخلاف ذلك، لتوسيع هذا المجلد بالذات، يوصون أولاً بحذف المجلد الحالي، ثم إنشاء مجلد جديد في الأعلى... الأمر الذي لا يبدو جميلًا جدًا ولا يمكن إجراؤه مباشرة، ولكن يمكن التوسع وفقًا للسيناريو الذي أشرت إليه. تم تنفيذها "أثناء التنقل" دون حتى إلغاء تثبيت القسم.

لذلك، نقوم بإنشاء وحدة تخزين فعلية، ثم مجموعة وحدات تخزين تتضمنها، ثم قسمًا لخادمنا:

pvcreate /dev/xvdb
vgcreate data /dev/xvdb
lvcreate -n www -L40G data
mke2fs -t ext4 /dev/mapper/data-www

هنا، بدلاً من الحرف الكبير "L" (والحجم بالجيجابايت)، يمكنك تحديد حجم صغير، ثم بدلاً من الحجم المطلق، حدد حجمًا نسبيًا، على سبيل المثال، لاستخدام نصف المساحة الحرة حاليًا في مجموعة تخزين، تحتاج إلى تحديد "-l +50%FREE"

ويقوم الأمر الأخير بتنسيق القسم في نظام الملفات ext4 (والذي يُظهر حتى الآن، من خلال تجربتي، أكبر قدر من الاستقرار في حالة تعطل كل شيء، لذلك أفضله).

الآن نقوم بتركيب القسم في المكان المناسب. للقيام بذلك، أضف السطر الصحيح إلى /etc/fstab:

/dev/mapper/data-www    /var/www                ext4    defaults        1 2

ونحن نتصل

mount /var/www

إذا حدث خطأ، دق ناقوس الخطر! لأن هذا يعني أن لدينا خطأ في /etc/fstab. وأنه في عملية إعادة التشغيل التالية سنواجه مشكلات كبيرة جدًا. قد لا يتم تشغيل النظام على الإطلاق، وهو أمر محزن للغاية بالنسبة للخدمات السحابية. لذلك، من الضروري إما تصحيح السطر الأخير الذي تمت إضافته بشكل عاجل، أو حذفه تمامًا! هذا هو السبب في أننا لم نكتب أمر التثبيت يدويًا - فلن تتاح لنا مثل هذه الفرصة الممتازة للتحقق من التكوين على الفور.

الآن نقوم بالفعل بتثبيت كل ما أردناه وفتح المنافذ للويب:

dnf groupinstall "Development Tools"
dnf -y install httpd @nodejs @redis php
firewall-cmd --add-service http --permanent
firewall-cmd --add-service https --permanent

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

الآن نضيف المعلمة إلى ملف التكوين (نقوم بإنشاء معلمة جديدة، الأيديولوجية الحديثة لـ CentOS هي هكذا)

echo "vm.overcommit_memory = 1"> /etc/sysctl.d/98-sysctl.conf

أعد تشغيل الخادم.
في التعليقات، تم توبيخي لأنني نصحتني بإيقاف تشغيل SeLinux، لذلك سأصحح نفسي وأكتب أنه بعد ذلك عليك أن تتذكر تكوين SeLinux.
في الواقع، الربح! 🙂

المصدر: www.habr.com

إضافة تعليق