В этой статье мы рассмотрим чистую установку с нуля и в базовую настройку сервера 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”.
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 update -y
Если образ свежий, то скорее всего у вас не будет пакетов для обновлений как в моем случае:
[root@centos var]# dnf update
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 -y
dnf install mc wget screen nano net-tools bind-utils curl lsof vim -y
Мне для комфортного администрирования хватает этого набора утилит, вы можете установить свои привычные утилиты.
Автоматическое обновление системы я не включаю, так как всегда устанавливаю необходимые обновления вручную. Если вы хотите настроить автоматическое обновление, установите пакет dnf-automatic:
dnf install -y dnf-automatic
Чтобы проверить активные задания на обновления системы введите:
systemctl list-timers *dnf-*
Отключение SELinux
На начальном этапе я всегда отключаю SELinux (для применения изменения нужно перезагрузить сервер):
nano /etc/sysconfig/selinux
reboot
Отключение SELinux налету, можно выполнить командой:
setenforce 0
Настройка сети в 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=ssh
firewall-cmd --permanent –-add-service=http
firewall-cmd --permanent –-add-service=https
Настройка времени и часового пояса (time-zone)
Чтобы посмотреть текущее время и time-zone, нужно ввести команду date:
[root@centos var]# 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 chronyd
systemctl 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 выглядит следующим образом:
[root@centos ~]# 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, мы видим точное время выполнения той или иной команды:
[root@centos ~]# 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 сервера закончена, далее я выполняю настройки согласно технического задания по различным проектам и обычно они отличаются.