Serwer WWW na CentOS 8 z php7, node.js i redis

Przedmowa

Minęły 2 dni od premiery nowej wersji systemu operacyjnego CentOS, a mianowicie CentOS 8. A jak na razie w Internecie pojawiło się sporo artykułów na temat tego, jak się w nim robi, więc postanowiłem wypełnić tę lukę. Co więcej, opowiem Ci nie tylko o tym, jak zainstalować tę parę programów, ale także o tym, jak ogólnie widzę instalację Linuksa w środowisku wirtualnym we współczesnym świecie do typowych zadań, w tym partycjonowania dysków i tak dalej.

Ale na początek chcę krótko porozmawiać o tym, dlaczego warto przejść na tę wersję ze wszystkich poprzednich, a są ku temu dwa powody:

  1. php7! W poprzedniej wersji CentOS zainstalowano „Ortodoksyjny” php5.4...

    OK, mówiąc poważniej, wiele pakietów przeszło masowo kilka wersji. My (fani systemów operacyjnych przypominających redhaty) w końcu weszliśmy, jeśli nie w przyszłość, to przynajmniej w teraźniejszość. A zwolennicy Ubuntu nie będą się już z nas śmiać i wytykać palcami, cóż... przynajmniej przez jakiś czas ;).

  2. Przejście z mniam do dnf. Główna różnica polega na tym, że teraz oficjalnie obsługiwana jest praca z kilkoma wersjami pakietów jednocześnie. W ósemce nigdy nie uważałem tego za przydatne, ale brzmi obiecująco.

Utwórz maszynę wirtualną

Istnieją różne hypervisory i nie mam zamiaru dostosowywać czytnika do konkretnego, opowiem o ogólnych zasadach.

Память

Po pierwsze… Aby na pewno zainstalować system CentOS począwszy od 7, a moim zdaniem tak było również w 6 („ale to nie jest pewne”), potrzebujesz minimum 2 GB RAM-u. Dlatego radzę ci najpierw rozdać tyle.

Ale jeśli już, po instalacji rozmiar pamięci można zmniejszyć. Przy 1 GB goły system działa całkiem nieźle, sprawdzałem.

dysk

Do normalnej instalacji należy utworzyć dysk wirtualny o pojemności 20-30 GB. To wystarczy dla systemu. I drugi dysk na dane. Można go dodać zarówno na etapie tworzenia maszyny wirtualnej, jak i później. Zwykle dodaję to później.

Procesor

Na jednym rdzeniu goły system nie zwalnia. A ponieważ zasoby są dowolnie skalowalne, nie widzę sensu dawania więcej na etapie instalacji (chyba, że ​​doskonale znasz wymagania i jesteś zbyt leniwy, aby ponownie wejść do konfiguratora)

Resztę zazwyczaj można pozostawić jako domyślną.

Rzeczywista instalacja

A więc... Uruchommy instalator... Osobiście instaluję tego typu usługi już od dłuższego czasu wyłącznie w formie maszyn wirtualnych, więc nie będę opisywał wszelakich zapisów dystrybucyjnych na pendrive'ie - po prostu montuję ISO jako płytę CD w moim ulubionym hypervisorze, pobierz i gotowe.

Podstawowa instalacja jest dość typowa, zatrzymam się tylko na kilku punktach.

Wybór źródła

Od wydania ósmej wersji lustro Yandex leży od wielu dni. No to znaczy okresowo rośnie, a potem znowu zaczyna pokazywać błąd. Jestem pewien, że jest to spowodowane nadmiernym obciążeniem usługi. Dlatego też, aby wskazać źródło, osobiście musiałem, zamiast wpisywać zwykły adres, udać się tutaj, wybierz lustro, które mi się tam podoba i ręcznie wprowadź adres w oknie instalatora. Należy tutaj pamiętać, że należy określić ścieżkę do folderu, w którym znajduje się katalog repodane. Na przykład Mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Partycjonowanie dysku

To pytanie jest moim zdaniem raczej religijne. Każdy administrator ma swoje stanowisko w tej sprawie. Ale nadal podzielę się swoim punktem widzenia na ten temat.

Tak, w zasadzie można przeznaczyć całą przestrzeń na root i będzie działać, najczęściej nawet całkiem nieźle. Po co więc ogrodzić ogród różnymi sekcjami? — Moim zdaniem są ku temu dwie główne przyczyny: kwoty i możliwość przenoszenia.

Na przykład, jeśli coś pójdzie nie tak i na głównej partycji danych wystąpią błędy, chcesz nadal móc uruchomić system i przeprowadzić działania reanimacyjne. Dlatego osobiście przydzielam osobną partycję dla /boot. Jest jądro i bootloader. Zwykle wystarczy 500 megabajtów, ale w rzadkich przypadkach może być potrzebnych więcej, a biorąc pod uwagę, że jesteśmy już przyzwyczajeni do mierzenia przestrzeni w terabajtach, przeznaczę na tę sekcję 2 GB. I ważne jest to, że nie da się tego zrobić lvm.

