Настройка сайтов на 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 для сайта. Отсутствие такой важной функции меня удивило, но её можно реализовать с помощью шаблонов или прямо указать версию в конфигах сайта:

Для начала ставим нужные версии php
yum 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 пароль не требуется, а сервер начинают брутфорсить с первых минут после запуска.

Вам может также понравиться...