Как сделать сервер на дебиан

Обновлено: 07.07.2024

Это список достаточных и опциональных вещей, которые помогут поставить сервер для работы с 1С-Битрикс. Сразу скажу, что если возникнут вопросы — вы можете писать их в комментарии.

Здравствуйте, меня зовут.

Немного о принципах Клондайк

На данный момент хостинг является вспомогательной услугой студии, но всё большее количество жалоб клиентов на их хостинг, который не соответствует требованиям 1C-Битрикс, а также некоторая недобросовестность в поведении хостеров заставляет нас всё больше работать в эту сторону. И за многолетний опыт работы мы выработали несколько правил, которых придерживаемся.

1. Нет ограничений добросовестным клиентам. Это первый и основной принцип. Если клиент работает с нами и хочет продвигать свой бизнес, то мы не имеем права ограничивать его и себя. Мы выполняем качественную работу в рамках КИМ, а потому всячески помогаем дополнительными ресурсами. Этот безлимит предоставляется на доверии, так как видим клиента в лицо. Есть лишь одно ограничение — если обнаружена подозрительная активность, а клиент не отреагировал, мы отключаем его для проведения быстрой проверки на вредоносный код. Безопасность важнее. 2. Бэкапы делаются вне зависимости от пожеланий клиента. Нет ничего хуже, чем потерять сайт из-за глупой ошибки. Бэкапирование ведётся с повышенным интервалом, а также задаётся персонально для некоторых сайтов. Бэкапы хранятся на нескольких серверах, что даёт возможность быстро развернуть сайт на машине, на которой он уже стоял, либо быстро перенести на один из рабочих серверов из хранилища (бывает всякое).

Выбираем щенка

Основным параметром для выбора веб-сервера является скорость ввода-вывода. В режиме повышенной нагрузки мы выяснили, что нас файловая система ограничивает гораздо больше, чем процессор или оперативная память.

В нашем случае требовалась схема для постоянных клиентов, потому наш выбор остановился в пользу твёрдотельных накопителей (примерно 10-кратная скорость работы с диском) и достаточно большое количество ОЗУ (так как туда требовалось большое количество серверных клиентов и выгрузка многих файлов в оперативную память).

Первые шаги

Итак, у нас на руках имеется логин, пароль и адрес нашего сервера. Используем консоль, заходим, первое, что видим — Rescue. Это облегчённая версия установщика системы, потому ей воспользоваться будет рациональнее всего.

Появляется окно установщика.

Установщик debian

Выбираем то, что вам больше нравится, с чем вы привыкли работать. Мой выбор за debian 8 Jessie; debian имеет огромные репозитории с пакетами и показывает себя как крайне стабильная система. Debian 8 — это последний релиз системы, был протестирован и провалов замечено не было.

После этого выпадает окно настройки дисков.

Установка debian. Окно настройки дисков

SWRAID — это программный рэйд, который можно настроить, пожертвовав небольшим количеством IO. Либо вы можете заказать аппаратный контроллер, который повысит надёжность и скорость работы с рейдом. Для того, чтобы выбрать тип рейда, вам нужно понять, чем вы готовы пожертвовать. Выбирать приходится между тремя сторонами: скорость, отказоустойчивость, цена.

Сейчас я ставлю сервер с двумя дисками и практически уверен, что Raid 0 рассматриваться даже не должен. Сервер — это не место для лотереи. Все получают деньги тогда, когда всё работает.

Некоторые нюансы: я отключил журналирование и добавил несколько опций, характерных для SSD, чтобы чуть дольше продлить его жизнь и убрать лишнее ожидание ответа файловой системы. Учитывая системы защиты от перебоев и обесточивания Hetzner, считаю это разумным решением.

Выставляем поддержку TRIM для SSD (если у вас не SSD — пропускаем).

Заходим в /etc/fstab и прописываем /dev/md1 последней опцией discard .

Если очень хочется, можно собрать другое ядро, но этот процесс необязателен.

Чистое сознание вычислительной машины

Итак, для начала необходимо установить инструменты, которые нам понадобятся для установки и мониторинга, а также забэкапить необходимые конфиги.

Сделаем подсветку синтаксиса в vim — отныне это делается в файле /etc/vim/vimrc

Включение подсветки синтаксиса в vim

Раскомменчиваем строку syntax on , удаляя кавычки. Начинаем творить ужас.

