CentOS 8 üzərində php7, node.js və redis ilə veb server

Ön söz

Artıq 2 gündür ki, CentOS-un yeni versiyası, yəni CentOS 8, çıxdı. İndiyədək İnternetdə bununla bağlı yetərincə az məqalə var, ona görə də bu boşluğu doldurmağa qərar verdim. Mən yalnız bu iki proqramın necə quraşdırılacağını deyil, həm də müasir dünyada tipik işlər üçün Linux-un virtual mühitdə necə quraşdırıldığını görməmi istəyirəm, disk bölməsi və s. daxil olmaqla.

Amma əvvəlcə niyə bu versiyaya keçməli olduğumuzu qısaca izah etmək istəyirəm, bunun üçün iki səbəb var:

  1. php7! Əvvəlki CentOS versiyasına «ortodoks» php5.4 quraşdırılırdı...

    Yaxşı, ciddi yanaşsaq, çoxsaylı paket bir neçə versiyanı atladı. Biz (redhat-oxşar əməliyyat sistemlərinin pərəstişkarları) nəhayət ki, gələcəyə yox, ən azından indiyə qədəm qoyduq. Ubuntu tərəfdarları artıq bizimlə gülməyəcəklər və bizə barmaqları ilə işarə etməyəcəklər, yəni… ən azı bir müddət ;).

  2. yum-dan dnf-ə keçid. Əsas fərq odur ki, indi bir neçə versiyada paketlərlə işləmə rəsmi olaraq dəstəklənir. Mənim üçün bu hələ CentOS 8-də lazım olmayıb, amma çox ümidverici səslənir.

Virtual maşının yaradılması

Hipervisorlar müxtəlifdir və mənim məqsədim oxucunu spesifik birinə uyğunlaşdırmaq deyil, ümumi prinsipləri izah edəcəyəm.

Yaddaş

İlk… CentOS-un quraşdırılması üçün 7-dən başlayaraq, dəqiq olmasa da 6-da da belə olub (amma bu dəqiq deyil), lazım olan minimum 2 GB əməliyyat yaddaşıdır. Buna görə də əvvəlcə belə verməyi tövsiyə edirəm. Amma əgər bir şey olsa, quraşdırmadan sonra yaddaş həcmini azalda bilərsiniz. 1 GB göy sistemi tamamilə normal işləyir, bunu yoxlamışam.

Normal quraşdırma üçün 20-30 GB həcmində virtual disk yaradılmalıdır. Bu həcmin sistem üçün kifayət edəcək. Və məlumatlar üçün ikinci disk. Onu, həm virtual maşını yaradarkən, həm də sonra əlavə edə bilərsiniz. Adətən, bunu sonra əlavə edirəm.

Disk

Bir prosessor nüvəsi ilə göy sistem yavaşlamır. Və resurslar asanlıqla genişləndirilə bildiyindən, quraşdırma zamanı daha çox verməyə mənasız görsənir (bir şərtlə ki, tələbləri mükəmməl bilirsinizsə və konfiguratoru yenidən açmağı istəmirsiniz).

Prosessor

Qalanlar adətən standart olaraq buraxıla bilər.

Əslində, quraşdırma

Beləliklə… Quraşdırıcıyı başladırıq… Şəxsən mən artıq belə xidmətləri yalnız virtual maşınlar şəklində quraşdırıram, buna görə də distiributivin yazılmasından söz açmayacağam — sadəcə ISO-nu sevdiyim hipervisorda CD disk kimi montajlayıram, yükləyirəm və işə başlayırıq.

Əsas quraşdırma olduqca tipik keçir, yalnız bir neçə məqama toxunacağam.

Mənbənin seçimi

Выбор источника

