Мой опыт работы с Plesk

в 10:00, , рубрики: Plesk, Блог компании RUVDS.com, Серверное администрирование, системное администрирование, хостинг

Хочу поделиться некоторыми впечатлениями о нужности или ненужности такой вещи, как контрольная панель для коммерческого односерверного веб-проекта при наличии очень part time админа. История началась пару лет назад, когда знакомые знакомых попросили меня сопроводить покупку бизнеса — новостного сайта — с технической точки зрения. Нужно было слегка вникнуть, что на чем работает, проследить, чтобы все необходимые реквизиты были переданы в надлежащем виде и объеме, и стратегически прикинуть, что можно улучшить.

Мой опыт работы с Plesk - 1


Сделка состоялась, скрипач стал не нужен. Конец. На самом деле нет.

Сайт крутился на двухъядерной 4х-гиговой ВМке на Linode, на каком-то замшелом Debian5 с аптаймом дней в 400 и воооот таким списком необновленных пакетов. Веб-часть на самописной ЦМСке, nginx, php5.3 FPM, mysql тюненая Percona. В принципе, работало.

Параллельно с разговорами со мной новый владелец искал программиста для приведения проекта к ожиданиям. Нашел. Программист оценил трафик и объемы и решил, что умеет в оптимизацию и cost management. Он смигрировал весь сайт на 700-рублевый шаред хостинг под управлением привычного ему IS****er. Через несколько дней снова звонок от владельца: «все тормозит и кажется нас поломали». Я пытался исправить ситуацию через панель, но после некоторого времени бесплодных попыток поменять версию ПХП или хендлер с fcgi на fpm, сдался, и полез в шелл. Там я нашел включенный дебаг, который светил на весь интернет паролем от мускуля, 777 на некоторые папки, которые к тому моменту трещали от залитой малвари и подобную дичь. Владелец осознал и решил, что экономить на хостинге, программисте, и админе, который бы посматривал одним глазком, как идут дела — неправильно.

Едем на RuVDS. Чуть ближе, чем британская Linode, и если вдруг захочется хранить персональные данные и все вот это, не придется больше никуда переезжать. Так как проект планировалось расширять, взяли ВМку «на вырост»: 4 ядра, 8 гиг памяти, 80ГБ диска. Не то чтобы я не умею в конфиги nginx руками, просто энтузиазма заниматься этим проектом настолько интимно у меня не было (см.выше про part time). Потому — поставил Plesk (тут я опущу подробности установки, потому что их по большому счету нет: запустил инсталлер, поставил пароль на админа, ввел ключ –всё), в то время это был 17.0. Базовые настройки сносно работают из коробки, есть fail2ban и последние доступные версии PHP, nginx. 

Наверно, стоит остановиться и объяснить, почему его. Так как занимаюсь я такими вещами редко, и никакого особенного инструментария и набора заготовок на каждый случай у меня нет, понятно было, что нужна какая-то автоматизация базовых вещей, чтобы во-первых быстро, во-вторых безопасно, в третьих все best practices кто-то уже внедрил.

Итак, поставил. Времени сэкономил прилично, перезапуск сайта на новом сервере получился практически моментальным. Оставалось пильнуть конфиг мускуля, выдав ему половину памяти и увеличив число buffer pools, и отдать nginx половину ядер (Плеск не трогает глобальные конфиги), и в течение пары дней позаходить в шелл посмотреть на статы mysqltuner. Да, и купил платный ImunifyAV из каталога расширений, чтобы избавиться от залитой малвари. Нашлись что-то 11000 зараженных файлов. Мерзость в том, что в статику вливались обфусцированные куски кода, и чистить это руками было бы совсем уныло. Сначала я попробовал ClamAV, но он, как оказалось, такие штуки не берет, а ImunifyAV смог. Причем вылеченные файлы остаются в рабочем состоянии, просто удаляется кусок с малварью.

Арифметика простая: 50$ в месяц за ВМку, 10$ за Плеск (на самом деле меньше, потому что купили сразу на год со скидкой в два месяца) и 3$ за антивирус. Либо много чемоданов денег за мое время, которое я бы провел на сервере на первых порах разгребая эти конюшни вручную. Владельца такой расклад вполне устроил.

Мой опыт работы с Plesk - 2

Тем временем нашли нового программиста. Договорились с ним о распределении ответственности, сделали поддомен для тестовой версии, и пошла работа. Он пилил новую версию сайта на Laravel, а я посматривал на fail2ban%).

Мой опыт работы с Plesk - 3

Интересно, что поток любопытствующих не прекращается и в списке забаненных всегда около сотни адресов. Эффект интересный: в частности, обычно, если я захожу в шелл, на приветствии вижу около 20000-30000 неудачных попыток захода по SSH. С включенным fail2ban около 70. Вложенных усилий: 0. Без капельки дегтя, к сожалению, не обошлось. По умолчанию был «полувключен» WAF (modsecurity): в режиме обнаружения. То есть он писал подозрительную активность в лог, но фактически никаких действий не предпринимал. А fail2ban без разбора читал все логи, согласно включенным jails, и мочил все, что шевелится. Таким образом мы забанили половину редакции :D. Пришлось отключить этот jail, а нужные IP-адреса для надежности внести в белый список. Усилий вложено: два раза мышкой потыкать и научить редакторов сказать свой IP-адрес.

Мой опыт работы с Plesk - 4

Что сразу пришлось по вкусу программисту — возможность заливать базы данных прямо в панели и быстрый доступ к phpMyAdmin