Так как файл будет генерироваться полностью, ровно, как и все конфигурационные файлы, затрагиваемые ispconfig3, мы сделаем бэкап.

В файле /etc/hosts вы можете настроить отображение сервера. Рядом с IP адресом, который вам выдал провайдер, вы можете найти ваш технический адрес.

Я приобрёл отдельно домен для данного сервера и у меня не было технического адреса в файле, потому смело оставлю его первым.

Настройка отображения сервера в файле hosts

Если вы совершали изменения этого файла, то необходимо перезагрузить службу networking: Если требуется, изменяем имя сервера на имя домена: Проверяем: Должно получиться следующее: Теперь поставим слежение за состоянием дисков:

Ставим в список enable_smart те винты, за которыми необходимо следить. В моём случае это два винта с RAID 0, SSD, потому будут /dev/sda и /dev/sdb . Если вы не уверены, какие адреса используются у вас - fdisk -l вам в помощь.

smartmontools

После этого смело: Для синхронизации часового пояса установим Network Time Protocol и свежую версию tzdata, сконфигурированную под наши нужды:

Выбираем необходимый часовой пояс. Для меня это — Europe/Moscow

Далее мы комментируем строку, которая привязывает mysql к определённому адресу.

Предварительно сохраняем файл

Для чего это делается? Для того, чтобы потом можно было добавить разрешённый адрес, чтобы работать с БД напрямую.

Проверяем, поменялось ли Должны получить вот такой ответ Далее перезапускаем MySQL Проверяем, висит ли служба на одном из портов Получаем что-то подобное:

Создание почтовых сертификатов

Нам необходимо создать почтовые сертификаты, которые создаются от имени домена, а не localhost.

Для этого меняем файлы vi /etc/courier/imapd.cnf , vi /etc/courier/pop3d.cnf .
В них достаточно поменять запись CN=localhost на CN=вашдомен , но вы можете поменять и всю информацию.

Настройки при создании почтовых сертификатов

Такие настройки стоят у меня: А далее удаляем старые сертификаты, создаём новые и перезапускаем службу:

Установка антивируса, Apache, PHP, FTP и BIND

Установка антивируса и антиспама Далее останавливаем службу spamassasin, если место в ОЗУ критично: Установка Apache и PHP

Некоторые библиотеки могут к этому времени устареть, потому либо найдите необходимые с помощью apt-cache search , либо допишите в самом конце этой длинной строчки --fix-missing через пробел.

  • Какой сервер установить? — Apache2
  • Нужно ли создавать базу для PHPMyAdmin? — нет

Теперь мы делаем наше FTP-соединение защищённым.

Для этого включаем его в настройки: Создаём папку для сертификатов, а далее — сертификат, ответив на несколько вопросов

Установка Jailkit

Если мы планируем давать своим пользователям ssh доступ, то нам понадобится jailkit.

Установка fail2ban

Есть два варианта:

1. Лишь бы было 2. Специальная настройка от хабравчанина Отсюда копируем конфиги, либо пользуемся скриптом.

Наконец-то ISP

Устанавливаем панель

Достаточно сложно её установить не сохраняя локальную копию где-то, чтобы потом залить на сервер. Но мы скопировали одну из сборок ISP на наш сервер, можете им воспользоваться

Далее отвечаем на вопросы

Ответы на вопросы при установке ISP

В моём случае это было 5 раз Enter , пароль от ДБ, дважды Enter .

Дальше при создании SSL будут, в общем-то, вопросы, которые уже задавались. Пример тут.

интерфейс ISP

Создадим правило для фаервола:

Убираем из списка по умолчанию порт 3306

Финишная прямая: Проверяем, на каком порту висит:

Таким образом, мы устанавливаем apache2 на 82й порт, а 80й будет слушать NginX.

Далее ставим NginX:

Последняя строка добавляет правильный IP в модуль для Apache

Далее нам необходимо поменять несколько конфигурационных файлов: Если вам не хочется делать это вручную, то вы на меня чем-то похожи:

Создав сервер Debian 9, необходимо выполнить его начальную настройку. Это повысит защиту и юзабилити нового сервера, а также обеспечит надёжную платформу для дальнейшей работы.

1: Логин root

Для подключения к серверу вам понадобится его внешний IP-адрес. Кроме того, нужно знать пароль или иметь закрытый ключ (в случае использования аутентификации на основе SSH-ключей) администратора – пользователя root.