Yeddinci versiyanın çıxmasından etibarən Yandex'in aynası artıq bir neçə gündür fəaliyyət göstərmir. Yəni, arada bir açılır, sonra yenə səhv göstərməyə başlayır. Bunun səbəbinin xidmətə olan həddən artıq yük olduğunu düşünürəm. Buna görə də, mənbəyi göstərmək üçün adət etdiyim ünvandan istifadə etmək əvəzinə, buraya, bəyənəcəyim aynanı seçmək və qurma pəncərəsində ünvana əl ilə daxil olmaq məcburiyyətində qaldım. Burada yaddan çıxarmamaq vacibdir ki, göstərməli olduğum yol, repodataenvironment: dev mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Diskin bölünməsi

Məncə, bu sual daha çox dini bir məsələdir. Hər bir adminin bu mövzuda öz mövqeyi var. Amma mən hələ də bu məsələ ilə bağlı öz fikrimi paylaşacağam.

Bəli, əslində bütün yeri kök üçün ayırmaq mümkündür və bu, əksər hallarda olduqca yaxşı işləyir. O zaman fərqli bölmələrlə baş ağrıtmağa nə ehtiyac var? - Əsas səbəblər, mənim fikrimcə, 2-dir: kvotalar və daşınabilirlik.

Məsələn, əgər bir şey düz getməzsə və məlumatların əsas bölməsində səhvlər yaranarsa, sistemin yüklənməsini istəyirsiniz və reanimasiya tədbirləri görmək mümkündür. Buna görə də, mən şəxsən /boot üçün ayrı bir bölmə ayırıram. Orada nüvəsi və yükləyicisi yerləşir. Adətən 500 MB kifayətdir, amma nadir hallarda daha çox tələb oluna bilər, və nəzərə alsaq ki, artıq yeri terabaytlarla ölçməyə öyrəşmişik, mən bu bölməyə 2GB ayırıram. Burada vacib olan onun lvm ilə birləşdirilməməsidir.

Sonra sistemin kökü gəlir. Normal quraşdırma üçün mənim sistem üçün 4GB-dan daha çox ayrılması gərək olmamışdır, lakin planlı tədbirlər zamanı mən tez-tez /tmp kataloqunu paylama üçün istifadə edirəm və onu ayrı bir bölmə kimi ayırmağı anlamıram - müasir sistemlərdə bu avtomatik təmizlənir, buna görə də doldurulmur. Ona görə də, kök üçün 8GB ayırıram.

Swap… Əslində bunun praktiki faydası yoxdur. Əgər serverinizdə swap istifadə olunmağa başlayıbsa, bu, bu gün real dünyada yalnız serverinizə daha çox operativ yaddaş əlavə etmək lazım olduğunu göstərir. Əks halda performans problemləri təmin olunur (ya da bir proqramın 'yaddaşı sızır'). Buna görə də bu bölmə yalnız diaqnostika üçün lazımdır. Beləliklə, 2 GB mükəmməl bir rəqəmdir. Bəli, serverdə nə qədər yaddaş olursa olsun. Bəli, mən swapın həcmi ilə operativ yaddaşın həcmi arasındakı münasibət barədə bütün o məqalələri oxudum... İMХО, onlar köhnəlib. 10 illik praktika müddətində mənə bir dəfə də olsun lazım olmayıb. 15 il əvvəl bunları tətbiq edirdim, bəli.

/home -ı ayrı bir bölməyə ayırmaq İMХO, hər kəsin öz qərarını verməsinin üzərindədir. Əgər kimsə bu kataloqu serverdə aktiv şəkildə istifadə edəcəksə, daha yaxşıdır ki, ayrı bir bölmə ayrılır. Əgər heç kimsə istifadə etmirsə - heç bir gərək yoxdur.

Daha sonra, /var. Bu benim görüşüme göre mutlaka vurgulanmalı. Öncelikle 4 GB ile sınırlı kalmak uygun olur, geri kalanı zamanla belli olur. Evet, "zamanla belli olur" demekle,

  1. İlk olarak, her zaman başka bir diski /var alt dizinine monte edebilirsiniz (bunu bir örnekte daha sonra göstereceğim).
  2. İkinci olarak, LVM'ye sahibiz — her zaman ekleyebilirsiniz. Genellikle eklemek zorunda olduğumuz zaman, çok fazla günlük buraya dökülmeye başladığında. Ancak bu sayıyı önceden tahmin etmek bana asla nasip olmadı, bu yüzden önce 2 GB ile başlıyorum ve sonra duruma bakıyorum.

