Приветствую! В данной заметке я опишу создание базовой серверной платформы, которая может использоваться для различных целей, будь то вэб-сайт, блог, почтовый сервер, прокси-сервер и так далее. В качестве основы, будет использоваться стабильный и надёжный дистрибутив Linux Debian 8.1. Хотя данная инструкция описывает создание сервера на Debian, она также подойдёт для Ubuntu Server.
Всё нижеописанное - это один из вариантов установки, который я наиболее часто применял для небольших серверов. В нём будет использоваться два жёстких диска (одинакового объёма, это важно), объединённых в массив RAID1 (зеркалирование) и поверх него будет создан LVM-том, для возможности создания снимков состояния (снапшотов), а также удобного управления дисковым пространством. Также будет описана базовая защита сервера от некоторых атак.
Пример я буду проводить на виртуальной машине VirtualBox, в которой установлено 2 виртуальных жёстких диска по 50 гигабайт.
Итак, первым делом нам понадобится образ системы. Идём на официальный сайт Debian, и скачиваем сетевой установщик. Далее записываем его на флешку любой программой (Unetbootin, Ubuntu Startup Disk или аналогичными в Windows) и загружаемся. В первом окне выбираем Install, далее выбираем язык системы и настраиваем раскладку клавиатуры:
Далее указываем имя сервера, указываем домен (если есть), пароль root, имя своей учётной записи и пароль для неё. Пароли должны быть как можно сложнее, но чтобы вы при этом их не забыли:
Теперь самый важный и ответственный момент: разметка диска. Особо сложного здесь ничего нет, но я сделаю пару примечаний. Для нашего сервера мы будем использовать стандартную Ext4. Это хорошая и надёжная файловая система, проверенная временем. Однако если вы планируете создавать сервер баз данных, стоит использовать файловую систему XFS, которая лучше подходит для серьёзных нагрузок. Далее мы создадим массив RAID1, и развернём поверх него LVM (Logical Volume Manager, менеджер логических томов). Для чего всё это? RAID1 обеспечит избыточность (данные будут записываться сразу на два диска). Это серьёзно повысит надёжность. Минус данного подхода - нам будет доступно пространство только одного диска (то есть если у вас 2 диска по 500 гигабайт, то будет доступно 500 гигабайт, а не 1000). Кстати, если вы планируете использовать сервер для хранения данных, то тут лучше озаботиться созданием RAID5 массива. LVM позволит нам создавать логические разделы поверх физических разделов или томов, и создавать снимки состояния системы (то есть делать быстрые бэкапы данных, и передавать их на хранение на другой сервер или компьютер, например посредством rsync). Итак, выбираем тип разметки "Вручную", поочерёдно на каждом диске создаём таблицу разделов:
Затем выбираем "Настройка программного RAID, где выбираем "Создать MD устройство" и тип "RAID1":
Далее указываем число активных разделов (в нашем случае это 2, так как у нас два диска), а в следующем окне - число резервных (они будут нужны на случай аварии. К примеру если один из дисков вашего массива выйдет из строя, резервный встанет на его место. В нашем случае, резервных разделов нет). Клавишей "Пробел" отмечаем оба наших диска:
Теперь выбираем в меню "Настройка логических томов (LVM). Выбираем "Создать группу томов", называем её понятным именем (в нашем случае vg0, то есть Volume Group), и указываем наш RAID1-массив:
Далее мы создадим разделы для установки системы. У нас будет 4 раздела: /boot - загрузчик и ядро системы, / - корневая файловая система, /tmp - раздел для временных файлов и swap - раздел подкачки. Вы можете разметить по-другому, к примеру вынести на отдельный раздел /var, или /home, тут зависит от случая. Если вы будете выносить раздел /var, то дайте ему как можно больше пространства, так как в данном каталоге находятся логи системы, которые быстро разрастаются при постоянных ошибках. При переполнении этого раздела, системе поплохеет. Итак, выбираем "Создать логический том", выбираем нашу группу томов, пишем название раздела (boot, root, tmp, swap и так далее по очереди), и указываем размер. Для раздела /boot достаточно 512 мегабайт, под root (/) желательно не менее 20 гигабайт (на всякий случай), под /tmp хватит от 2 до 4 гигабайт а под swap - в зависимости от количества оперативной памяти вашего сервера. Если у вас 4 гигабайта, то swap также можно указать 4 Гб. Если памяти больше 8 гигабайт, то хватит и 2Гб swap. Оставшееся свободное пространство оставьте неразмеченным. Оно пригодится при нехватке места для других разделов. После того как все разделы будут созданы, выбираем "Закончить":
Должна получиться примерно такая картина:
Теперь осталось указать точки монтирования для наших разделов. Поочерёдно выбираем разделы, и указываем: для разделов /boot, / и /tmp - Использовать как: журналируемая файловая система Ext4, точки монтирования /boot, / и /tmp соответственно. Для раздела swap указать "Использовать как: раздел подкачки", а для /tmp также укажите параметры монтирования nodev, noexec и nosuid (запрет на символьные и блочные устройства, биты SUID и SGID и выполнение программ из каталога tmp. Это хорошая мера защиты):
После этого выбираем "Закончить разметку и записать изменения на диск" и ждём пока установится система.
На одном из последних этапов вам будет предложено выбрать зеркало архива с пакетами ПО (я выбрал Российское mirror.yandex.ru), а также выбрать компоненты для установки. Клавишей "Пробел" снимите пункты со всего, кроме стандартных утилит:
На последнем этапе будет предложено установить загрузчик GRUB на один из дисков. Так как у нас RAID1, можете выбирать любой:
После перезагрузки, появится меню GRUB. Выберете первый пункт и система загрузится. Введите свой логин и пароль учётной записи и вы в системе). Теперь нам нужно её немного сконфигурировать. Ещё раз напомню, что я описываю установку базы. Никаких дополнительных сервисов, типа SSH описано не будет. Это уже индивидуально. Итак, первым делом необходимо поставить утилиту sudo, которая используется для предоставления прав администратора различным утилитам. Выполняем:
su
apt-get install sudo
adduser имяпользователя sudo
exit
Теперь перезагрузитесь. Для возможности ставить свежие версии некоторого ПО, такого как ядро или какие-либо системные утилиты, подключим репозиторий Backports:
sudo nano /etc/apt/sources.list
Добавляем строки:
#Backports
deb http://mirror.yandex.ru/debian jessie-backports main contrib non-free
deb-src http://mirror.yandex.ru/debian jessie-backports main contrib non-free
Также допишите contrib non-free в каждой строчке после main. Это позволит устанавливать несвободные компоненты, такие как драйвера или проприетарное ПО. Сохраняем и выходим из редактора (Ctrl+O, Enter, Ctrl+X). Далее:
sudo apt-get update
sudo apt-get install firmware-linux-free firmware-linux-nonfree
Теперь необходимо установить загрузчик GRUB на второй жёсткий диск, так как в случае повреждения диска с загрузчиком, после его замены и перестройки массива, система не сможет загрузиться. Командуем:
sudo grub-install /dev/sdb
sudo update-grub
Если у вас больше дисков, то эту операцию нужно проделать с каждым.
Осталось сделать несколько дополнительных настроек. Открываем файл /etc/sysctl.conf и добавляем:
#Задействовать swap при исчерпании 90% оперативки
vm.swappiness = 10
# Дропаем ICMP-редиректы (против атак типа MITM)
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
# Включаем механизм TCP syncookies
net.ipv4.tcp_syncookies=1
# Различные твики (защита от спуфинга, увеличение очереди «полуоткрытых» TCP-соединений и так далее)
net.ipv4.tcp_timestamps=0
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_max_syn_backlog=1280
kernel.core_uses_pid=1
Сохраняем и применяем командой sudo sysctl -p. Теперь базовая площадка у вас готова, и вы можете приступать к дальнейшей настройке. В будущих статьях я опишу настройку необходимых сервисов, создание почтовых и вэб-серверов и так далее. Если у вас есть замечания к статье - пишите в комментариях.
Дополнительные материалы:
Справка по LVM
Справка по RAID-массивам
Всё нижеописанное - это один из вариантов установки, который я наиболее часто применял для небольших серверов. В нём будет использоваться два жёстких диска (одинакового объёма, это важно), объединённых в массив RAID1 (зеркалирование) и поверх него будет создан LVM-том, для возможности создания снимков состояния (снапшотов), а также удобного управления дисковым пространством. Также будет описана базовая защита сервера от некоторых атак.
Пример я буду проводить на виртуальной машине VirtualBox, в которой установлено 2 виртуальных жёстких диска по 50 гигабайт.
Итак, первым делом нам понадобится образ системы. Идём на официальный сайт Debian, и скачиваем сетевой установщик. Далее записываем его на флешку любой программой (Unetbootin, Ubuntu Startup Disk или аналогичными в Windows) и загружаемся. В первом окне выбираем Install, далее выбираем язык системы и настраиваем раскладку клавиатуры:
Далее указываем имя сервера, указываем домен (если есть), пароль root, имя своей учётной записи и пароль для неё. Пароли должны быть как можно сложнее, но чтобы вы при этом их не забыли:
Теперь самый важный и ответственный момент: разметка диска. Особо сложного здесь ничего нет, но я сделаю пару примечаний. Для нашего сервера мы будем использовать стандартную Ext4. Это хорошая и надёжная файловая система, проверенная временем. Однако если вы планируете создавать сервер баз данных, стоит использовать файловую систему XFS, которая лучше подходит для серьёзных нагрузок. Далее мы создадим массив RAID1, и развернём поверх него LVM (Logical Volume Manager, менеджер логических томов). Для чего всё это? RAID1 обеспечит избыточность (данные будут записываться сразу на два диска). Это серьёзно повысит надёжность. Минус данного подхода - нам будет доступно пространство только одного диска (то есть если у вас 2 диска по 500 гигабайт, то будет доступно 500 гигабайт, а не 1000). Кстати, если вы планируете использовать сервер для хранения данных, то тут лучше озаботиться созданием RAID5 массива. LVM позволит нам создавать логические разделы поверх физических разделов или томов, и создавать снимки состояния системы (то есть делать быстрые бэкапы данных, и передавать их на хранение на другой сервер или компьютер, например посредством rsync). Итак, выбираем тип разметки "Вручную", поочерёдно на каждом диске создаём таблицу разделов:
Затем выбираем "Настройка программного RAID, где выбираем "Создать MD устройство" и тип "RAID1":
Далее указываем число активных разделов (в нашем случае это 2, так как у нас два диска), а в следующем окне - число резервных (они будут нужны на случай аварии. К примеру если один из дисков вашего массива выйдет из строя, резервный встанет на его место. В нашем случае, резервных разделов нет). Клавишей "Пробел" отмечаем оба наших диска:
Теперь выбираем в меню "Настройка логических томов (LVM). Выбираем "Создать группу томов", называем её понятным именем (в нашем случае vg0, то есть Volume Group), и указываем наш RAID1-массив:
Далее мы создадим разделы для установки системы. У нас будет 4 раздела: /boot - загрузчик и ядро системы, / - корневая файловая система, /tmp - раздел для временных файлов и swap - раздел подкачки. Вы можете разметить по-другому, к примеру вынести на отдельный раздел /var, или /home, тут зависит от случая. Если вы будете выносить раздел /var, то дайте ему как можно больше пространства, так как в данном каталоге находятся логи системы, которые быстро разрастаются при постоянных ошибках. При переполнении этого раздела, системе поплохеет. Итак, выбираем "Создать логический том", выбираем нашу группу томов, пишем название раздела (boot, root, tmp, swap и так далее по очереди), и указываем размер. Для раздела /boot достаточно 512 мегабайт, под root (/) желательно не менее 20 гигабайт (на всякий случай), под /tmp хватит от 2 до 4 гигабайт а под swap - в зависимости от количества оперативной памяти вашего сервера. Если у вас 4 гигабайта, то swap также можно указать 4 Гб. Если памяти больше 8 гигабайт, то хватит и 2Гб swap. Оставшееся свободное пространство оставьте неразмеченным. Оно пригодится при нехватке места для других разделов. После того как все разделы будут созданы, выбираем "Закончить":
Должна получиться примерно такая картина:
Теперь осталось указать точки монтирования для наших разделов. Поочерёдно выбираем разделы, и указываем: для разделов /boot, / и /tmp - Использовать как: журналируемая файловая система Ext4, точки монтирования /boot, / и /tmp соответственно. Для раздела swap указать "Использовать как: раздел подкачки", а для /tmp также укажите параметры монтирования nodev, noexec и nosuid (запрет на символьные и блочные устройства, биты SUID и SGID и выполнение программ из каталога tmp. Это хорошая мера защиты):
После этого выбираем "Закончить разметку и записать изменения на диск" и ждём пока установится система.
На одном из последних этапов вам будет предложено выбрать зеркало архива с пакетами ПО (я выбрал Российское mirror.yandex.ru), а также выбрать компоненты для установки. Клавишей "Пробел" снимите пункты со всего, кроме стандартных утилит:
На последнем этапе будет предложено установить загрузчик GRUB на один из дисков. Так как у нас RAID1, можете выбирать любой:
После перезагрузки, появится меню GRUB. Выберете первый пункт и система загрузится. Введите свой логин и пароль учётной записи и вы в системе). Теперь нам нужно её немного сконфигурировать. Ещё раз напомню, что я описываю установку базы. Никаких дополнительных сервисов, типа SSH описано не будет. Это уже индивидуально. Итак, первым делом необходимо поставить утилиту sudo, которая используется для предоставления прав администратора различным утилитам. Выполняем:
su
apt-get install sudo
adduser имяпользователя sudo
exit
Теперь перезагрузитесь. Для возможности ставить свежие версии некоторого ПО, такого как ядро или какие-либо системные утилиты, подключим репозиторий Backports:
sudo nano /etc/apt/sources.list
Добавляем строки:
#Backports
deb http://mirror.yandex.ru/debian jessie-backports main contrib non-free
deb-src http://mirror.yandex.ru/debian jessie-backports main contrib non-free
Также допишите contrib non-free в каждой строчке после main. Это позволит устанавливать несвободные компоненты, такие как драйвера или проприетарное ПО. Сохраняем и выходим из редактора (Ctrl+O, Enter, Ctrl+X). Далее:
sudo apt-get update
sudo apt-get install firmware-linux-free firmware-linux-nonfree
Теперь необходимо установить загрузчик GRUB на второй жёсткий диск, так как в случае повреждения диска с загрузчиком, после его замены и перестройки массива, система не сможет загрузиться. Командуем:
sudo grub-install /dev/sdb
sudo update-grub
Если у вас больше дисков, то эту операцию нужно проделать с каждым.
Осталось сделать несколько дополнительных настроек. Открываем файл /etc/sysctl.conf и добавляем:
#Задействовать swap при исчерпании 90% оперативки
vm.swappiness = 10
# Дропаем ICMP-редиректы (против атак типа MITM)
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
# Включаем механизм TCP syncookies
net.ipv4.tcp_syncookies=1
# Различные твики (защита от спуфинга, увеличение очереди «полуоткрытых» TCP-соединений и так далее)
net.ipv4.tcp_timestamps=0
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_max_syn_backlog=1280
kernel.core_uses_pid=1
Сохраняем и применяем командой sudo sysctl -p. Теперь базовая площадка у вас готова, и вы можете приступать к дальнейшей настройке. В будущих статьях я опишу настройку необходимых сервисов, создание почтовых и вэб-серверов и так далее. Если у вас есть замечания к статье - пишите в комментариях.
Дополнительные материалы:
Справка по LVM
Справка по RAID-массивам
Этот комментарий был удален автором.
ОтветитьУдалитьВидно что начинающий линуксоид, программный RAID1 с обёрткой LVM в реальных условиях будет очень тупить, сильно падает производительность, а так поиграться в Виртуал боксе конечно можно.
ОтветитьУдалитьНи разу ещё ничего не тупило, использовал данную связку на разных конфигурациях.
УдалитьЕдинственное что можно изменить - использовать XFS вместо ext4
ОтветитьУдалитьСпасибо за статью!
ОтветитьУдалить