Уеб сървър на CentOS 8 с php7, node.js и redis

предговор

Изминаха 2 дни от излизането на новата версия на операционната система CentOS, а именно CentOS 8. И до момента има доста статии в интернет за това как се правят нещата в нея, така че реших да запълня тази празнина. Освен това ще ви разкажа не само как да инсталирате тази двойка програми, но и как обикновено виждам инсталирането на Linux във виртуална среда в съвременния свят за типични задачи, включително разделяне на дискове и т.н.

Но в началото искам накратко да говоря защо си струва да преминете към тази версия от всички предишни и има две причини за това:

  1. php7! В предишната версия на CentOS беше инсталиран “православният” php5.4...

    Добре, за да бъдем малко по-сериозни, много пакети масово прескочиха няколко версии. Ние (феновете на операционни системи, подобни на redhat) най-накрая навлязохме, ако не в бъдещето, то поне в настоящето. И привържениците на Ubuntu вече няма да ни се смеят и да ни сочат с пръст, е... поне за известно време ;).

  2. Преход от yum към dnf. Основната разлика е, че сега официално се поддържа работа с няколко версии на пакети наведнъж. Точно в осмицата, никога не съм намирал това за полезно, но звучи обещаващо.

Създайте виртуална машина

Има различни хипервайзори и нямам за цел да приспособя читателя към конкретен, ще ви разкажа за общите принципи.

Память

Първо... За да инсталирате система CentOS със сигурност, започвайки от 7, а според мен това беше и в 6 („но това не е сигурно“), трябва минимум 2 GB RAM. Затова ви съветвам първо да дадете толкова.

Но ако не друго, след инсталирането размерът на паметта може да бъде намален. При 1 GB голата система работи доста добре, проверих.

диск

За нормална инсталация трябва да създадете виртуален диск с капацитет 20-30 GB. Това е достатъчно за системата. И втори диск за данни. Може да се добави както на етапа на създаване на виртуална машина, така и след това. Обикновено го добавям по-късно.

процесор

На едно ядро ​​голата система не се забавя. И тъй като ресурсите са свободно мащабируеми, не виждам смисъл да давам повече на етапа на инсталиране (освен ако не знаете изискванията перфектно и не сте твърде мързеливи, за да влезете отново в конфигуратора)

Останалите обикновено могат да бъдат оставени по подразбиране.

Същинската инсталация

И така... Нека стартираме инсталатора... Лично аз инсталирам такива услуги само под формата на виртуални машини от дълго време, така че няма да описвам всички видове записи за разпространение на флашка - просто монтирайте ISO като CD в любимия ми хипервайзор, изтеглете и да тръгваме.

Основната инсталация е доста типична, ще се спра само на няколко точки.

Избор на източник

От пускането на осмата версия огледалото от Yandex лежи наоколо с дни. Е, това означава, че периодично се повишава и след това отново започва да показва грешка. Сигурен съм, че се дължи на прекомерното натоварване на услугата. Следователно, за да посоча източника, аз лично трябваше, вместо да въвеждам обичайния адрес, да отида тук, изберете там огледалото, което харесвам, и ръчно въведете адреса в прозореца на инсталатора. Тук е важно да запомните, че трябва да посочите пътя до папката, в която се намира директорията repodata, Например mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Разделяне на диска

Този въпрос е доста религиозен според мен. Всеки администратор има своя позиция по този въпрос. Но все пак ще споделя моята гледна точка по въпроса.

Да, по принцип можете да разпределите цялото пространство на root и ще работи, най-често дори доста добре. Защо тогава ограждате градина с различни секции? — Според мен има две основни причини за това: квотите и преносимостта.

Например, ако нещо се обърка и възникнат грешки в основния дял с данни, искате да можете да стартирате системата и да предприемете мерки за реанимация. Затова аз лично отделям отделен дял за /boot. Има ядро ​​и буутлоудър. Обикновено 500 мегабайта са достатъчни, но в редки случаи може да са необходими повече и като се има предвид, че вече сме свикнали да измерваме пространството в терабайти, отделям 2 GB за този раздел. И важното тук е, че не може да се направи lvm.