Dağıtılmamış alan grupta serbest kalır, bu alan daha sonra her zaman kullanılabilir.

LVM

Hamısı /boot dışında tüm bölümleri LVM içinde yapmak mantıklıdır. Evet, swap da dâhil. Evet, tüm tavsiyelere göre swap diskin başında olmalı, fakat LVM ile bunun yeri temelde belirlenemez. Ancak yukarıda belirttiğim gibi, sisteminiz swap kullanmamalıdır. Bu nedenle, onun nerede bulunmasının hiçbir önemi yoktur. Gerçekten 95 yılında yaşamıyoruz, bu çok açık!

Sonrasında, LVM'deki birkaç temel varlıkla yaşamayı öğrenmelisiniz:

  • fiziksel alan
  • alan grubu
  • mantıksal alan

Fiziksel alanlar gruplar halinde bir araya getirilir, bu arada her fiziksel alan yalnızca bir grupta bulunabilir ve grup birden fazla fiziksel alanda yer alabilir.
Mantıksal alanlar ise her biri bir grupta bulunur.

Ama... Ayrıca 21. yüzyıldayız. Ve sanal sunucular var. Fiziksel sunuculara uygulanan aynı mekanizmaları bunlara uygulamak mantıklı değil. Sanal için verilerin sistemi ayrı tutmak önemlidir! Bu, özellikle verilerin başka bir sanal makineye (örneğin yeni bir işletim sistemine geçişte) hızlı bir şekilde aktarılabilmesi ve genel olarak yararlı avantajlar (örneğin sanal çoklayıcılar aracılığıyla bölümlere ayırarak ayrı yedekleme) için çok önemlidir. Bu nedenle bir alan grubu sistem için kullanılır ve mutlaka diğerinin veriler için kullanılması gerekir! Bu mantıksal ayrım hayatı oldukça kolaylaştırır!

Eğer sanal makine oluştururken yalnızca bir sanal sabit disk oluşturduysanız, buradan yapılandırma tamamlanır. İki diskiniz varsa, ikinciyi henüz biçimlendirmeyin.

Kurulumu başlatıyoruz.

Kurulum sonrası

Sonunda yeni kurulu sistemi başlattık. İlk olarak kontrol etmemiz gereken şey — internet.

ping ya.ru

Cevap var mı? — Harika, Ctrl-C'ye basıyoruz.
Yoksa — ağı ayarlamaya gidin, bu olmadan hayat yok, ama makalem bununla ilgili değil.

Artık eğer hala root altında değilsek, root altında giriş yapıyoruz, çünkü bu kadar komutu sudo ile yazmak bana zor geliyor (ve evet, paranoyak yöneticiler beni affetsin):

sudo -i

Şimdi ilk iş olarak yazıyoruz

dnf -y update

Ve eğer bu makaleyi 2019 yılında okuyorsanız, muhtemelen hiçbir şey olmayacak, ama denemeye değer.

Şimdi kalan diski yapılandırıyoruz.

Təsəvvür edin ki, sistem bölməsi xvda idisə, o zaman məlumat diski xvdb olacaq. Tamam.

Ən çox məsləhətlər "fdisk işə salın və bölmə yaradın..." sözləri ilə başlayacaq.

Beləliklə, bu doğru deyil!