Następny jest katalog główny systemu. Do normalnej instalacji nigdy nie potrzebowałem więcej niż 4 GB na system, jednak podczas zaplanowanych wydarzeń często wykorzystuję katalog /tmp do rozpakowywania dystrybucji i nie widzę sensu przeznaczania go na osobną partycję - w nowoczesnych systemach jest czyszczony automatycznie, więc nie jest wypełniony. Przydzielam więc 8 GB na root.

Zamień... Ogólnie rzecz biorąc, nie ma z tego praktycznego zastosowania. Jeśli zaczniesz używać wymiany na swoim serwerze, dziś w prawdziwym świecie oznacza to tylko, że serwer musi dodać więcej pamięci RAM. W przeciwnym razie gwarantowane są problemy z wydajnością (lub jakiś program „wycieka” pamięć). Dlatego ta sekcja jest potrzebna wyłącznie do celów diagnostycznych. Dlatego 2 GB to doskonała liczba. Tak, niezależnie od ilości pamięci na serwerze. Tak, czytałem wszystkie te artykuły, w których napisano o stosunku objętości pamięci do objętości wymiany… IMHO, są one nieaktualne. W ciągu 10 lat praktyki nigdy tego nie potrzebowałem. Tak, używałem ich 15 lat temu.

IMHO każdy może sam zdecydować, czy przydzielić /home do osobnej partycji. Jeśli ktoś na serwerze będzie aktywnie korzystał z tego katalogu, lepiej go przydzielić. Jeśli nie ma nikogo, nie ma takiej potrzeby.

Następnie /var. Moim zdaniem zdecydowanie należy to podkreślić. Na początek możesz ograniczyć się do 4 GB i zobaczyć jak będzie. I tak, mówiąc „jak to idzie” mam na myśli to

  1. Po pierwsze, zawsze możesz zamontować kolejny dysk w podkatalogu /var (co pokażę później na przykładzie)
  2. Po drugie mamy lvm - zawsze możesz go dodać. I zwykle trzeba go dodać, gdy zaczyna napływać zbyt wiele kłód. Ale nigdy nie byłem w stanie przewidzieć tej liczby z góry, więc zaczynam od 2 GB, a potem oglądam.

Nieprzydzielone miejsce pozostanie wolne w grupie woluminów i zawsze będzie można je wykorzystać później.

LVM

Wszystkie Sensowne jest utworzenie partycji innych niż /boot w LVM. Tak, łącznie z wymianą. Tak, zgodnie ze wszystkimi radami, swap powinien znajdować się na początku dysku, jednak w przypadku LVM w zasadzie nie da się określić jego lokalizacji. Ale jak napisałem powyżej, twój system nie powinien w ogóle używaj zamiany. Dlatego nie ma znaczenia, gdzie on jest. Cóż, szczerze mówiąc, nie żyjemy w 95 roku!

Co więcej, w LVM istnieje kilka podstawowych bytów, z którymi musisz umieć żyć:

  • objętość fizyczna
  • grupa woluminów
  • objętość logiczna

Woluminy fizyczne są łączone w grupy, a każdy wolumin fizyczny może należeć tylko do jednej grupy, a grupa może znajdować się na kilku woluminach fizycznych jednocześnie.
Każdy wolumin logiczny znajduje się w jednej grupie.

Ale... Cholera, znów mamy XXI wiek. A serwery są wirtualne. Nie ma sensu stosować do nich tych samych mechanizmów, które zastosowano do fizycznych. A dla wirtualnych ważne jest, aby mieć dane oddzielnie od systemu! Jest to bardzo ważne, zwłaszcza ze względu na możliwość szybkiego przeniesienia danych na inną maszynę wirtualną (na przykład przy przejściu na nowy system operacyjny) i ogólnie ze względu na wszelkiego rodzaju przydatne gadżety (oddzielne kopie zapasowe partycjami za pomocą np. narzędzi hypervisora) . Dlatego jedna grupa woluminów jest używana dla systemu, a koniecznie inna jest używana dla danych! Ten logiczny podział bardzo pomaga w życiu!

Jeśli podczas tworzenia maszyny wirtualnej utworzyłeś tylko jeden wirtualny dysk twardy, na tym kończy się konfiguracja. A jeśli są dwa, po prostu nie zaznaczaj jeszcze drugiego.

Rozpocznijmy instalację.

Po instalacji

Tak więc nowo zainstalowany system w końcu się uruchomił. Pierwszą rzeczą, którą musisz sprawdzić, jest Internet.

ping ya.ru

Czy jest odpowiedź? - Świetnie, naciśnij Ctrl-C.
Jeśli nie, to załóż sieć, bez tego nie ma życia, ale nie o tym jest mój artykuł.