Чтобы войти как пользователь root, используйте команду:

На данном этапе может появиться предупреждение о подлинности хоста; примите его и предоставьте учётные root. Если вы используете SSH-ключи, защищенные парольной фразой, вам нужно будет ввести эту фразу сейчас. При первом подключении к серверу вам также будет предложено изменить root-пароль.

Что такое root?

Пользователь root является администратором среды Linux и обладает максимальными правами. Именно из-за широких привилегий аккаунта root использовать его для рутинной работы крайне небезопасно – так можно случайно нанести системе непоправимый вред.

Потому для постоянной работы в окружении Linux используется специально созданный аккаунт с расширенными привилегиями – доступом к команде sudo, о которой можно прочитать далее в этом руководстве.

2: Создание нового пользователя

Войдя в систему как root пользователь, создайте новый аккаунт для постоянной работы с сервером.

Примечание: В некоторых средах пакет unscd может быть установлен по умолчанию для более быстрого обслуживания запросов серверов типа LDAP. В последней версии пакета, которая в данный момент доступна в репозитории Debian, есть баг, из-за которого некоторые команды (например adduser) выводят такой дополнительный вывод:

sent invalidate(passwd) request, exiting
sent invalidate(group) request, exiting

apt remove unscd

Чтобы создать нового пользователя, введите:

Примечание: Замените условное имя 8host именем своего пользователя.

После запуска команды вам будет предложено предоставить информацию о пользователе.

Установите надёжный пароль и при желании укажите дополнительную информацию. Чтобы принять информацию по умолчанию, просто нажмите Enter.

3: Доступ к sudo

Итак, теперь у вас есть новый пользователь с обычными правами. Однако для управления сервером таких привилегий недостаточно.

Чтобы иметь возможность выполнять задачи администратора в сессии нового пользователя, передайте ему права суперпользователя. Для этого нужно открыть ему доступ к использованию команды sudo.

В Debian 9 доступ к этой команде по умолчанию есть у всех пользователей, которые входят в группу sudo. Чтобы добавить нового пользователя в эту группу, запустите следующую команду в сессии пользователя root:

usermod -aG sudo 8host

Теперь новый пользователь имеет права суперпользователя.

4: Настройка брандмауэра

Серверы Debian могут использовать брандмауэр для блокирования соединений с отдельными сервисами. По умолчанию установлен iptables, но Debian не имеет никаких строгих рекомендаций касательно брандмауэра. В этом мануале мы используем UFW.

С помощью менеджера пакетов apt установите брандмауэр UFW. Сначала обновите локальный индекс.

apt update
apt install ufw

Чтобы просмотреть его, введите:

ufw app list
Available applications:
. . .
OpenSSH
. . .

Теперь нужно разрешить SSH-соединения, чтобы иметь возможность подключиться к серверу в следующий раз. Для этого введите:

ufw allow OpenSSH

После этого можно включить брандмауэр:

Чтобы продолжить, нажмите у и Enter. Чтобы убедиться в том, что соединения SSH не блокируются брандмауэром, введите:

ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

Если вы установили и настроили дополнительные сервисы, вам необходимо откорректировать настройки брандмауэра, чтобы он не блокировал трафик этих сервисов.

5: Проверка доступа к новому пользователю

Теперь, когда у вас есть обычный пользователь для ежедневной работы, нужно убедиться, что вы можем использовать SSH непосредственно в учетной записи.

Примечание: Пока вы не убедитесь, что можете войти в систему и использовать sudo в сессии своего нового пользователя, мы рекомендуем оставаться в системе как пользователь root. Таким образом, если у вас возникнут проблемы, вы сможете устранить неполадки и внести необходимые изменения с правами root.

Процесс настройки SSH-доступа для вашего нового пользователя зависит от того, что использует ваша учетная запись root для аутентификации – пароль или SSH-ключи.

Парольная аутентификация

Если вы вошли в свою учетную запись root, указав пароль, значит, SSH поддерживает парольную аутентификацию. Вы можете подключиться по SSH к новому пользователю, открыв новую сессию терминала и используя SSH с именем нового пользователя:

Введите пароль пользователя, после этого вы войдете в систему. Помните, что если вам нужно запустить команду с правами администратора, вам нужно для этого добавить sudo:

