База знаний

Часто задаваемые вопросы, на которые мы уже ответили

Панель управления Vesta

Установка панели

Vesta — популярная бесплатная панель управления сервером.

Создать бокс с предустановленной панелью Vesta на базе ОС Ubuntu можно из Панели управления в пару кликов.

Для созданных ранее боксов и при использовании другой ОС Vesta устанавливается двумя командами – скачиванием скрипта с источника панели Vesta и его выполнением на VDS.

Нам понадобится SSH-клиент и данные для доступа к боксу: IP-адрес, root и его пароль.

Менеджер пакетов может отличаться в зависимости от ОС. В примере показана установка на Ubuntu, поэтому используется apt-get.

  • Скачиваем скрипт установки:
curl -O http://vestacp.com/pub/vst-install.sh
  • Обновляем индекс пакетов
apt-get update
  • Запускаем установщик Vesta
bash vst-install.sh
  • Если по умолчанию cURL в сборке отсутствует, его необходимо установить
apt-get install curl

При удачном завершении установки в консоли будет

=======================================================

_|      _|  _|_|_|_|    _|_|_|  _|_|_|_|_|    _|_|   
_|      _|  _|        _|            _|      _|    _| 
_|      _|  _|_|_|      _|_|        _|      _|_|_|_| 
_|  _|    _|              _|      _|      _|    _| 
_|      _|_|_|_|  _|_|_|        _|      _|    _| 

Congratulations, you have just successfully installed Vesta Control Panel

https://test.domain.ru:8083
username: admin
password: bN7YnOBNmc

We hope that you enjoy your installation of Vesta. Please feel free to contact us anytime if you have any questions.
Thank you.

--
Sincerely yours
vestacp.com team

Базовые операции в веб-интерфейсе

Создание почтового ящика

Для создания почтового ящика переходим в раздел «MAIL», нажимаем на кнопку «ADD ACCOUNT» рядом с именем почтового домена, далее в полях формы указываем имя ящика и пароль. При необходимости данные для авторизации можно отправить на желаемый почтовый адрес.

После нажимаем на кнопку «ADD».

Создание FTP-аккаунта

Для создания FTP-аккаунта переходим в раздел «WEB», нажимаем на кнопку «EDIT» рядом с именем домена, для которого требуется создать аккаунт, пролистываем открывшуюся страницу вниз, отмечаем галочкой «Additional FTP» и вводим данные для нового аккаунта.

После нажимаем на кнопку «SAVE».

Работа с заданиями Cron

Редактирование заданий производится в разделе «CRON».

Добавить задание можно с помощью кнопки «+» (ADD CRON JOB). Поля для времени выполнения задания могут быть заполнены автоматически, если выбрать периодичность в форме справа в нижней части раздела.

Для изменения уже добавленного задания нажимаем на кнопку «EDIT» рядом с ним.

Работа с резервными копиями

Для создания резервной копии переходим в раздел «BACKUP», нажимаем на «+» (CREATE BACKUP). Когда операция будет завершена, на адрес администратора поступит уведомление.

Созданный бекап можно скачать, восстановить или удалить. С помощью кнопки «CONFIGURE RESTORE SETTINGS» рядом с именем копии можно изменить параметры восстановления.

Изменить количество максимально возможных резервных копий можно в разделе «PACKAGES», кликнув на «EDIT» рядом с шаблоном (по умолчанию DEFAULT) и изменив значение поля «Backups». Как правило, по умолчанию данное значение равно 3.

Создание базы данных

Для создания базы данных переходим в раздел «DB», нажимаем на «+» (ADD DATABASE), заполняем необходимые поля. Данные для авторизации можно отправить на желаемый почтовый адрес.

После нажимаем на кнопку «ADD».

Изменение параметров PHP

Для изменения параметров PHP разделе «SERVER» нажимаем на «CONFIGURE» рядом с любым веб-сервером, а затем нажимаем на «CONFIGURE PHP.INI». Можно открыть по прямой ссылке: https://IP-БОКСА:8083/edit/server/php/

Сперва отображается форма с полями для изменения следующих параметров:

max_execution_time
max_input_time
memory_limit
error_reporting
display_errors
post_max_size
upload_max_filesize

Чтобы отредактировать файл php.ini напрямую, нажимаем на ссылку «ADVANCED OPTIONS» под полями формы.

Вернуться обратно можно с помощью кнопки «BASIC OPTIONS».

