Девять сайтов девелопера жилых комплексов съехали с обычного виртуального хостинга на два VPS: боевой сервер на Ubuntu, запасной и тестовый на Debian, веб-сервер Nginx, отдельные резервные копии, переключение без простоя. Переезд провёл Евгений Росляков. С 2016 года он делает сайты и занимается их серверами, оформлен как самозанятый, работу начинает с договора, а юридическим лицам выдаёт закрывающие документы. Базируется в Москве, но проекты вне столицы ведёт удалённо.
Заказчик строит жилые комплексы в Москве и области. У каждого комплекса свой сайт, плюс корпоративный сайт компании. Все девять работают на PHP-движках разных лет.
Жили они на виртуальном хостинге, и тот перестал справляться. В дни рекламных запусков маркетологи приводили на сайты много людей, хостинг упирался в лимит процессора, и страницы открывались по несколько секунд. Часть посетителей уходила, а реклама при этом оплачивалась.
Вторая беда — версии. Одному сайту нужен свежий PHP, другой на нём не работает вовсе, а поставить нужные модули на общем сервере нельзя. Резервные копии делал только хостер. Как их восстанавливать и сколько они хранятся, у заказчика никто не знал.
Нужно было забрать сайты с общего сервера, чтобы они держали рекламные пики, и перевезти их так, чтобы продажи не останавливались ни на день.
Хостинг для будущих серверов выбрал российский: провайдер с дата-центром в Москве, близко к посетителям, оплата и документы понятны бухгалтерии заказчика.
Взял два VPS. Боевой работает на Ubuntu 24.04 LTS: пакеты PHP там свежие, и под каждый сайт можно подобрать свою версию. Второй сервер на Debian 12. Это более консервативная система, которая реже меняется, и именно такая нужна для резервных копий и тестовых копий сайтов, где маркетологи проверяют правки перед выкладкой. Копии не лежат там же, где живут сайты: потеряется боевой сервер, и сайты можно поднять из копий на втором.
На боевом сервере стоит Nginx и PHP-FPM. Каждому сайту дан отдельный системный пользователь и свой пул PHP. Если один сайт взломают или он зависнет, соседи не пострадают. Включил сжатие, кеш статики, современный протокол передачи страниц и лимиты запросов от назойливых ботов. Сертификаты выпускаются и продлеваются сами.
Сервер закрыт: файрвол пропускает только нужные порты, вход по SSH только по ключам, обновления безопасности ставятся автоматически. Мониторинг присылает сообщение, если заполняется диск или сайт перестал отвечать.
Переезжал по очереди. За несколько дней до переключения снизил TTL в DNS, чтобы новый адрес разошёлся быстро. Скопировал файлы и базы, каждый сайт проверил через подмену адреса на своём компьютере, перед самым переключением синхронизировал свежие данные и ночью переключил DNS. Старый хостинг оставил про запас на несколько недель.
Для маркетологов написал короткие инструкции: как открыть тестовую копию, как выложить правку, к кому идти, если сайт не открылся.
Сайты выдерживают рекламные запуски. В дни, когда на них приходит много людей, страницы открываются быстро, а лимит процессора не обрезает кампанию посередине.
У каждого сайта своя версия PHP и свои модули. Старый движок не мешает новому, и уговаривать хостера что-то поставить не нужно.
Резервные копии лежат на отдельном сервере, восстановление проверено на деле, а не только описано. Заказчик знает, где его данные и за какое время их можно вернуть.
Сам переезд почти никто не заметил. Заявки в ночь переключения продолжали приходить, утром маркетологи работали как обычно.
Теперь у серверов есть хозяин. Систему надо обновлять, мониторинг надо читать, оплату надо продлевать. Инструкции переданы: заказчик может поручить это своему администратору, а я готов вести серверы по договору. Два самых старых движка работают на последних версиях PHP, которые ещё держат, и обновлять их стоит отдельным проектом. В переезд это не входило.
Если сайты тормозят в дни рекламы, а хостинг не даёт поставить нужное, отправьте мне сообщение через freelance.ru: сколько сайтов и на каких движках. Подскажу, как их лучше перевезти.