При первом запуске sudo в каждом сеансе (и периодически при запуске разных команд) вам будет предложено ввести пароль текущего пользователя.

Чтобы повысить безопасность сервера, вместо парольной аутентификации мы настоятельно рекомендуем настроить SSH-ключи. Следуйте инструкциям в мануале Установка SSH-ключей в Debian 9.

Аутентификация на основе SSH-ключей

Если вы вошли в учетную запись root с помощью SSH-ключей, аутентификация по паролю отключена. Вам нужно будет добавить копию открытого ключа в файл ~/.ssh/authorized_keys нового пользователя для дальнейшего доступа к системе.

Поскольку ваш открытый ключ уже находится на сервере в файле пользователя root, ~/.ssh/authorized_keys, вы можете скопировать эту структуру файлов и каталогов в новую учетную запись пользователя в текущем сеансе с помощью команды cp. Чтобы установить привилегии, используйте команду chown . Обязательно укажите свои данные в приведенных ниже командах.

cp -r ~/.ssh /home/8host
chown -R 8host:8host /home/8host/.ssh

Откройте терминал и создайте новое соединение SSH:

Вы должны войти в новую учетную запись пользователя без пароля. Помните, чтобы запустить команду с правами администратора, нужно ввести sudo перед ней:

При первом запуске sudo в каждом сеансе (и периодически при запуске разных команд) вам будет предложено ввести пароль текущего пользователя.

6: Опциональные настройки

Теперь, когда основные компоненты серверной среды настроены, можно оптимизировать работу системы.

Установка справки

Debian предоставляет расширенную справку для большей части программного обеспечения. Справка доступна по команде man. Но эта команда не всегда установлена по умолчанию.

Чтобы получить доступ к справке, установите пакет man-db:

sudo apt install man-db

Теперь попробуйте запросить справочную информацию:

Многие пакеты в репозитории Debian содержат справочную информацию как часть установки.

Настройка редактора по умолчанию

Debian предлагает широкий выбор текстовых редакторов, некоторые из которых доступны в базовой установке. Команды с интегрированной поддержкой редакторов, например visudo и systemctl edit, передают текст команде editor, которая связана с текстовым редактором системы по умолчанию. Выбрав наиболее удобный редактор, вы можете упростить и ускорить свою работу с сервером.

Если предпочтительный текстовый редактор не установлен по умолчанию, введите:

sudo apt install your_preferred_editor

Затем можно уточнить, какой редактор используется по умолчанию и изменить его с помощью команды update-alternatives:

sudo update-alternatives --config editor

Команда выведет таблицу доступных реакторов и поможет выбрать нужный вам вариант:

There are 8 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/joe 70 auto mode
1 /bin/nano 40 manual mode
2 /usr/bin/jmacs 50 manual mode
3 /usr/bin/joe 70 manual mode
4 /usr/bin/jpico 50 manual mode
5 /usr/bin/jstar 50 manual mode
6 /usr/bin/rjoe 25 manual mode
7 /usr/bin/vim.basic 30 manual mode
8 /usr/bin/vim.tiny 15 manual mode
Press to keep the current choice[*], or type selection number:

Текущий редактор по умолчанию отмечен звездочкой. Чтобы изменить редактор, введите порядковый номер нового редактора и нажмите Enter. Например, чтобы выбрать nano:

Press to keep the current choice[*], or type selection number: 1
update-alternatives: using /bin/nano to provide /usr/bin/editor (editor) in manual mode

Теперь система будет использовать nano по умолчанию.

Заключение

Вы выполнили начальную настройку сервера, и теперь он готов к установке нового программного обеспечения и к разработке проектов.

Создавая недавно новый сайт на Yii2 я прилично помучился из-за различий рабочего окружения, которые обеспечивают локальный Open-Server на Windows и реальный сервер с Debian. Это вынудило меня настроить правильный локальный сервер, используя VirtualBox. В статье я расскажу, как это сделать.

Задача

Есть компьютер с Windows 10, где установлен VirtualBox. Создадим виртуальную машину в VirtualBox, установим на неё Debian. Затем настроим на этой машине веб-сервер и установим некоторый софт, необходимый для веб-разработки. Дополнительно настроим общую папку, чтобы удобно работать в ней с кодом сайтов в любимом редакторе под Windows. Открываться сайты тоже будут под Windows.

Виртуалка и Debian