Для сохранения изменений нажимаем кнопку «SAVE».

Работа с PhpMyAdmin

Перейти в PhpMyAdmin можно из раздела «DB» с помощью кнопки «PHPMYADMIN» или по прямой ссылке: https://IP-БОКСА:8083/phpmyadmin/

По умолчанию размер загружаемого дампа базы данных не может превышать 2Мб, чего недостаточно большинству дампов.

Чтобы это исправить, необходимо изменить параметры post_max_size и upload_max_filesize в настройках панели по инструкции из предыдущего пункта.

Если при работе с PhpMyADmin возникают ошибки или у пользователя базы данных не работают некоторые функции, то можно воспользоваться патчем от разработчиков . Вносимые исправления и принцип работы скрипта описаны в теме.

Установка произвольного SSL-сертификата

В веб-интерфейсе Vesta заходим в раздел «WEB», нажимаем на кнопку «EDIT» рядом с именем домена, прокручиваем вниз, отмечаем галочками «SSL support» и вводим необходимые данные о сертификате:

SSL Certificate — поле для сертификата домена.
SSL Key — поле для приватного ключа сертификата.
SSL Certificate Authority/Intermediate — поле для bundle (корневого сертификата и промежуточной цепочки), не является обязательным.

Установка сертификата Let's Encrypt

Важно: Установка сертификата Let's Encrypt возможна только при условии, если домен и его поддомен www резолвятся в IP-адрес бокса.

В веб-интерфейсе

Заходим в раздел «WEB», нажимаем «EDIT» рядом с именем домена, прокручиваем вниз, отмечаем галочками «SSL support»«Let's Encrypt support» и сохраняем настройки(кнопка «SAVE»).

В актуальной версии панели это достаточно для автоматической установки SSL-сертификата.

Если панель не обновлена или автоматическая установка завершилась ошибкой, либо требуется задать специфические параметры сертификата, SSL-сертификат необходимо установить вручную из консоли.

В консоли

SSL-сертификат Let's Encrypt можно установить на комбинацию любой ОС и веб-сервера с помощью certbot . После выбора параметров в выпадающем списке произойдет перенаправление на страницу с конкретными рекомендациями по установке.

Для упрощения взаимодействия Vesta и Let's Encrypt существует утилита letsencrypt-vesta .

Автоматизировать процесс установки можно, запустив на аккаунте следующий скрипт ssl.sh (приложен к статье), его код:

#!/bin/bash
# How to Install Let’s Encrypt Certificate on VestaCP

# Go to folder
cd /usr/local

# Clone git repositories
git clone https://github.com/letsencrypt/letsencrypt.git
git clone https://github.com/interbrite/letsencrypt-vesta.git
git clone https://github.com/certbot/certbot.git

# Create the “webroot” directory where Let’s Encrypt will write the files needed for domain verification.
mkdir -p /etc/letsencrypt/webroot

# Now also symlink the Apache conf file in your Apache conf.d directory.
ln -s /usr/local/letsencrypt-vesta/letsencrypt.conf /etc/apache2/conf.d/letsencrypt.conf

# Symlink letsencrypt-auto and letsencrypt-vesta in /usr/local/bin for easier access. 
ln -s /usr/local/letsencrypt/letsencrypt-auto /usr/local/bin/letsencrypt-auto
ln -s /usr/local/letsencrypt-vesta/letsencrypt-vesta /usr/local/bin/letsencrypt-vesta

# Restart server
service apache2 restart

# Install at
apt-get install at

# Command for get SSL certificate and automatic Renewals every 60 days
letsencrypt-vesta -a 60 'USERNAME' 'DOMAIN'

Путь /etc/apache2/conf.d может отличаться в зависимости от сборки и иметь вид /etc/httpd/conf.d
Вместо 'USERNAME' и 'DOMAIN' нужно указывать имя пользователя панели Vesta и имя домена, для которого будет выпущен сертификат.

Ключ -a сообщает о необходимости обновления сертификата каждые N дней (в примере — 60).

Удачное завершение установки выдаст:

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/test.moodle.pzdk.ru/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/test.moodle.pzdk.ru/privkey.pem
Your cert will expire on 2018-04-10. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew" 
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le

Error: SSL=no doesn't exist
warning: commands will be executed using /bin/sh
job 1 at Sun Mar 11 16:47:00 2018
Renewal scheduled for 60 days.

