Веб-сервер на CentOS 8 со php7, node.js и redis

предговорот

Поминаа 2 дена од објавувањето на новата верзија на оперативниот систем CentOS, имено CentOS 8. И досега има неколку статии на Интернет за тоа како се прават работите во него, па решив да ја пополнам оваа празнина. Покрај тоа, ќе ви кажам не само за тоа како да го инсталирате овој пар програми, туку и за тоа како генерално го гледам инсталирањето на Linux во виртуелна средина во современиот свет за типични задачи, вклучително и партиционирање на дискови и така натаму.

Но, на почетокот, сакам накратко да зборувам зошто вреди да се префрлиме на оваа верзија од сите претходни, и има две причини за ова:

  1. php7! Во претходната верзија на CentOS беше инсталиран „православниот“ php5.4...

    Добро, да бидам малку посериозен, многу пакети масовно скокнаа низ неколку верзии. Ние (љубителите на оперативни системи слични на redhat) конечно влеговме, ако не во иднината, тогаш барем во сегашноста. А поддржувачите на Убунту веќе нема да ни се смеат и да не покажуваат со прст, па... барем за некое време ;).

  2. Премин од yum во dnf. Главната разлика е во тоа што сега е официјално поддржано да работи со неколку верзии на пакети одеднаш. Токму во осумте години, никогаш не сум го нашол ова корисно, но звучи ветувачко.

Направете виртуелна машина

Има различни хипервизори и немам цел да го прилагодам читателот на одреден, ќе ви кажам за општите принципи.

меморија

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

Но, ако ништо друго, по инсталацијата, големината на меморијата може да се намали. На 1 GB голиот систем работи доста добро, проверив.

диск

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

процесор

На едното јадро, голиот систем не успорува. И бидејќи ресурсите се слободно скалабилни, не гледам никаква смисла да давате повеќе во фазата на инсталација (освен ако не ги знаете совршено барањата и не сте премногу мрзливи за повторно да влезете во конфигураторот)

Останатото обично може да се остави како стандардно.

Вистинската инсталација

Значи... Ајде да го стартуваме инсталерот... Лично, јас веќе долго време инсталирав такви услуги само во форма на виртуелни машини, така што нема да опишам секакви записи за дистрибуција на флеш-уред - само монтирам ISO како ЦД во мојот омилен хипервизор, преземете и одете.

Основната инсталација е сосема типична, ќе се задржам само на неколку точки.

Избор на извор

Од објавувањето на осмата верзија, огледалото од Yandex лежеше со денови. Па, тоа е, периодично се крева, а потоа повторно почнува да покажува грешка. Сигурен сум дека тоа е поради прекумерното оптоварување на услугата. Затоа, за да го наведам изворот, јас лично морав, наместо да ја внесам вообичаената адреса, да одам тука, изберете го огледалото што ми се допаѓа таму и рачно внесете ја адресата во прозорецот за инсталација. Важно е да запомните овде дека треба да ја наведете патеката до папката каде што се наоѓа директориумот repodata. На пример, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Поделба на дискот

Прашањето е прилично религиозно според мене. Секој админ има свој став по ова прашање. Но, сепак ќе го споделам моето гледиште за ова прашање.

Да, во принцип, можете да го распределите целиот простор на коренот и тој ќе работи, најчесто дури и доста добро. Зошто тогаш оградете градина со различни делови? — Според мене, има две главни причини за тоа: квоти и преносливост.

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

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

Разменете... Во голема мера, има малку практична употреба од тоа. Ако почнете да користите swap на вашиот сервер, денес во реалниот свет тоа само значи дека серверот треба да додаде повеќе RAM меморија. Во спротивно, проблемите со перформансите се загарантирани (или некоја програма „протекува“ меморија). Затоа, овој дел е потребен само за дијагностички цели. Затоа, 2 GB е одличен број. Да, без разлика колку меморија има на серверот. Да, ги прочитав сите тие статии каде што пишува за односот на јачината на меморијата со swap волуменот... IMHO, тие се застарени. За 10 години пракса никогаш не ми требаше ова. Пред 15 години ги користев, да.

IMHO, секој може сам да одлучи дали да го распредели /home во посебна партиција. Ако некој на серверот активно ќе го користи овој директориум, подобро е да го распредели. Ако нема никој, нема потреба.

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

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

Нераспределениот простор ќе остане слободен во групата за јачина на звук и секогаш може да се користи подоцна.

LVM

сите Има смисла да се прават партиции поинакви од /boot во LVM. Да, вклучително и замена. Да, според сите совети, swap треба да биде на почетокот на дискот, но во случајот на LVM неговата локација не може во принцип да се одреди. Но, како што напишав погоре, вашиот систем не треба воопшто користете swap. Затоа, не е важно каде е. Па, не живееме во 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%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

Додадете коментар