Скачиваем новейший образ для установки Debian. Даю ссылку на страницу с образами, предназначенными для сетевой установки. Они маленькие, не имеют ничего лишнего, хорошо подходят для веб-сервера. Я использую 64-битный образ. На момент написания статьи актуален Debian версии 8.5.

Создаём виртуальную машину:


Объём памяти и диска по своему усмотрению.

Диск особо расходоваться не будет, т.к. мы будем работать с сайтами в общей папке, которая будет подключается к Debian как дополнительный носитель. Тип основного диска по умолчанию, динамический.


Машина подготовлена. Пока не включаем. Заходим в свойства машины, подключаем скаченный установочный образ на CD/DVD:


Пройдёмся по другим настройкам.


Можно выключить разные ненужные вещи, типа удаленного доступа по RDP, звуковой карты, порта USB стандарта 2.0 и т.д.



Здесь для SSH указываем порты 3022 и 22, для веба 80 и 80. Остальное заполнять не надо. Этого достаточно.


В завершении добавляем общую папку:


Выходим из настроек.

Запускаем машину, устанавливаем Debian.


Процедура установки Debian ничем особо непримечательна. Выбираем вначале обычную установку, я предпочитаю с графическим интерфейсом. По ходу выбираем всякие параметры. Запасаемся терпением.


Ближе к концу установки надо будет выбрать компоненты, которые требуется установить. Рабочий стол и прочий мусор нам на веб-сервере не нужен, снимаем везде отметки. Оставляем только SSH-сервер и стандартные системные утилиты.


В общем, установка завершается, машина перезапускается.


Вот сейчас машина успешно стартовала. Выключите её, сделайте снимок. Это займет от силы минуту.


Чтобы выключить машину можно написать poweroff , чтобы перезапустить — reboot .

Настройки

Пока продолжаем работать с созданной машиной через окно VirtualBox. К подключению по SSH вернёмся чуть позже.

В процессе установки Debian, кроме root, обязательно создаётся дополнительный пользователь. Если он совсем вам не нужен, то его можно удалить:

Дополнительный пользователь иногда полезен. Например, когда вы будете работать с Composer. Этот менеджер пакетов считает, что работа под root небезопасна и выдаёт предупреждение, хотя и продолжает исправно работать.

По умолчанию Debian не позволяет подключиться по SSH, используя пользователя root. Выглядит это так:

Дополнительным пользователем подключаться можно сразу.

Чтобы по SSH можно было зайти root-ом редактируем файл /etc/ssh/sshd_config .

Чтобы изменения вступили в силу перезагружаем машину.

Для подключений по SSH в Windows удобно использовать PuTTY. Адрес машины 127.0.0.1, порт 3022:


Теперь уже можно большую часть времени работать с виртуальной машиной через SSH. Оно удобнее, чем через окно VirtualBox. Окно PuTTY можно свободно растягивать и его содержимое будет под это подстраиваться. В вашем распоряжении буфер обмена и даже мышь.

Чтобы работала общая папка требуется установить дополнения гостевой ОС.

Для начала подключаем образ:


Теперь монтируем его:

Предварительно устанавливаем требуемые пакеты:

Теперь сама установка дополнений:

Результат успешной установки:

Перезапускаем машину и радуемся. Теперь у нас заработала общая папка. В виртуальной машине в моём случае это: /media/sf_Webdev . На основной машине она соответствует: c:\VirtualDub\Folders\Webdev .

Чтобы добавить пользователя в эту группу выполняем:

Пользователь www-data по умолчанию используется Nginx.

Веб-сервер

Переходим к настройке веб-сервера:

В общей папке создадим папку первого сайта: /media/sf_Webdev/site.loc .

Соответственно она появится и на основной машине. В эту папку поместим тестовый файл index.php с кодом:

Не имеет значения, как именно вы создаёте папки и файлы в общей папке. Можете всё это делать уже из вашей основной системы.

Создадим символическую ссылку для каталога сайта:

Создадим для сайта файл настроек Nginx /etc/nginx/sites-available/site.loc .

Подключим файл настроек:

Теперь в основной системе отредактируем hosts-файл c:\Windows\System32\drivers\etc\hosts .

В него надо добавить строчку:

Если сайт не открылся, вы получили белую страницу, то скорее всего у вас в основной системе уже используется каким-то приложением порт 80. Соответственно проброс этого порта из виртуальной системы в основную не удался и ничего не работает.