Error и warning в данном случае можно проигнорировать. Запись "Renewal scheduled for 60 days." означает, что обновление сертификата запланировано через 60 дней.

Для завершения настройки в веб-интерфейсе Vesta заходим в раздел «WEB», нажимаем кнопку «EDIT» рядом с именем домена, прокручиваем вниз, отмечаем галочками «SSL support»«Let's Encrypt support» и сохраняем настройки (кнопка «SAVE»).

Когда letsencrypt-vesta уже установлена и настроена, для добавления сертификата к новому домену newdomain.ru достаточно выполнить в консоли

letsencrypt-vesta -a 60 'username' 'newdomain.ru'

Изменение правил iptables

В веб-интерфейсе панели переходим в раздел «FIREWALL»: https://IP-БОКСА:8083/list/firewall/ .

Здесь можно редактировать и удалять существующие правила, а также добавлять новые.

Форма для добавления новых правил имеет 2 выпадающих списка: первый позволяет выбрать действие (DROP или ACCEPT), второй - протокол (TCP,ICMP,UDP).

Далее идут формы для ввода номера порта и IP-адреса (можно использовать маски; чтобы задать правило для всех, надо указывать 0.0.0.0/0). Комментарий - необязательное поле.

Таким образом можно добавлять правила только для входящих соединений. Кроме того, это могут быть только простые правила.

Например, можно разрешить обращения к порту 25 для всех. Выбираем действие ACCEPT, протокол TCP, в поле порт вводим 25, в поле IP - 0.0.0.0/0 . В итоге в iptables запись будет иметь вид:

-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT

Чтобы новые правила сохранились после перезагрузки, в консоли выполняем:

v-update-firewall

Изменение конфигурационных файлов сервисов

В веб-интерфейсе переходим в раздел «SERVER»: https://IP-БОКСА:8083/list/server/ .

Здесь выбираем сервис, в конфигурацию которого необходимо внести изменения. Нажимаем на кнопку «CONFIGURE» рядом с именем сервиса, перед нами открывается файл с его настройками.

После внесения изменений, чтобы они применились сразу, отмечаем галочкой «RESTART» перед кликом на кнопку «SAVE».

Если что-то было внесено неправильно, панель сообщит о невозможности перезапустить сервис, и вернет конфиг к прежнему виду.

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

Конфигурационные файлы веб-серверов для сайта

Панель Vesta позволяет использовать разные настройки веб-сервера для каждого сайта.

Для этого существуют конфигурационные файлы, которые хранятся в директории /home/admin/conf/web/ и имеют вид:

/home/admin/conf/web/domain.ru.nginx.conf
/home/admin/conf/web/domain.ru.apache.conf

Настройка open_basedir для Nginx+PHP-FPM

По умолчанию связка Nginx+PHP-FPM в VestaCP не позволяет включить директиву open_basedir.

Сделать это можно с помощью шаблонов, которые для php-fpm хранятся в директории /usr/local/vesta/data/templates/web/.

Для включения open_basedir необходимо:

  • Создаём новый файл-шаблона с произвольным именем, например, socket.tpl.
  • Открываем файл socket.tpl и разрешаем доступ к директории с файлами доменов и к директории для временных файлов следующим образом:

    php_admin_value[open_basedir] = /home/%user%/web/:/home/%user%/tmp/
    • Если требуется, можно аналогичным образом добавить другие директории в список разрешенных.
  • В веб-интерфейсе переходим к настройкам доменного имени и для Backend Template выбираем созданный шаблон.
  • Сохраняем изменения.

Использование нескольких версий PHP на сервере с VestaCP

Вместе с панелью управления Vesta по умолчанию устанавливается PHP 7.0. Если требуется использовать более старую версию PHP, сделать это можно следующим образом.

В качестве примера установим версию PHP 5.4.

Создаем каталог для исходников:

mkdir /etc/php/src

Загружаем и распаковываем архив с исходниками:

wget -O /etc/php/src/php-5.4.45.tar.bz2 http://de1.php.net/get/php-5.4.45.tar.bz2/from/this/mirror
cd /etc/php/src/
tar -xjf php-5.4.45.tar.bz2
cd php-5.4.45

Создаем каталог, где будет находится наша версия PHP 5.4:

mkdir /etc/php/php54

Конфигурация перед компиляцией(обратите внимание на переменную —prefix=, она указывает на каталог, куда будет скопмпилирована PHP):

./configure --prefix=/etc/php/php54 --with-config-file-path=/etc --with-regex=php --disable-rpath --disable-static --with-pic --with-layout=GNU --enable-calendar --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-bcmath --with-bz2 --enable-ctype --with-cdb --with-iconv --enable-exif --enable-ftp --with-gettext --enable-mbstring --with-onig=/usr --with-pcre-regex=/usr --enable-shmop --enable-sockets --enable-wddx --with-libxml-dir=/usr --with-zlib --with-kerberos=/usr --with-openssl --enable-soap --enable-zip --with-mhash=yes --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-mysql=mysqlnd --with-mysqli=mysqlnd --enable-pdo --with-pdo-mysql=mysqlnd --enable-exif --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr --with-zlib-dir=/usr --with-mcrypt=/usr --with-mhash --with-xsl=/usr --enable-zip --enable-cgi --with-curl --with-gd --enable-pcntl --enable-mbregex --enable-gd-native-ttf --enable-dba=shared --enable-intl --with-readline=/usr --enable-simplexml --with-libdir=/lib/x86_64-linux-gnu --with-config-file-scan-dir="$instdir"/etc --with-pspell

Выполняем компиляцию:

make
make install

Включаем CGI для Apache:

a2enmod cgi

Переключение версий будет осуществляться с помощью шаблонов apache. Скопируем существующий шаблон phpcgi:

cp /usr/local/vesta/data/templates/web/apache2/phpcgi.sh /usr/local/vesta/data/templates/web/apache2/php54.sh
cp /usr/local/vesta/data/templates/web/apache2/phpcgi.stpl /usr/local/vesta/data/templates/web/apache2/php54.stpl
cp /usr/local/vesta/data/templates/web/apache2/phpcgi.tpl  /usr/local/vesta/data/templates/web/apache2/php54.tpl

После чего открываем файл /usr/local/vesta/data/templates/web/apache2/php54.sh и заменяем:

wrapper_script='#!/usr/bin/php-cgi -cphp5-cgi.ini'

на

wrapper_script='#!/etc/php/php54/bin/php-cgi -cphp5-cgi.ini'

Последним пунктом потребуется перезагрузить Vesta:

service vesta restart

Теперь в разделе «Web»«Domain.ru»«EDIT» с помощью пункта «Web Template» мы можем установить нужную версию PHP.

Изменение основной версии PHP CentOS

Для изменения основной версии PHP операционной системы:

  • Останавливаем работу веб-сервера:
$ service httpd stop
  • Удаляем текущую версию PHP:
$ yum remove php -y
  • Добавляем репозиторий, содержащий PHP 5.6:
$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
  • устанавливаем новую версию PHP:
$ yum install php php-bcmath php-cli php-common php-gd php-imap php-mbstring php-mcrypt php-mysql php-pdo php-soap php-tidy php-xml php-xmlrpc php-pecl-apc phpMyAdmin roundcubemail php-opcache php-xdebug -y
  • Запускаем веб-сервер:
$ service httpd start

Блокировка IP-адресов, с которых поступает более 100 запросов к сайту в секунду

Реализация настройки сделана на основное nginx+fail2ban.

Порядок действий по настройке блокировки:

  • Подключаемся к боксу по SSH под пользователем root.
  • Вносим изменения в /etc/nginx/nginx.conf (внутри http):
limit_req_zone $binary_remote_addr zone=one:10m rate=100r/s;
  • В конфигурационный файл сайта (/home/admin/conf/web/ДОМЕН.nginx.conf) указываем (внутри раздела server):
limit_req zone=one burst=1 nodelay;
  • Выполняем перезагрузку nginx:
service nginx restart
  • В директории /etc/fail2ban/filter.d/ создаем файл с именем nginx-req-limit.conf, добавляем в него содержимое:
[Definition]
failregex = ^\s*\[error\] \d+#\d+: \*\d+ limiting requests, excess: [\d\.]+ by zone "[^"]+", client: 
ignoreregex =
  • В файл /etc/fail2ban/jail.local добавляем:
[nginx-req-limit]
enabled = true
filter = nginx-req-limit
action = vesta[name=WEB]
port = http,https
logpath = /var/log/apache2/domains/*error.log
findtime = 600
bantime = 7200
maxretry = 10
  • Выполняем перезагрузку fail2ban:
service fail2ban restart
  • Сохраняем новые настройки:
v-update-firewall
Была ли эта статья полезной?