Установка и базовая настройка CentOS 8
Что нового в CentOS 8?
24 сентября 2019 года, вышел релиз 8-ой версии CentOS. CentOS — дистрибутив Linux, основанный на коммерческом Red Hat Enterprise, компании Red Hat и совместимый с ним.
Рассмотрим наиболее крупные изменения в релизе CentOS 8:
- Используется ядро Linux kernel 4.18.
- Переход с пакетного менеджера yum на dnf. В данный момент yum существует как алиас к dnf.
- Выполнено разделение основного репозитория на 2 — это BaseOS и AppStream. Сделано это для того, чтобы у пользователя появилась возможность устанавливать разные версии пакетов на сервер. BaseOS работает как и раньше.
- Обновилось все ПО, в том числе и ядро. В базовом репозитории теперь устанавливается php версии 7.2 (наконец-то).
- Замена iptables на nftables. Лично я пока еще со вторым не работал напрямую, поэтому не могу сказать, хорошо это или плохо. Единственный момент, если нужно будет переносить какие-то проекты на новую ОС, придется разбираться с правилами, так как есть сервера с чистым iptables.
- network-skripts не используются по умолчанию для настройки сети, теперь управления сетью возложено на Network Manager.
- По умолчанию устаналивается веб-интерфейс управления сервером cockpit (удобно для новичков).
- Для управления контейнерами используется podman (вместо docker и mobdy).
- Новая версия стека TCP/IP 4.16 с улучшенной производительностью и поддержкой алгоритмов контроля BBR и NV.
- Новые версии дситрибутивов:
Установка CentOS 8 с помощью ISO-образа
Так как я проводил установку операционной системы на виртуальной машине KVM, предварительно я скачал установочный ISO-образ с одного из официальных зеркал (https://www.centos.org/download/mirrors/) и примонтировал его для установки на виртуальном сервере (при установке на физический сервер залейте установочный образ СentOS на USB флешку). Сразу скажу, процесс установки CentOS 8, не отличается от установки предыдущей версии и данная статья рассчитана на то, что будет служить помощником для пользователей, которые выполняют подобное впервые.
В рекомендуемых требования указано, что для установки CentOS 8 необходимо минимум 10 Гб места на диске и 512 Мб RAM на одно ядро процессора
Перезапустив виртуальную машину с примонтированным образом, я вошел в VNC-консоль. Первым шагом, вам будет предложено выбрать дальнейшие действия. Так как вы выполняем установку, нам интересен первый пункт меню:
Install CentOS Linux 8.0.1905
Выбрав его, у вас запустится процесс установки:
В процессе пока все необходимое ПО загружается, можно просто наблюдать за процессом, от вас не требуется никаких действий.
И когда черный экран сменится на интерактивный с логотипом CentOS, пора брать в руки мышь и клавиатуру.
В приветствии, система попросит вас выбрать язык, я всегда ставлю English (английский), потому что мне так удобнее работать (да и не понимаю, зачем вообще ставить русский язык на сервере). Нажмите кнопку “Continue”. В следующем меню нужно выбрать основные настройки для установки CentOS.
Для запуска установки, обязательно настроить только один пункт “Installation Destination”, там вы указываете разбивку диска, но я предпочитаю так же, сразу настроить сеть и дату со временем.
В зависимости от вашего часового пояса, вы устанавливаете свои параметры, для меня это Москва.
Чтобы настроить сеть, переходим в пункт “Network & Host Name”
В поле “Host Name” указываем имя сервера и для конфигурации сетевых интерфейсов нажимаем “Configure”
В главной вкладке, нужно отметить галочкой “Automatically connect to this network when it is available”, это нужно для того, чтобы сетевой интерфейс поднимался автоматически.
Перейдите во вкладку “IPv4 Settings” (либо IPv6 если вы используете данный протокол) настройте IP-адрес, маску подсети и шлюз:
Для ввода конкретного IP, нужно выбрать метод “Manual” и нажать кнопку “Add”, после чего у вас появится возможность ввести нужные данные. Сохранив все, мы вернемся к начальному окну настроек сети
Как можно увидеть на скриншоте, IP адрес добавился и сетевой интерфейс уже поднят (состояние Connected).
Следующим шагом мы перейдем к разбивке диска:
Для примера установки я воспользовался автоматической разбивкой от разработчиков CentOS. Если вы хотите разбить диск по-своему, нужно выбрать пункт “Custom”.
Если контроллер вашего сервера не поддерживает аппаратный RAID, в этом пункте меню вы можете собрать программный RAID из дисков сервера на базе mdadm
.
Так как на моей виртуальной машине, ранее была установлена ОС, система установки увидела это. Я удалил разделы предыдущей операционной системы в последующих открывающихся меню:
Удалить разделы можно кнопкой “Delete all”, после чего потребуется нажать кнопку “Reclaim space”, чтобы размер дискового пространства стал актуальным.
Список пакетов для установки выбирается в пункте Software Selection. Если вы планируете использовать CentOS 8 в качестве сервера, достаточно выбрать Minimal Install, а из добавлений Standard и Guest Agents (если вы ставите гостевую ОС в виртуальной машине).
После вышеописанных действий, можно запускать установку кнопкой “Begin Installation”
В процессе уже самой распаковки и установки необходимых компонентов, вам потребуется указать пароль для root-пользователя и можно создать дополнительного пользователя, но это не обязательный пункт.
Нажмите на кнопку “Root Password”, введите и повторите пароль и нажмите “Done”, чтобы вернуться к установке:
Изначально я задаю простой пароль, чтобы в случае проблем с сетью, я мог легко его ввести в VNC-консоли и исправить проблемы. После того, как система будет установлена, пароль рекомендуется изменить на более сложный. Установка CentOS 8 у меня заняла порядка 5-7 минут и когда в окне установки загорится кнопка “Reboot”, это означает, что все было установлено и нужно перезапустить сервер.
На этом установка CentOS 8 завершена.
Базовая настройка CentOS 8 после установки
Базовая настройка CentOS 8 практически не отличается от настройки CentOS, я делаю базовые настройки одинаковые на всех серверах.
CentOS 8: Установка обновлений и инструментов администратора
Как уже отмечалось ранее, в CentOS 8 на замену yum, пришел dnf.
Dnf – это следующее поколение приложения YUM, менеджер пакетов для дистрибутивов Linux на основе RPM-пакетов. Ранее dnf использовался в дистрибутивах Fedora, а теперь и в CentOS 8.
Первое действие, которое я выполняю на вновь установленном сервере, это обновление системы:
Если образ свежий, то скорее всего у вас не будет пакетов для обновлений как в моем случае:
Last metadata expiration check: 0:21:47 ago on Wed 09 Oct 2019 02:36:45 PM +06. Dependencies resolved. Nothing to do. Complete!
Если у вас обнаружатся обновления, обязательно их установите.
Следующим шагом, подключим репозиторий EPEL и установим необходимые утилиты для удобного администарирования сервера:
dnf install epel-release -ydnf install mc wget screen nano net-tools bind-utils curl lsof vim -y
Мне для комфортного администрирования хватает этого набора утилит, вы можете установить свои привычные утилиты.
Автоматическое обновление системы я не включаю, так как всегда устанавливаю необходимые обновления вручную. Если вы хотите настроить автоматическое обновление, установите пакет dnf-automatic:
Чтобы проверить активные задания на обновления системы введите:
Отключение SELinux
На начальном этапе я всегда отключаю SELinux (для применения изменения нужно перезагрузить сервер):
nano /etc/sysconfig/selinuxreboot
Отключение SELinux налету, можно выполнить командой:
Настройка сети в CentOS 8
Так как сеть я настроил на этапе установки системы, настройка ее в данный момент не требуется (подробная статья по настройке сети в CentOS). Хочу лишь сказать, что в CentOS 8, сеть управляется только через Network Manager и утилиту nmcl. Network-scripts по умолчанию не поддерживаются. Если честно, в своей работе я всегда отключал NM и не использовал, для меня это не удобный инструмент, теперь придется разбираться и с ним.
[root@server ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2019-10-07 08:23:11 MSK; 3h 37min ago Docs: man:NetworkManager(8) Main PID: 870 (NetworkManager) Tasks: 3 (limit: 5060) Memory: 4.7M CGroup: /system.slice/NetworkManager.service └─870 /usr/sbin/NetworkManager --no-daemon
Установка и смена hostname
Если вы не задали корректный hostname сервера при установке или просто хотите изменить, это можно выполнить несколькими способами. Измените его в файле /etc/hostname или поменяйте с помощью команды:
hostnamectl set-hostname нужный_хостнейм
Настройка firewalld в CentOS 8
Добавим в доверенные зоны на firewalld, нужные для начальной работы сервисы (SSH и HTTP/HTTPS):
firewall-cmd –-add-service=sshfirewall-cmd --permanent –-add-service=httpfirewall-cmd --permanent –-add-service=https
Настройка времени и часового пояса (time-zone)
Чтобы посмотреть текущее время и time-zone, нужно ввести команду date:
Wed Oct 9 13:03:00 MSK 2019
Мы указали time-zone при установке самой системы, поэтому у нас время по Москве. Чтобы поменять time-zone, нужно воспользоваться соответствующей командой:
timedatectl set-timezone Europe/Moscow
Где вместо Europe/Moscow вы можете указать свой вариант, например:
[root@server network-scripts]# date
Mon Oct 7 12:46:09 MSK 2019
[root@server network-scripts]# timedatectl set-timezone Asia/Almaty[root@server network-scripts]# date
Mon Oct 7 15:46:22 +06 2019
Для синхронизации времени используется chronyd, мы включим его и добавим в автозагрузку через systemctl:systemctl start chronydsystemctl enable chronyd
[root@server network-scripts]# systemctl status chronyd
● chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2019-10-07 16:13:48 +06; 9s ago Docs: man:chronyd(8) man:chrony.conf(5) Main PID: 31700 (chronyd) Tasks: 1 (limit: 5060) Memory: 1.1M CGroup: /system.slice/chronyd.service └─31700 /usr/sbin/chronyd
Настройка истории команда в bash_history
Для удобного просмотра истории, я всегда добавляю пару строк в .bashrc, чтобы в последствии можно было легко ориентироваться в отчетах.
При настройке по умолчанию, вывод history выглядит следующим образом:
1 dnf repolist 2 dnf install epel-release
То есть мы видим, что выполнялось на сервере, но не видим время и точную дату, для меня это критично, так как доступ к серверам могут иметь несколько специалистов. Поэтому приведем history к приятному виду:
Откроем файл /root/.bashrc и добавим в него нужные строки:nano /root/.bashrc
export HISTSIZE=10000 export HISTTIMEFORMAT="%h/%d/%y - %H:%M:%S "
Теперь при проверке history, мы видим точное время выполнения той или иной команды:
1 Oct/07/19 - 16:16:29 dnf repolist 2 Oct/07/19 - 16:16:29 dnf install epel-release
Cockpit: Веб-интерфейс управления сервером в CentOS 8
Как мы уже упоминали, в CentOS 8 предустановлен веб-интерфейс управления сервером cockpit. Он также управляется через systemctl. Вы можете запустить его и добавить в автозгрузку:
# systemctl enable cockpit.socket# systemctl start cockpit.socket
По–умолчанию веб сервер Cockpit слушает на порту 9090. Добавьте этот порт в разрешенные:
# firewall-cmd --get-active-zones# firewall-cmd --add-port=9090/tcp --zone=MY_ACTIVE_ZONE --permanent# firewall-cmd --reload
Для доступа к веб-интерфейсу Cockpit, откройте в браузере URL адрес https://your-CentOS8-IP:9090 и авторизуйтесь.
С помощью веб-интерфейса Cockpit вы можете смотреть загрузку своего сервера, управлять сетями и хранилищами, контейнерами, смотреть логи.
На этом моя типовая настройка CentOS сервера закончена, далее я выполняю настройки согласно технического задания по различным проектам и обычно они отличаются.