Чтобы выяснить, выключите пока виртуальную машину. В основной системе откройте консоль:

Выполняем в ней:

Получим примерно такое:

Здесь первая строка с адресом 0.0.0.0:80 – это признак, что 80-ый порт в настоящее время используется. В конце этой строки цифры, в примере это 5684 . Данный номер — это ID процесса приложения.

Чтобы узнать, что это за приложение, открываем диспетчер задач:



Той же командой в консоли ещё раз делаем проверку:

Теперь 80-ый порт никем не используется. Запускаем обратно виртуальную машину и снова пробуем открывать сайт. Теперь, если вы всё делали по инструкции, то он точно должен открыться!

Nginx

При подобном использовании веб-сервера внутри VirtualBox есть одна особенность с Nginx. Файлы сайтов получается будут лежать и модифицироваться в общей папке. Система внутри VirtualBox не будет знать, когда файлы в этой папке были модифицированы, отсюда проблема. Nginx думает, что файлы не менялись и добросовесно отдаёт старые их версии, закешированные.

Очень многие сталкиваются с этими граблями. Типичный случай: вы изменили файл CSS или JS, а на сайте не видно этих изменений, файл используются старый.

Мне помогло решить проблему включение в конфиг Nginx параметра:

Некоторым помогает ещё этот дополнительный параметр:

Поскольку проблема может быть актуальна для всех сайтов, работающих на веб-сервере виртуальной машины, то правильнее включить эти параметры в общем файле /etc/nginx/nginx.conf .

Дополнительная информация по теме.

Вместо обычного MySQL я предпочитаю Percona Server. Многие рекомендуют этот продукт, благодаря скорости и дополнительным фичам. Я использую Percona Server не менее 2 лет и тоже могу его рекомендовать. Для сайта, для любого сайтового движка — это будет просто MySQL, они не увидят разницы.

Я не делал сравнений. Просто однажды перешел на Percona Server и все. Никаких проблем никогда не было. Если при этом есть хоть небольшой прирост скорости, оно стоит того.

Установка Percona Server:

В процессе установки потребуется указать пароль для root-пользователя базы. Не путайте с root-пользователем системы.

Установим дополнительно phpMyAdmin. Последнее время я предпочитаю это делать через Composer. Так проблем меньше, да и версия точно будет новая. Вначале установим сам Сomposer:

Для рабочего софта лучше создать отдельный локальный сайт, пример webdev.loc . Это будет каталог /var/www/webdev.loc . Настройка Nginx аналогична той, что была выше. Пробрасывать этот каталог в основную систему не нужно.

В этом каталоге запускаем установку phpMyAdmin:

Он установится в каталог /var/www/webdev.loc/phpmyadmin .

Workbench


Рабочий софт

Установка Composer уже была выше. Остальное по желанию.

Если будут предупреждения:

Тогда надо установить предложенное, пример далее. В вашем случае версии могут быть другие, обратите на это внимание.

Vagrant

Это такая вспомогательная программа для VirtualBox. Хотя, работает и с другими системами виртуализации. Позволяет легко и быстро автоматизированно создавать виртуальные машины. Можно создать наподобие той, которую мы уже создали. Работать с Vagrant необходимо из командной строки.

Пишу это здесь просто для информации, что такое есть.

Я пробовал Vagrant. Да, действительно программа делает своё дело. Но мне показалось это лишним и не совсем тем, что надо. Мои соображения на этот счёт:

  • Такое полезно тому, кто создаёт виртуальные машины пачками. Не мой случай. Возможно, пока.
  • Виртуальные машины при помощи Vagrant создаются на основе готовых образов (боксов), список которых есть на официальном сайте. Они в случае необходимости автоматически загружаются. Честно говоря, я не сильно доверяю этим боксам. Считаю, что безопаснее создать своё. Тем более это не сложно.

В принципе, боксы для Vagrant — это созданные и специально настроенные виртуальные машины VirtualBox. Мы, вот, создали свою виртуальную машину. Её, в теории, можно немного допилить, чтобы использовать в качестве бокса Vagrant. Бокс может быть локальным.