Teraz, jeśli nie jesteśmy jeszcze pod rootem, przejdź do roota, ponieważ piszesz такое liczba poleceń w sudo mnie osobiście złamała (i niech paranoiczni administratorzy mi wybaczą):

sudo -i

Teraz pierwszą rzeczą, którą robimy, jest wpisywanie

dnf -y update

A jeśli czytasz ten artykuł w 2019 roku, najprawdopodobniej nic się nie stanie, ale warto było spróbować.

Teraz skonfigurujmy pozostały dysk

Powiedzmy, że partycja z systemem to xvda, wówczas dysk z danymi będzie miał format xvdb. OK.

Większość porad zaczyna się od „Uruchom fdisk i utwórz partycję…”

To jest niepoprawnie!

Powtórzę to jeszcze raz, bo to bardzo ważne! W tym przypadku do pracy z LVM, który zajmuje cały jeden dysk wirtualny, tworzenie na nim partycji jest szkodliwe! Każde słowo w tym zdaniu jest ważne. Jeśli będziemy pracować bez LVM, musimy to zrobić. Jeśli mamy system i dane na dysku to jest nam to potrzebne. Jeśli z jakiegoś powodu musimy pozostawić połowę dysku pustą, też powinniśmy to zrobić. Ale zazwyczaj wszystkie te założenia są czysto teoretyczne. Bo jeśli zdecydujemy się na dodanie miejsca do istniejącej partycji, to najłatwiej będzie to zrobić za pomocą tej konfiguracji. Łatwość administracji tak przewyższa wiele innych rzeczy, że celowo zmierzamy w stronę tej konfiguracji.

Wygoda polega na tym, że jeśli chcesz rozszerzyć partycję danych, po prostu dodajesz spacje do partycji wirtualnej, następnie rozwijasz grupę za pomocą vgextend i gotowe! W rzadkich przypadkach może być wymagane coś innego, ale przynajmniej nie będziesz musiał na początku rozszerzać woluminu logicznego, co już jest miłe. W przeciwnym razie, aby powiększyć ten właśnie wolumen, zalecają najpierw usunięcie istniejącego, a następnie utworzenie nowego na wierzchu... Co nie wygląda zbyt ładnie i na żywo nie da się tego zrobić, ale rozbudowę według wskazanego przeze mnie scenariusza można zrobić przeprowadzane „w locie” bez konieczności demontażu przegrody.

Tworzymy więc wolumin fizyczny, następnie grupę woluminów zawierającą go, a następnie partycję dla naszego serwera:

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

Tutaj zamiast dużej litery „L” (i rozmiar w GB) można podać małą, a następnie zamiast rozmiaru bezwzględnego podać względny, aby np. wykorzystać połowę aktualnie wolnego miejsca w grupę woluminów, musisz określić „-l +50%FREE”

I ostatnia komenda formatuje partycję w systemie plików ext4 (co na razie, z mojego doświadczenia, wykazuje największą stabilność na wypadek, gdyby wszystko się zepsuło, więc wolę to).

Teraz montujemy partycję we właściwym miejscu. Aby to zrobić, dodaj poprawną linię do /etc/fstab:

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

I wybieramy

mount /var/www

Jeśli wystąpi błąd, włącz alarm! Ponieważ oznacza to, że mamy błąd w pliku /etc/fstab. I że przy następnym ponownym uruchomieniu będziemy mieli bardzo duże problemy. System może w ogóle się nie uruchomić, co często jest bardzo smutne w przypadku usług w chmurze. Dlatego konieczne jest pilne poprawienie ostatniej dodanej linii lub całkowite jej usunięcie! Dlatego nie pisaliśmy ręcznie polecenia mount - wtedy nie mielibyśmy tak doskonałej okazji, aby od razu sprawdzić konfigurację.

Teraz właściwie instalujemy wszystko, co chcieliśmy i otwieramy porty dla Internetu:

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

Jeśli chcesz, możesz także umieścić tutaj bazę danych, ale osobiście staram się trzymać ją oddzielnie od serwera WWW. Chociaż trzymanie jej blisko jest szybsze, tak. Szybkość wirtualnych kart sieciowych zwykle wynosi około gigabitów, a podczas pracy na tej samej maszynie połączenia są realizowane niemal natychmiast. Ale jest mniej bezpiecznie. Co jest dla kogo ważniejsze?

Teraz dodajemy parametr do pliku konfiguracyjnego (tworzymy nowy, współczesna ideologia CentOS jest taka)

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

Zrestartuj serwer.
W komentarzach zostałem zbesztany za to, że radziłem mi wyłączyć SeLinux, więc poprawię się i napiszę o tym, że po tym trzeba pamiętać o skonfigurowaniu SeLinux.
Właściwie zysk! 🙂

Źródło: www.habr.com

Dodaj komentarz