Настройка сайтов на VDS хостинге с панелью Vesta CP
«Привык администрировать сайты с панелью ISPManager, но зачем платить больше, если все основное есть и в Vesta Control panel?» — подумал я, и для нового хостинга выбрал её в качестве контрольной панели…
Как оказалось позже есть далеко не всё, но при наличии минимальных навыков работы с Linux её функционала вполне достаточно.
Итак переезжаем на новый сервер:
1. Архивируем сайты на старом сервере, копируем к себе, копируем базы.
zip -r имя-сайта.zip каталог-сайта
или tar -czvf имя-сайта.tar.gz каталог-сайта
mysqldump -uПользовательБД -p ИмяБазы > ./имя-сайта.dump.sql
2. В VestaCP создаем юзеров, сайты и базы (под нужными пользователями)
обычно доменные записи прописываются у регистратора, а почта хранится где-нибудь на Яндексе, поэтому галочки «Поддержка DNS» и «Поддержка почты» стоит убрать. Например, я их оставил по умолчанию, в итоге письма с форм обратной связи не уходили на ящики на своем же домене.
3. Распаковываем архивы под нужными юзерами в нужные каталоги
sudo -u пользователь unzip ./архив-сайта.zip -d ./каталог сайта
илиsudo -u пользователь tar -xvf архив-сайта.tar.gz
4. Импортируем базы
mysql -u ПользовательБД -p ИмяБазы < web-site.dump.sql
или через phpMyAdmin, но для больших файлов надо будет снять ограничение на размер загружаемого файла (или в php.ini увеличить параметры или загрузить дампы в определённый каталог на сервере)
5. Настраиваем сайты и проверяем что всё работает — где то надо будет указать новые пути каталогов, где то изменить параметры подключения к БД, где то сбросить кеш (для Laravel с помощью artisan) и т.п.
Ошибки и дополнительные настройки
1. По умолчанию в php отключено использование коротких тегов и задано ограничение на размер закачиваемых файлов в 2Мб.
Чтобы исправить в /etc/php.ini
указываем short_open_tag On
увеличиваем upload_max_filesize
и post_max_size
Где лежит загружаемый конфигурационный файл (а заодно и другие параметры) можно узнать, создав в корне сайта php-файл с функцией phpinfo(), но не забудьте удалить его после просмотра.
2. Если сайты работают в режиме FCGI может возникнуть ошибка max request length. Для исправления надо в /etc/httpd/conf.d/fcgid.conf
прописать FcgidMaxRequestLen 32000000
подробнее тут
3. Из коробки в VestaCp в отличии от ISPManager нельзя задать конкретную версию php для сайта. Отсутствие такой важной функции меня удивило, но её можно реализовать с помощью шаблонов или прямо указать версию в конфигах сайта:
Для начала ставим нужные версии phpyum install php71
yum install php56
Требуемые модули устанавливаются командами.yum install php71-php-imagick
yum install php71-php-zip
yum install php56-php-mysqlnd
Далее в каталоге каждого сайта есть файл cgi-bin/fcgi-starter
в котором изменив последнюю строкуexec /usr/bin/php-cgi
например, на exec /usr/bin/php71-cgi
задаем требуемую версию PHP.
Применяем изменения перезагрузив модули веб-сервераsystemctl reload httpd
Всё, сайт работает на нужной версии php. Но если сделать изменения через веб-интерфейс Весты, например, включить бесплатный SSL от Let’s Encrypt, изменения в файле cgi-bin/fcgi-starter
перезапишутся.
Поэтому желательно всё-таки сделать шаблоны с разными версиями PHP, и выбрать нужный в интерфейсе:
Мне попались такие ссылки по этой теме
Несколько версий php
Мультиверсионность php на сервере с VestaCP
Подключение разных версий php в панели Vesta CP
А здесь описано создание шаблонов скриптом.
4. Включить бекапы в настройках сервера, если выключены. Бекапы хранятся за последние три дня, но этот и другие параметры можно настроить в конфигурационных файлах VestaCP.
Можно задать выгрузку на удаленный ftp-сервер.
5. Выключить или удалить лишние службы, чтобы не потребляли ресурсы сервера. Например, мне не нужны named, dovecot и spamassassin (который сам по себе потреблял много памяти).
А вот fail2ban можно включить, если запуститься.
По панели Vesta Вам также могут пригодится статьи Резервное копирование на Яндекс Диск (на примере Vesta) и Удаляем dns server (named service) из Vesta
6. Чтобы обезопасить сервер от брутфорса, выключаем доступ по паролю:
сгенерировать RSA-ключ, публичную часть положить в юзер/.ssh/authorized_keys
, приватную сохранить у себя на локальном компьютере.
На сервере, в файле ets/ssh/sshd_config
задаем PasswordAuthentication no
— для панели Vesta пароль не требуется, а сервер начинают брутфорсить с первых минут после запуска.