Я когда начал изучать информацию по Vagrant, то меня напугали все эти инструкции в интернете. В каждой автор начинает разбирать конфигурационный файл виртуальной машины, и это поначалу выглядит дико и совсем непросто. Спешу успокоить новичков! Этот файл создается автоматически самим Vagrant-ом. Вы (при желании) можете внести в него дополнительные параметры, а можете и не вносить! Машина просто получит настройки по умолчанию. Часто этого достаточно.

Далее простой пример, как можно создать с помощью Vagrant тот же веб-сервер на базе Debian 8.

Перед тем как начать скачиваем Vagrant с официального сайта и устанавливаем его в любую папку. Важно, чтобы в пути к этой папке не было русских символов.

Открываем консоль в Windows:

Скачиваем нужный бокс и убеждаемся, что он попал в список доступных локально боксов:

Такая команда выполняется единожды, если ранее данный плагин ещё не инсталлировался. Плагин позволяет автоматически устанавливать в виртуальную машину дополнения гостевой ОС.

Создаём каталог и переходим в него, например:

Инициализация виртуальной машины:

При этом у нас появляется в этом каталоге файл Vagrantfile . Он содержит конфигурацию будущей машины. Как я уже сказал, настройки можно оставить по умолчанию. Устанавливаем виртуальную машину:

Всё! Через некоторое время машина будет готова.

При установке машины автоматически устанавливаются все актуальные обновления Debian. При каждом старте монтируется общая папка.

Для входа по SSH используем адрес 127.0.0.1, порт 2222, пользователя vagrant , пароль vagrant .

Таким образом, всего несколько команд в консоли и у нас готовая для работы виртуальная машина.

Последующий запуск машины из консоли происходит быстро:

В VirtualBox машину тоже видно:


Docker

Это ещё один альтернативный вариант.

По своей сути Docker предлагает уже не виртуализацию, а создание изолированных контейнеров поверх вашей основной системы. Таких контейнеров на одной системе можно запускать множество. Приложения в каждом из них работают полностью независимо.

Из-за того, что здесь нет полноценной виртуализации, то нет и расхода лишних ресурсов на виртуальные операционные системы. Процессор, диск, память расходуются исключительно на установленные в контейнерах приложения.

Docker предназначен для Linux и использует для создания контейнеров специфику ядра этой операционной системы. В Windows использовать Docker можно двумя способами. Во-первых, есть Boot2docker, который автоматически создаёт, опять же, в VirtualBox виртуальную машину и уже там запускает контейнеры. Во-вторых, можно самостоятельно создать виртуальную машину с Linux и там разворачивать контейнеры.

Автоматически созданная машина Boot2docker-ом:


Помимо уже сказанного есть ещё одна очень весомая фишка.

Мы создаём для разработки сайта один или несколько контейнеров Docker. Зависит от его сложности и масштабов. Потом, когда сайт будет готов, то мы именно эти же контейнеры просто переносим на хостинг! Получается, что сайт продолжает работать в своём родном окружении, уже на совсем другой площадке.

На мой взгляд Docker интересен, но только если вы работаете именно в Linux. Использование контейнеров через виртуализацию трудно назвать изящным вариантом. Поэтому я, как пользователь Windows, отказался от Docker. Во всяком случае, нет пока необходимости.

Debian 9 Stretch. Мы рекомендуем использовать данный дистрибутив Debian, так как он будет поддерживаться до 2022 года, что позволит поддерживать сервер в актуальном состоянии и устанавливать на него обновления безопасности из стандартных источников. Debian 9 — выбор консервативных администраторов, ценящих стабильность и надежность прежде всего.

MariaDB. Альтернативная реализация сервера MySQL, которая обладает лучшей производительностью и при этом полностью с ним совместима.

Требования к серверу

Для нормальной работы сайта с более-менее приличной нагрузкой вам понадобится сервер с одним или двумя ядрами, 1 GB RAM и 10 GB хранилища. Мы предполагаем, что вы уже располагаете такими или большими ресурсами и готовы приступить к установке.

Требования к DNS

Базовая настройка компонентов Nginx и получение сертификата

Nginx. Установка выполняется стандартным для Debian способом:

Получение сертификата Let’s Encrypt. Для установки сертификата Let’s Encrypt установим требуемое программное обеспечение:

Теперь вы можете сгенерировать сертификат Let’s Encrypt для сервера. Для этого в Nginx необходимо добавить секцию для виртуального хоста, который будет описывать ваш сайт.