Мой опыт работы с Plesk - 5

Что понравилось мне — логи и бэкапы. Логи пишутся и ротируются сами из коробки; бэкапы настраиваются очень просто. В самое вялое время делается полный бэкап, где-то на 10 гигов, и потом каждый день по инкрементальному, мегабайт по 200, в течение недели. Восстановление гранулярное, до конкретного файла или базы данных. Если нужно восстановить из инкрементального, то не нужно корячиться сначала с полным и рестором всей цепочки, Плеск делает все сам. Заливать бэкапы можно куда угодно: на фтп, на dropbox, s3 bucket, google drive и прочая.

Мой опыт работы с Plesk - 6

День Ж: программист наконец додедал новый движок, мы его залили в прод, импортировали старые данные и сели выбирать цвет своих будущих Мазерати. До сих пор сидим выбираем.

Начались первые проблемы. Новый сайт был ожидаемо тяжелее старого, но реальная грабля была в том, что для привлечения трафика пользовались среди прочего Yandex.Zen, который нагонял посетителей пачками. Сайт загибался при 150 одновременных подключениях (я не говорю про RPS, потому что не замеряли). Начали тыкать кнопки и крутить ручки в области настроек php_fpm:
 

Мой опыт работы с Plesk - 7

Оп, уже держит 500 коннектов. По мере приложения кредитки к средствам продвижения волны трафика стали больше. Следующий milestone 1000 одновременных подключений. Здесь пришлось уже порефайнить код и посмотреть в душу мускулю. Плеск в этом не помог, но этого особо и не ждали. Включили slow queries log, навешали индексов на базу, убрали лишние запросы из кода, еще раз причесали конфиг mysql по советам mysqltuner.

Новый челлендж — 2000 коннектов. Как раз успела выйти версия Plesk 17.8, в которой помимо прочего прикрутили nginx caching. Обновились (на удивление легко). Пробуем. Работает! И тут же наступили в мягкое, перестал работать фид Яндекс.дзена. Сайт работает, фид не работает. Не работает фид, нет трафика. Атмосфера накаляется. Под давлением обстоятельств и от недостатка фантазии полез сразу straceить nginx и нашел, что искал. Оказывается, в какой-то момент глупый nginx закэшировал залетную 500-ю ошибку в качестве ответа на яндексовый get feed.xml. Исправили, добавив исключения в настройки кэша:

Мой опыт работы с Plesk - 8

Понятное дело, что владельцу нужно ЕЩО, волны потихоньку увеличиваются. Пока справляемся, но заблаговременно начали экспериментировать с memcached, благо Laravel поддерживает его почти из коробки. Ставить memcached руками для «поиграться» как-то не хотелось, поэтому поставили докер образ. Прямо из панели.

Мой опыт работы с Plesk - 9

Ну ладно, вру, пришлось зайти в шелл и поставить модуль через pecl. Прямо по инструкции. Сказать о приросте пропускной способности пока нечего, достаточно больших наплывов не было. Движок сайта подцепился на localhost:11211, статы показываются, память жрется. Если понравится, посмотрим, что делать дальше. Либо так и оставим, либо поставим «настоящий» прямо в Ось. Либо таким же образом попробуем redis

Потом понадобилось приделать почтовую рассылку. Никаких релеев, только smtp authentication. Завел почтовый адрес, через его реквизиты через PHP делаем рассылку.

Мой опыт работы с Plesk - 10

Не так давно вышел Plesk Obsidian (18.0), обновились по прошлому опыту без страха. Все прошло очень гладко, даже рассказать не о чем. Из приятного — сильно подтянулся по качеству интерфейс, осовременился и стал в некоторых местах удобнее. Прикольная штука Advanced Monitoring на Grafana.

Мой опыт работы с Plesk - 11

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

Раз уж я говорю об интерфейсе, он адаптивный и реально неплохо работает на телефоне. На ранних стадиях, пока мы пытались нащупать оптимальные настройки PHP и прочего, это сильно выручало. И особенно когда программист в приступе рабочего энтузиазма что-то делает в 23 часа, а я в приступе рабочего энтузиазма пью водку в бане, и СРОЧНО нужно что-то переключить.

Мой опыт работы с Plesk - 12

О, кстати. На картинке видно, появился PHP Composer. Пока не игрались с ним, но, скажем, для того же Laravel он может сэконоимить пару логинов в шелл и какое-то время на установку зависимостей. Такая же система есть для Node.JS и Ruby.

С SSL все просто. Если домен резолвится куда положено, Let’s Encrypt делается одним кликом и обновляется дальше сам, причем как на сам домен, так и на субдомены, и даже почтовые сервисы.

Мой опыт работы с Plesk - 13

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

Думаю, можно подытожить. Для случая, когда админа нет, или его мало, когда цена хостинга и крутящегося на нем сайта(ов) превышает, ну, скажем, 100у.е., когда речь не идет о скотском шареде по 1500 сайтов на сервере, когда перед принимающим решение стоит выбор нанять админа на полставки, либо купить софт и завести админа на «полшишки», либо вообще его не заводить — смысл определенно есть. С точки зрения удаленного админа — то же самое. 10$ в месяц, а экономит времени и придает гибкости в работе на очень большую сумму. Если, к примеру, меня сильно попросят взять аналогичный проект под крылышко, я буду настаивать на перевозе на Plesk.

Мой опыт работы с Plesk - 14

Автор: oldadmin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js