Следва коренът на системата. За нормална инсталация никога не са ми били необходими повече от 4 GB на система, но по време на планирани събития често използвам директорията /tmp за разопаковане на дистрибуции и не виждам смисъл да я отделям за отделен дял - в съвременните системи почиства се автоматично, така че не се пълни. Така че отделям 8GB за root.

Размяна... Като цяло има малка практическа полза от него. Ако започнете да използвате swap на вашия сървър, днес в реалния свят това означава само, че сървърът трябва да добави повече RAM. В противен случай проблемите с производителността са гарантирани (или някоя програма "изпуска" памет). Следователно този раздел е необходим само за диагностични цели. Следователно 2 GB е отлично число. Да, независимо колко памет има на сървъра. Да, прочетох всички тези статии, където се пише за съотношението на обема на паметта към обема на суап... IMHO, те са остарели. За 10 години практика никога не съм имал нужда от това. Преди 15 години ги ползвах, да.

IMHO, всеки може да реши сам дали да разпредели /home в отделен дял. Ако някой на сървъра ще използва активно тази директория, по-добре е да я разпределите. Ако никой, няма нужда.

След това /var. Според мен определено трябва да се подчертае. Като начало можете да се ограничите до 4 GB и да видите как върви. И да, под „как върви“ имам предвид това

  1. Първо, винаги можете да монтирате друг диск в поддиректорията /var (което ще покажа по-късно с пример)
  2. Второ, имаме lvm - винаги можете да го добавите. И обикновено трябва да го добавите, когато там започнат да се изсипват твърде много трупи. Но никога не съм успявал да предвидя тази цифра предварително, така че започвам с 2 GB и след това гледам.

Неразпределеното пространство ще остане свободно в групата томове и винаги може да се използва по-късно.

LVM

всички Има смисъл да се правят дялове, различни от /boot в LVM. Да, включително размяна. Да, според всички съвети swap трябва да е в началото на диска, но при LVM местоположението му не може да се определи по принцип. Но както писах по-горе, вашата система не би трябвало използвайте суап изобщо. Следователно няма значение къде е той. Е, ние не живеем в ’95, честно!

Освен това в LVM има няколко основни обекта, с които трябва да можете да живеете:

  • физически обем
  • обемна група
  • логически обем

Физическите томове се комбинират в групи и всеки физически том може да бъде само в една група, а групата може да бъде разположена на няколко физически тома едновременно.
А логическите томове са всеки в една група.

Но... По дяволите, пак е 21 век. И сървърите са виртуални. Няма смисъл да се прилагат към тях същите механизми, които бяха приложени към физическите. А за виртуалните е важно данните да са отделно от системата! Това е много важно, по-специално за възможността за бързо превключване на данни към друга виртуална машина (например при преминаване към нова операционна система) и като цяло за всякакви полезни екстри (отделно архивиране по дялове с помощта на инструменти за хипервизор, например) . Следователно една група обеми се използва за системата и задължително друга се използва за данни! Това логично разделение помага много в живота!

Ако сте създали само един виртуален твърд диск при създаването на виртуална машина, това е мястото, където конфигурацията приключва. И ако има две, тогава просто не отбелязвайте втората още.

Да започнем инсталацията.

След инсталация

И така, новоинсталираната система най-накрая стартира. Първото нещо, което трябва да проверите, е интернет.

ping ya.ru

има ли отговор - Страхотно, натиснете Ctrl-C.
Ако не, отидете да създадете мрежа, няма живот без това, но статията ми не е за това.

Сега, ако все още не сме под root, отидете под root, защото пишете такое броят на командите със 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” (и размера в GB) можете да посочите малка, а след това вместо абсолютен размер да посочите относителен, например да използвате половината от свободното в момента пространство в група обеми, трябва да посочите „-l +50% БЕЗПЛАТНО“

И последната команда форматира дяла във файловата система 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

Добавяне на нов коментар