Создайте файл /etc/nginx/sites-available/$WEBSITE_NAME со следующей конфигурацией, которая будет основой нашей будущей конфигурации сайта:

Создайте символическую ссылку для активации виртуального хоста:

Теперь закажем сертификат для этого виртуального хоста с помощью certbot. После запуска скрипт попросит вас указать ряд параметров:

В итоге в файле /etc/nginx/sites-enabled/$WEBSITE_NAME должна появиться дополнительная конфигурация, сгенерированная certbot:

Перезапустите nginx для активации изменений:

Для проверки работы SSL проведем эксперимент. Создадим файл index.html и проверим работу сертификата:

Настройка автопродления сертификата. Сертификаты Let’s Encrypt надо продлевать раз в 90 дней, иначе они устаревают. Добавим в CRON задачу вызова автопродления. Для этого в каталоге /etc/cron.monthly создайте скрипт по имени le-renew следующего содержания:

Выдайте ему права на исполнение и протестируйте:

На этом пока что настройку Nginx закончим и установим оставшиеся компоненты.

Установка и настройка MariaDB

Произведем базовую установку MariaDB 10.3, рекомендованную поставщиком для Debian 9 Stretch:

Проверьте корректность установки, соединившись с MariaDB с помощью клиента командной строки:

Соединение работает, если вы получили вывод похожий на приведенный выше.

Если ваш сервер располагает внушительным запасом RAM и ядрами, а сайт будет работать под существенной нагрузкой, вы должны выполнить дополнительные настройки MySQL, чтобы оптимизировать его призводительность, однако, в рамках данной статьи эти настройки не рассматриваются.

Создадим базу данных для сайта и настроим доступ пользователя к ней. В настройке используется пользователь siteuser с паролем secret. Вы должны задать безопасный пароль, который можете сгенерировать с помощью команды apg.

Запишите выбранные имя пользователя, пароль и название базы данных, чтобы не забыть. На этом настройка MariaDB завершена.

Установка и настройка PHP7

PHP версии 7.0 присутствует в стандартной поставке Debian 9 Strech. Установим пакеты из репозитория:

Теперь перезапустим PHP-FPM для активации изменений:

Настройка сайта

Настройку начнем с того, что завершим конфигурацию Nginx для работы с PHP-FPM. Для этого изменим конфигурационный файл сайта /etc/nginx/sites-available/$WEBSITE_NAME.

Добавим перед секцией server следующий фрагмент конфигурации, который задает способ связи с PHP-FPM:

Удалим следующие строки конфигурации:

Добавим следующие строки конфигурации вместо них:

Пример полной конфигурации:

Проверим корректность настроек Nginx и перезапустим его:

Убедимся, что PHP-скрипты работают корректно. Для этого создадим файл index.php в пути /var/www/$WEBSITE_NAME/index.php со следующим содержимым:

Проверим работоспособность скрипта:

Организация доступа к серверу для разработчика

Если настраиваемый сервер планируется для разработки, возможно, требуется настроить FTP-сервер для работы с файлами сайта.

Для настройки мы воспользуемся возможностью Linux создавать нескольких пользователей с одним и тем же UID. В этом случае все учетные записи являются синонимами, но им можно назначать разные пароли и оболочки.

Дело в том, что файлы, которые обслуживаются Nginx хранятся под пользователем www-data. Если мы создадим нового уникального пользователя, то придется для установить на файлы и каталоги широкие права для того, чтобы он мог манипулировать файлами Nginx, кроме того, вероятно, будет возникать путаница с правами и периодическая недоступность ресурсов, связанная с этим.

Вместо этого, мы создадим пользователя developer с таким же UID как и у www-data, соответственно, он сможет получить нормальный доступ к файлам и права будут корректными.

Сначала узнаем UID www-data:

Теперь добавим нового пользователя с повторяющимся UID:

Проверим, что пользователь может нормально войти в систему по ssh с локальной машины:

Если вход получилось осуществить, то пользователь успешно добавлен, а базовая настройка сервера завершена. Для большей безопасности рекомендуем настроить вход в SSH с использованием ключа SSH, а не пароля.

Резервное копирование данных

Важно настроить резервное копирование сразу же, как только вы настроили сервер, не откладывая это действие на потом. Воспользуйтесь нашим пошаговым руководством по настройке инкрементного резервного копирования файлов и баз данных для MySQL и PostgreSQL с помощью Duplicity.

Читайте также: