Передмова
Ось уже 2 дні як вийшла нова версія операційної системи CentOS, а саме, CentOS 8. І поки в Інтернеті досить мало статей на тему того, як у ній щось робиться, тому я вирішив заповнити цю прогалину. Причому розповім я не тільки про те, як поставити цю пару програм, а й про те, як я взагалі бачу встановлення Лінукс у віртуальне середовище в сучасному світі для типових завдань, включаючи розбиття дисків та інше.
Але на початку я хочу коротко розповісти про те, чому варто переходити на цю версію з усіх попередніх, а тому є аж дві причини:
- php7! У минулій версії CentOS ставився «православний» php5.4.
Гаразд, якщо трохи серйозніше, дуже багато пакетів перестрибнули через кілька версій скопом. Ми (шанувальники redhat-подібних ОС) нарешті увійшли якщо не в майбутнє, то хоча б у сьогодення. І прихильники Ubuntu більше не будуть з нас сміятися і тикати в нас пальцями, ну… хоча б деякий час ;).
- Перехід з yum на dnf. Основна різниця в тому, що тепер офіційно підтримується робота одразу з кількома версіями пакетів. Ось прямо у вісімці мені це ще жодного разу не знадобилося, але звучить багатообіцяюче.
Створення віртуальної машини
Гіпервізори бувають різні і я не маю мети заточувати читача під конкретний, розповім про загальні принципи.
Пам'ять
Перше ... Для установки системи CentOS починаючи з 7 точно, а по-моєму і в 6 теж так було («але це не точно»), необхідно мінімум 2 ГБ оперативної пам'яті. Тому раджу спершу стільки й видати.
Але якщо що, після встановлення обсяг пам'яті можна зменшити. На 1 ГБ гола система працює цілком нормально, я перевіряв.
Диск
Для нормального встановлення слід створити віртуальний диск об'ємом 20-30 ГБ. Для системи цього вистачить. І другий диск для даних. Його можна додати на етапі створення віртуальної машини, і після. Я зазвичай додаю потім.
Процесор
На одному ядрі гола система не гальмує. А оскільки ресурси вільно масштабуються, давати більше на етапі установки я сенсу не бачу (хіба що ви ідеально знаєте вимоги і ліньки зайвий раз лізти в конфігуратор)
Решту зазвичай можна залишити за замовчуванням.
Власне встановлення
Отже ... Запускаємо установник ... Особисто я давно ставлю подібні сервіси тільки у вигляді віртуальних машин, тому всякі там записи дистрибутива на флешку описувати не буду - просто монтую ISO як CD-диск в улюбленому гіпервізорі, завантаження і погнали.
Базова установка проходить досить типово, зупинюся лише на кількох моментах.
Вибір джерела
З моменту виходу восьмої версії дзеркало від Яндекса лежить уже котрий день. Ну, тобто воно періодично здіймається, а потім знову починає показувати помилку. Впевнений, що справа у надмірному навантаженні на сервіс. Тому для вказівки джерела особисто мені довелося замість того, щоб запровадити звичну адресу, йти
Розбивка диска
Це питання скоріше релігійне на мій погляд. У кожного адміна є своя позиція щодо цього. Але я таки поділюся своєю точкою зору на запитання.
Так, в принципі, можна все місце виділити під корінь і працювати буде, найчастіше навіть непогано. Навіщо ж тоді городити город із різними розділами? — Основні причини тому на мій погляд 2: квоти та переносимість.
Наприклад, якщо щось пішло не так і на основному розділі з даними виникли помилки, хочеться мати можливість все одно завантажити систему та провести реанімаційні заходи. Тому особисто я виділяю окремий розділ під /boot. Там лежить ядро та завантажувач. Зазвичай вистачає мегабайт 500, але в окремих випадках може знадобитися більше, а враховуючи, що ми вже звикли вимірювати місце терабайтами, я виділяю під цей розділ 2ГБ. І тут важливо те, що його не можна робити lvm.
Далі йде корінь системи. Для нормальної установки мені жодного разу не потрібно більше 4 ГБ саме на систему, але під час планових заходів я часто використовую каталог /tmp для розпакування дистрибутивів, а виділяти його під окремий розділ сенсу не бачу — в сучасних системах він чиститься автоматично, тому не заповнюється . Отже, під корінь я виділяю 8ГБ.
Swap ... За великим рахунком практичної користі від нього мало. Якщо у вас на сервері став використовуватися свап, сьогодні в реальному світі це означає лише те, що серверу треба додати більше оперативної пам'яті. Інакше проблеми зі швидкодією гарантовані (або у якоїсь програми «тече» пам'ять). Тому цей розділ потрібний лише для діагностики. Тому 2 ГБ це чудова цифра. Так, незалежно від того, скільки на сервері пам'яті. Так, я читав усі ті статті, де написано про відношення обсягу пам'яті до обсягу свопу… ІМХО, вони застаріли. За 10 років практики мені це жодного разу не знадобилося. 15 років тому я їх застосовував, так.
Чи виділяти /home в окремий розділ ІМХО кожен може вирішувати сам. Якщо хтось цим каталогом на сервері користуватиметься активно, краще виділити. Якщо ніхто — нема чого.
Далі /var. Його, на мій погляд, виділяти треба обов'язково. Спочатку можна обмежитися цифрою в 4 ГБ, а там як піде. І так, під «як піде» я маю на увазі, що
- По-перше, завжди можна примонтувати інший диск у підкаталог /var (що далі покажу на прикладі)
- По-друге, у нас же lvm завжди можна додати. А додавати зазвичай доводиться тоді, коли надто багато балок починає туди сипатися. Але мені заздалегідь передбачити цю цифру ніколи не вдавалося, тому я починаю з 2 ГБ, а потім дивлюся.
Чи не розподілене місце залишиться вільним у групі томів, його потім завжди можна використовувати.
НВМ
Усі розділи, крім /boot, має сенс зробити в LVM. Так, включаючи swap. Так, swap за всіма порадами має бути на початку диска, а у випадку з LVM його місцезнаходження визначити не можна в принципі. Але як я вже писав вище, ваша система не повинна використовувати swap взагалі. А тому немає жодного значення, де він знаходиться. Ну, не в 95 році ми живемо, ось чесно!
Далі, в LVM є кілька базових сутностей, з якими треба вміти жити:
- фізичний том
- група томів
- логічний том
Фізичні томи об'єднуються у групи, у своїй кожен фізичний том то, можливо лише однієї групі, а група може бути відразу на кількох фізичних томах.
А логічні томи є кожен в одній групі.
Але... У нас, блін, знову ж таки 21 століття на подвір'ї. І сервери віртуальні. Немає сенсу до них застосовувати ті ж механізми, що застосовувалися до фізичних. І ось для віртуальних важливо мати дані окремо від системи! Це дуже важливо зокрема для можливості швидкого перемикання даних до іншої віртуалки (наприклад при переході на нову ОС) і взагалі будь-яких корисних плюшок (роздільних бекапів розділами засобами гіпервізора, наприклад). Тому одна volume group використовується для системи та обов'язково інша використовується для даних! Цей логічний поділ дуже допомагає у житті!
Якщо ви створили лише один віртуальний жорсткий диск під час створення віртуальної машини, на цьому конфігурація закінчується. А якщо два, то просто не розмічайте поки що другий.
Запускаємо установку.
Постустановка
Так, нарешті завантажилася свіжовстановлена система. Перше, що треба перевірити, — інтернетик.
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.
Власне, профіт! 🙂
Джерело: habr.com