суббота, 2 апреля 2016 г.

Веб сервер для хостинга начального уровня на базе домашнего (рабочего) FreeBSD сервера - 1


Внимание!
По причинам описаным здесь, заметка была обновлена до версии FreeBSD 12.1, при этом актуализация самой идеи не проводилась

Данный цикл статей задумывается больше как записная книжка для себя.
Мне не очень часто приходится делать некоторые вещи поэтому хочу описать как я это делал на будущее.
Цель: захостить сайт на офисном сервере.
Идущие по этому пути должны понимать: подобные вещи есть смысл делать только в том случае, если вы можете обеспечить фактически непрерывное нахождение сервера в онлайне и при низких нагрузках на сайт на начальном этапе его эксплуатации.
Исходные данные:
  • Проинсталированный FreeBSD 12.1 сервер файловая система ZFS.
  • На роутере настроены виртуальные сервера или ремап портов (название зависит от роутера) 80 и 443 на наш сервер.

Шаг - 1: Настраиваем jail

Выполняем su.

Коммандой "zpool status" смотрим название нашего ZFS пула, если вы его не знаете.
Примерный вывод команды:
пулов может быть несколько - зависит от конфигурации Вашей системы.
В выбранном пуле создаем точку монтирования для наших клеток:
# zfs create -o mountpoint=/jails zroot/jails
убедимся что файловая система создана:
# zfs list
Примечание: Вам ничто не мешает просто создать папку и в ней разместить папки с клетками, но тогда Вы лишите себя возможности пользоваться преимуществами ZFS в приложении к джайлам. создаем файловую систему для собственно джайла - у меня пока задача захостить старую версию сайта потому назову клетку соответствующе:
# zfs create zroot/jails/oldsite
установим квоту:
# zfs set quota=10G zroot/jails/oldsite
# zfs list
Ставим в клетку систему:
# bsdinstall jail /jails/oldsite/
идет обычная установка FreeBSD
как обычно делаем пароль руту и создаем юзера(не расписываю в силу стандартности процедуры).
добавляем автозапуск джайлов в /etc/rc.conf, добавив строчку:
jail_enable="YES"
jail_list="oldsite"
так как я не собираюсь давать клетке отдельный IP создаю локальный интерфейс:
ifconfig_lo0="inet 127.0.0.2"
создаем конфигурационный файл клеток mcedit /etc/jail.conf:
oldsite {  
           host.hostname = oldsite.local;               # Hostname
           ip4.addr = 127.0.0.2;                        # IP address of the jail
           path ="/jails/oldsite";                      # Path to the jail
           mount.devfs;                                 # Mount devfs inside the jail
           exec.start = "/bin/sh /etc/rc";              # Start command
           exec.stop = "/bin/sh /etc/rc.shutdown";      # Stop command
}
само собой, Вы можете для этого использовать, как принято говорить свой любимый текстовый редактор.

Запускаем клетку:
# service jail start oldsite
Starting jails: oldsite.
проверяем что работает:
# jls
   JID  IP Address      Hostname                      Path
     1  127.0.0.2       oldsite.local                 /jails/oldsite
Теперь добавим резервное копирование, для чего будем использовать механизм ZFS снапшотов.

Для управления созданием и удалением снапшотов ставим утилиту zfsnap:
# pkg install zfsnap
параметры работы утилиты задаются в конфигурационном файле /etc/periodic.conf
daily_zfsnap_enable="YES"
#daily_zfsnap_fs="zroot/jails/oldsite"
daily_zfsnap_recursive_fs="zroot/jails"
daily_zfsnap_ttl=1m
daily_zfsnap_delete_enable="YES"
  1. строчка, относящаяся к zfsnap, включает его выполнение раз в день
  2. строчка задает список каталогов через пробел для которых делаются снапшоты
  3. строчка задает список каталогов для рекурсивного создания снапшотов (будут созданы для всех вложенных файловых систем, избавляет от необходимости настраивать каждую индивидуально).
  4. строка задает время хранения снапшота.
  5. строка говорит, что необходимо удалять старые.
Теперь можно запустить periodic daily, но помните что выполнятся все системные скрипты, обычно выполняемые в ночное время или просто подождать до утра.

По любому на следующий день вы должы наблюдать следующий результат выполнения комманды
zfs list -t snapshot
Теперь мы в любой момент можес осуществить откат файловой системы коммандой
zfs rollback zroot/jails/daily-2020-03-06_16.36.17--1m
Mожно переходить к настройке системы в джайле, но об этом в следующей заметке.

Комментариев нет:

Отправить комментарий