===== Настройка веб-сервера на базе стека LEMP в Ubuntu Server 14.04 LTS. Часть 1. Установка ОС ===== ==== Подготовка виртуальной машины ==== Готовим виртуальную машину для установки операционной системы **Ubuntu Server 14.04 LTS**. В нашем примере будет использоваться виртуальная машина на базе гипервизора [[:microsoft-hyper-v|Microsoft Hyper-V]] С сетевой точки зрения виртуальная машина будет изолированной, то есть будет иметь только 1 сетевой контроллер направленный в сторону интернет-провайдера. Конфигурация виртуальной машины: * Процессор: 4vCPU 3GHz * Память: 4GB * Сеть: 1 контроллер 1Gb/s * Диски: 3 отдельных виртуальных диска Количество создаваемых виртуальных дисков определено таким образом, чтобы при необходимости можно было их по отдельности размещать на СХД на разные физические тома (с разными скоростными показателями). Например диск под базы данных MySQL в перспективе можно будет переместить на физический том работающий на быстрых SSD дисках. * Первый диск будет использоваться под загрузочный раздел (/boot/efi), раздел файла подкачки и корневой раздел (/). * Второй диск будет использоваться под раздел домашних папок пользователей (/home), раздел под логи и другие активно используемые и изменяемые файлы (/var), раздел корневых папок сайтов веб-сервера (/var/www). * Третий диск полностью будет использоваться под раздел файлов баз данных MySQL. Конечная конфигурация дисков и разделов будет выглядеть таким образом: sda 30G ├─sda1 vfat 512M /boot/efi ├─sda2 ext4 23.5G / └─sda3 swap 6G [SWAP] sdb 50G ├─sdb1 ext4 10G /home ├─sdb2 ext4 20G /var └─sdb3 ext4 20G /var/www sdc 20G └─sdc1 ext4 20G /var/lib/mysql \\ ==== Установка ОС ==== Подробно описывать процесс установки Ubuntu Server 14.04 LTS здесь мы не будем, так как он рассматривался ранее в статье блога [[http://blog.it-kb.ru/2014/06/16/forward-proxy-squid-3-3-on-ubuntu-server-14-04-lts-part-1-install-os-on-hyper-v-generation-2-vm/|Настройка прокси сервера Squid 3.3 на Ubuntu Server 14.04 LTS. Часть 1. Установка ОС на ВМ Hyper-V Gen2]]. Однако здесь мы уделим внимание тем шагам, которые отличаются от типичной установки, касающимся планируемой нами дисковой конфигурации системы. Дойдя до шага разметки дисков, выбираем первый диск **sda** и жмём **Enter** {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-204506.png }} Согласимся с запросом на создание новой таблицы разделов на выбранном диске **Yes** {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-204922.png }} Выбираем свободное место **FREE SPACE** и жмём **Enter** {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-205038.png }} В появившемся окне выбираем вариант создания нового раздела **Create a new patition** и жмём **Enter** {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-205523.png }} Укажем небольшую величину, например **512 MB**, в качестве размера создаваемого раздела, который будет использоваться как загрузочный раздел. Жмём **Continue**. {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-205654.png }} На следующий вопрос отвечаем то, что мы хотим создать новый раздел в начале диска **Beginning** и жмём **Enter** {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-210017.png }} Затем откроется окно, в котором нам нужно будет задать параметры созданного раздела. В поле **Use as:** выбираем из списка возможных значений **EFI boot partition **. Убеждаемся в том, что поле **Bootable flag:** установлено в **on** {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-210235.png }} Сохраняем настройки - выбираем вариант **Done setting up the partition** и жмём **Enter**. Мастер разметки вернёт нас обратно на окно выбра дисков. Снова выбираем свободное место **FREE SPACE** на первом диске ниже только что созданного раздела и нажимаем **Enter** {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-210612.png }} По аналогии с тем как делали ранее, создаём новый раздел: {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-210638.png }} Размер раздела рассчитываем по примерной формуле: Размер места на диске, свободного для разметки (31.7GB) минус размер раздела под файл подкачки, который создадим в дальнейшем на этом же диске (6GB) = 25.7GB {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-211214.png }} Раздел добавляем на свободное место с начала диска, то есть этот раздел будет создан сразу за загрузочным разделом, который мы создали ранее: {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-211314.png }} Настраиваем параметры раздела таким образом, что он будет являться корневым (точка монтирования "**/**" ) {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-211633.png }} Возвращаемся в меню создания разделов и выбираем оставшееся место на первом диске: {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-211715.png }} Создаём новый раздел: {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-211738.png }} Задаём размер раздела в 6GB под файл подачки (на весь оставшийся доступный размер свободного места): {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-211914.png }} Определяем тип раздела как **swap area**: {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-211953.png }} Переходим к разметке следующего, второго диска - **sdb**: {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-212026.png }} Создаём новую таблицу разметки разделов {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-212144.png }} Выбираем свободное место для создания нового раздела: {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-212211.png }} По аналогии с ранее описанной последовательностью действий, создаём на свободном месте диска **sdb** по порядку 3 новых раздела. Первый раздел второго диска под **/home**: {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-212412.png }} Второй раздел второго диска под **/var**: {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-212437.png }} Третий раздел второго диска под **/var/www**: {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-212510.png }} На третьем диске **sdc** по аналогии делаем раздел на полный размер диска с точкой монтирования **/var/lib/mysql** {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-212746.png }} В конечном итоге получаем планируемую разметку дисков: {{ :unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:pasted:20160326-212823.png }} Жмём **Finish patitioning and write changes to disk** Завершаем процесс установки ОС и после первой загрузки системы убеждаемся в том, что точки монтирования расположены именно так как мы задумывали в процессе расметки с помощью команды: sudo lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL \\ ==== Включаем iptables ==== Для системы имеющей выход в Интернет первым делом необходимо включить и настроить брандмауэр **iptables**. Про базовую настройку iptables уже упоминалось [[http://blog.it-kb.ru/2014/07/10/ubuntu-server-14-04-lts-linux-firewall-netfilter-basic-setup-witn-iptables-rules/|ранее в нашем Блоге]]. Меняем политику для всего входящего трафика не попавшего ни под одно правило в цепочке **INPUT** на запрещающую: sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP То же самое можно сделать и для протокола **IPv6**. Здесь в качестве интерфейса управления по аналогии с iptables будет выступать **ip6tables** sudo ip6tables -P INPUT DROP sudo ip6tables -P FORWARD DROP Создадим 2 правила. 1. Правило разрешающее любой входящий трафик на служебный внутренний loopback device. Это может потребоваться для корректной работы разного рода служб и приложений. sudo iptables -I INPUT 1 -i lo -j ACCEPT 2. Правило для поддержки уже разрешённых ранее и установленных соединений sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT Проверим что получилось в результате для протокола **IPv4**: sudo iptables -S А также для протокола **IPv6**: sudo ip6tables -S Для сохранения правил в большинстве случаев можно использовать пакет **iptables-persistent**, но проблема в том, что он не умеет работать с цепочками **ipset**, которые мы будем использовать в дальнейшем для защиты сервера. Создадим файл для сохранения всех правил **iptables** и настроим права доступа к нему: sudo touch /etc/iptables.conf sudo chown root:adm /etc/iptables.conf sudo chmod 640 /etc/iptables.conf Создадим файл для сохранения всех правил **ip6tables** и настроим права доступа к нему: sudo touch /etc/ip6tables.conf sudo chown root:adm /etc/ip6tables.conf sudo chmod 640 /etc/ip6tables.conf В этот файл мы будем записывать текущую конфигурацию правил iptables после их корректировки. Для того, чтобы правила **iptables** автоматически восстанавливались автоматического из файла **/etc/iptables.conf** во время загрузки системы, в файл **/etc/rc.local** (ранее всех других команд, но до команды **exit 0**) добавим строки: ... # Load iptables rules from this file iptables-restore < /etc/iptables.conf ip6tables-restore < /etc/ip6tables.conf ... Для сохранения текущих правил iptables вручную в любой момент времени, например, после редактирования правил, в дальнейшем будем использовать команду: sudo iptables-save | sudo tee /etc/iptables.conf sudo ip6tables-save | sudo tee /etc/ip6tables.conf или sudo sh -c "iptables-save > /etc/iptables.conf" sudo sh -c "ip6tables-save > /etc/ip6tables.conf" \\ ==== Установка компонент интеграции Hyper-V ==== Обновляем все пакеты и ядро системы и выполняем перезагрузку: sudo apt-get update sudo apt-get dist-upgrade sudo reboot После загрузки системы узнаём текущую версию загруженного ядра: uname -r 3.13.0-83-generic Как видно, в моём случае это **3.13.0-83-generic**. Выполняем установку пакетов необходимых для улучшения интеграции Ubuntu Server 14.04 64-bit с Hyper-V с подстановкой версии ядра в имена пакетов **linux-tools** и **linux-cloud-tools**: sudo apt-get install hv-kvp-daemon-init \ linux-tools-3.13.0-83-generic \ linux-cloud-tools-3.13.0-83-generic Перезагружаем сервер и проверяем лог загрузки на предмет отсутствия ошибок запуска компонент интеграции: sudo cat /var/log/boot.log | grep Hyper * Starting Hyper-V VSS Protocol Daemon [ OK ] * Starting Hyper-V KVP Protocol Daemon [ OK ] * Stopping Hyper-V KVP Protocol Daemon [ OK ] Проверяем наличие процессов дополнительных средств Hyper-V: sudo ps -ef | egrep "hv.*daemon" root 872 1 0 19:59 ? 00:00:00 /usr/lib/linux-tools/3.13.0-83-generic/hv_kvp_daemon root 873 1 0 19:59 ? 00:00:00 /usr/lib/linux-tools/3.13.0-83-generic/hv_vss_daemon После установки компонент интеграции у нас появится возможность выполнять онлайн-бекап виртуальной машины такими средствами как [[microsoft-system-center:data-protection-manager|Microsoft System Center 2012 R2 DPM]]. ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 17.03.2016 15:41 {{tag>Linux Ubuntu "Ubuntu 14.04" "14.04 LTS" "Ubuntu Server" iptables Hyper-V VSS KVP Filesystem }} ~~DISCUSSION~~