Bir daha vurğulayıram, çünki bu, vacibdir! Bu halda LVM ilə işləmək üçün, tək bir virtual diskdə bölmələr yaratmaq zərərlidir! Bu ifadədə hər bir söz önəmlidir. Əgər LVM olmadan işləyiriksə — lazımdır. Diskin üzərində sistem və məlumatlar varsa — lazımdır. Nədənsə diskin yarısını boş qoymaq gərəkdirsə — bu da lazımdır. Lakin adətən bu şərtlər yalnız nəzəriyyədir. Çünki əgər mövcud bölməyə əlavə yer əlavə etmək qərarına gəlsək, bunu bu konfiqurasiyada etmək daha asan olacaq. İdarəetmə rahatlığı bir çox şeyi üstələyir ki, bu da bizi bu konfiqurasiyaya yönləndirir.

Rahatlıq isə bundadır ki, əgər siz məlumat bölməsini genişləndirmək istəsəniz, sadəcə virtual bölməyə yer əlavə edirsiniz, ardından vgextend ilə qrup genişləndirirsiniz və bam! Nadir hallarda başqa bir şeyə ehtiyac ola bilər, lakin ən azından artıq olan məntiqi xətti genişləndirmək lazım olmayacaq, bu da xoşdur. Çünki bu xətti genişləndirmək üçün ilk əvvəl mövcudunu silməyə və sonra yenisini yaratmağa tövsiyə edirlər... Bu isə o qədər də xoş görünmür və canlı olaraq həyata keçirilməz, lakin mənim təqdimatımda genişləndirmə prosesi "canlı" olaraq sürətli şəkildə, bölməni yenidən yerləşdirmədən həyata keçirilə bilər.

Beləliklə, fiziki bölmə yaradırıq, sonra onun daxil olduğu qrup yaradırıq və sonunda serverimiz üçün bölmə yaradırıq:

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

Burada böyük "L" (və GB ölçüsü) əvəzinə kiçik birini qeyd edərək, mütləq ölçü əvəzinə nisbət ölçü göstərməyiniz mümkündür; məsələn, hazırda qrupda mövcud olan yerin yarısını istifadə etmək üçün "-l +50%FREE" yazmalısınız.

Və sonuncu komanda bölməni ext4 fayl sistemində formatlayır (bu, praktikamda sındıqları halda ən yüksək sabitliyi göstərir, buna görə də onu üstünlük verirəm).

İndi bölməni lazım olan yerə montaj edirik. Bunun üçün /etc/fstab faylına düzgün sətri əlavə edirik:

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

Və yazırıq

mount /var/www

Əgər bir xəta meydana gəlibsə — siqnal verin! Çünki bu, /etc/fstab-da xəta olduğunu göstərir. Və növbəti yenidən başlamada gözlənilməz çətinliklərimiz ola bilər. Sistem bəlkə də ümumiyyətlə başlamayacaq, bu da bulud xidmətləri üçün çox kədərli ola bilər. Buna görə də ya sonuncu əlavə olunan sətri dərhal düzəltmək, ya da onu tamamilə silmək gərəkdir! Tam olaraq bu səbəbdən də montaj əmrlərini əl ilə yazmadıq — beləliklə, konfiqurasiyanı dərhal yoxlamaq imkanımız olmadı.

İndi istədiyimiz hər şeyi quraşdırırıq və veb üçün portları açırıq:

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

İstəyə bağlı olaraq burada bir DB də quraşdıra bilərsiniz, amma şəxsi fikrimcə, onu veb serverdən ayrı saxlamağa çalışıram. Amma onun yanına saxlamaq daha sürətlidir, bəli. Virtual şəbəkə adapterlərinin sürəti adətən bir gigabit civarındadır, eyni maşında işləyərkən isə müraciətlər demək olar ki, dərhal baş verir. Amma bu daha az təhlükəsizdir. Burada kimin üçün nə daha vacibdir.

İndi konfiqurasiya faylına parametr əlavə edirik (yeni birini yaradırıq, CentOS’un müasir ideologiyası belədir)

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

Serveri yenidən başladırıq.
Şərhlərdə SeLinux-u söndürməyi məsləhət gördüyüm üçün məni qınadılar, buna görə də düzəldirəm və yazıram ki, bundan sonra SeLinux-u konfiqurasiya etməyi unutmayın.
Beləliklə, qazanc! 🙂

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster