Установка и настройка VestaCP — бесплатной панели управления хостингом
В моем распоряжении оказался производительный виртуальный сервер, который хотелось использовать под веб хостинг. Для удобного управления сервером было принято решение выполнить установку и настройку бесплатной панели управления хостингом — VestaCP. Я рассмотрел все основные моменты для подготовки панели к реальной эксплуатации.
Меня попросили найти более ли менее производительный сервер в Европе и подготовить его для хостинга своих проектов. Если не знаешь готовых вариантов, то бывает не просто сходу найти подходящий хостинг. Одним из требований была круглосуточная русская тех поддержка, так как предполагалось, что сервером будут управлять люди, не сильно разбирающиеся в этом вопросе, поэтому и нужна была в том числе панель управления.
Мой выбор пал на keyweb.ru, конкретно взял вот эту линейку — MVS L14 (тарифы с включенным полным администрированием, поэтому такая цена, там есть и без администрирования, будет гораздо дешевле) и тариф с 2 ядрами, 8 гигами и 150 SSD. Такой сервер позволит хостить десятки не сильно нагруженных сайтов. Из плюсов, которые подходили конкретному заказчику были:
- Как уже упоминалась, круглосуточная русская поддержка с прямыми российскими номерами.
- Расположение серверов в Европе.
- Возможность использовать сервера как с администрированием, так и без. То есть если заказчик решит, что ему не хочется самому искать системного администратора для настройки сервера, в данном случае меня, он может перейти на полную техническую поддержку по администрированию сервера от хостера.
Что понравилось лично мне, как админу — для управления виртуальными машинами дают доступ к стандартной панели управления proxmox, с соответствующим ограничением прав. Мне эта панель нравится больше, чем популярный и чаще всего встречаемый vmmanager от ispsystem.
Уже после написания статьи о VestaCP узнал, что у хостера есть своя бесплатная панель управления KeyHelp. Стало любопытно на нее посмотреть, поэтому напишу обзорную статью и по ней. Сразу видно, что она более функциональная, но лично меня VestaCP подкупила своей простотой и наличием почти всего необходимого. Но об этом по порядку дальше.
Установка vestacp
Установка бесплатной панели управления хостингом vestacp одинакова проста на любой поддерживаемой операционной системе — RHEL/Centos, Debian, Ubuntu. Разработчики предоставляют готовый скрипт для установки, который достаточно загрузить с их сайта и запустить.
Нюансы возникают только в составе компонентов, которые будет включать в себя панель. Существуют несколько вариантов установки web сервера:
- Web сервер на базе nginx+apache+php
- Web сервер на базе apache+php
- Web сервер на базе nginx+php-fpm
Помимо различных веб серверов, можно управлять наличием следующих программ в составе панели:
- Ftp сервер vsftp.
- Firewall iptables и fail2ban для автоматического управления списками блокировок по ip.
- Dns сервер named.
- Различные комбинации почтового сервера.
- Сервер БД Mysql либо Postgresql.
Для получения готовой команды для установки vesta cp с подходящим составом компонентов внутри, можно воспользоваться удобной формой на странице с установкой на официальном сайте — http://vestacp.com/install/
Я буду устанавливать панель в следующей конфигурации.
Поясню свой выбор. На сервере не будет сайтов, которым был бы нужен apache, поэтому я им не воспользуюсь. Связка nginx+php-fpm дает более высокую производительность, поэтому я использую ее.
DNS и почтовый сервер можно легко получить бесплатно много где, например у Яндекса. Я обычно пользуюсь им. Последнее время появился нюанс в виде блокировок сервисов Яндекса на Украине, поэтому dns хостинг желательно зарегистрировать где-то еще, помимо Яндекса, если не хотите терять трафик оттуда. В любом случае это не проблема. Если что-то можно отдать на бесплатное обслуживание, я обычно это делаю, чтобы не тратить свое время и ресурсы понапрасну.
Iptables и fail2ban полезные инструменты, без них на веб сервере не обойтись, поэтому пусть будут. База данных, в обычных web проектах, чаще всего mysql, поэтому выбираю ее. Получаю строку с ключами для установки vestacp. Буду использовать ее. Ставим:
# cd /tmp # curl -O http://vestacp.com/pub/vst-install.sh # bash vst-install.sh – nginx yes – phpfpm yes – apache no – named no – remi yes – vsftpd yes – proftpd no – iptables yes – fail2ban yes – quota no – exim no – dovecot no – spamassassin no – clamav no – mysql yes – postgresql no – hostname vesta.serveradmin.ru – email zeroxzed@gmail.com
Установщик задаст вопрос, чтобы уточнить набор программ.
Если все верно, то подтверждайте и продолжайте установку. Скрипт запустит пакетный менеджер дистрибутива и начнет установку необходимых программ из различных репозиториев. Далее он будет подгружать свои конфиги и скрипты для запуска служб, которыми будет управлять. В конце установки вы увидите адрес панели vestacp, имя пользователя и пароль для входа.
Если все сделали правильно, то после ввода логина и пароля по адресу панели, увидите саму панель управления.
Не забывайте указывать дополнительно порт 8083 в адресе панели в браузере, для входа в весту.
Общая настройка vesta cp
Сразу после установки можно выполнить несколько базовых настроек.
Включаем русский язык
Vestacp неплохо переведена на русский язык, поэтому можно смело пользоваться русским интерфейсом. Для его выбора, необходимо зайти в настройки пользователя и там указать язык.
Добавляем ip адрес
У меня на сервере 2 внешних ip адреса. Во время установки панели, был выбран только один. Добавлю сейчас второй. Для этого в верхнем меню выбираем IP, нажимаем на зеленый плюс и вводим настройки дополнительного ip.
Теперь при добавлении сайта можно будет выбирать, на каком ip адресе он будет работать.
Отключаем автообновления
Я не раз сталкивался с различными проблемами, которые возникают после обновлений. А в такой вещи, как бесплатная панель управления хостингом, вероятность получить проблемы из-за каких-то багов или непроверенных изменений очень велики. Я рекомендую автоматические обновления отключить, и обновлять все вручную, когда будете полностью уверены, что готовы к обновлению.
Идем в раздел обновление и жмем «Выключить автообновление»
Увеличение времени бана
В vestacp используется популярный инструмент fail2ban для блокировки тех, кто пытается подобрать логины с паролями для доступа к различным сервисам. Время бана используется по-умолчанию — 600 секунд, т.е. 10 минут. Тот, кто 5 раз ввел неверные регистрационные данные для доступа к ssh, панели управления vesta или другим сервисам, получает бан на уровне фаервола на 10 минут.
По ssh боты будут постоянно долбиться, поэтому их можно банить минимум на час. Для этого нужно открыть конфиг fail2ban и добавить туда новое значение. Идем в раздел Сервер, находим там в самом низу fail2ban и жмем configure.
В секцию [ssh-iptables] добавляем новый параметр:
bantime = 3600
Сохраняем изменения. При желании, можете добавить этот же параметр для других служб. Тут же можно увеличить количество неправильных попыток ввода пароля. В принципе, можно для всех служб увеличить кол-во неправильных попыток до 15 и сделать бан сразу на сутки. Вряд ли вменяемый человек будет ошибаться 15 раз подряд. Но если уж это случилось, то у него явно какие-то проблемы и постоянными попытками ввода учетки их уже не решить.
Добавление сайта
Сделаем то, ради чего, собственно, мы устанавливали и настраивали панель управления хостингом. Создадим отдельного пользователя в vestacp и добавим ему сайт. Для этого идем в Users и добавляем нового пользователя.
Заполняем все поля, создаем пользователя и заходим под ним в панель управления.Во время создания пользователя, не забудьте в настройке «Доступ по SSH» указать bash или sh. Если этого не сделать, то пользователь не сможет подключаться по ssh. Я этот момент упустил и потом долго не мог понять, почему не могу подключиться по ssh. Сервер принимает логин с паролем, а потом сбрасывает соединение. В логах ssh никаких подсказок на эту тему не будет.
Я создам для него сайт на основе моего служебного домена — vesta.zeroxzed.ru. Не забудьте настроить dns запись на dns хостинге для нового домена. Для проверки корректной работы панели, я на этот сайт установлю wordpress.
Идем в раздел WEB, добавляем новый сайт.
Поддержку dns и почты я не включаю. Почему — объяснял вначале. После создания домена, он сразу же заработает. Проверить это можно, перейдя по адресу только что созданного домена. Вы должны увидеть страницу заглушку.
Для сайта нам нужна будет база данных. Создадим ее в соответствующем разделе.
У нас все готово для установки wordpress через панель vesta cp. Загружаем исходники сайта через ftp или vsftp, используя учетную запись user1, такую же, как и для входа в панель. Для быстроты, я загружу на сервер архив, а потом зайду по ssh и распакую его. Если загружать уже распакованные файлы, процесс будет длиться в несколько раз дольше.
Подключайтесь по ftp, используя любой подходящий клиент, ваше имя сервера и учетную запись.
Загружайте архив прямо в корень ftp. После этого подключайтесь по ssh к серверу. В windows проще всего воспользоваться программой putty.
В консоли распаковываем наш архив в директорию веб сервера. В случае с vesta cp каталог веб сервера настраиваемого сайта пользователя user1 будет в папке /home/user1/web/vesta.zeroxzed.ru/public_html. Выполняем в консоли:
# cd ~ # tar -xzvf wordpress-4.8-ru_RU.tar.gz # mv ~/wordpress/* /home/user1/web/vesta.zeroxzed.ru/public_html # rm -d ~/wordpress && rm ~/wordpress-4.8-ru_RU.tar.gz
Для продолжения установки wordpress, переходите по адресу сайта. У вас запустится установщик, где нужно будет указать параметры базы данных, созданной ранее.
Все, мы закончили стандартную установку нового сайта через панель управления хостингом vesta cp.
Обращаю внимание на один момент. В стандартной установке vestacp есть предустановленные шаблоны для конфига nginx. В частности, для wordpress есть отдельный шаблон. По идее, с ним сайт будет работать лучше. Я не разбирался в этих шаблонах, не сравнивал различия, но раз они есть, думаю, лучше использовать готовый шаблон под свою CMS. Изменить шаблон сайта можно в разделе WEB, в свойствах сайта.
Использование ssl сертификата letsencrypt
Сейчас повсеместно распространены ssl сертификаты для сайта. Начинать новый проект имеет смысл сразу на https. Панель управления vesta cp предоставляет возможность в автоматическом режиме получать бесплатные сертификаты от Let’s Encrypt.
Его можно указать либо при добавлении нового сайта, либо уже после. Подключим бесплатный сертификат для добавленного ранее сайта. Для этого открываем настройки сайта и ставим галочку напротив Поддержка SSL и Поддержка Lets Encrypt.
Если у вас домен третьего уровня, как у меня http://vesta.zeroxzed.ru, уберите в свойствах сайта алиас www.vesta.zeroxzed.ru, так как его не существует. Если же у вас домен второго уровня, то алиас с www можно оставить.
После создания сертификата вы сможете увидеть его ключи в свойствах сайта. Для проверки, пройдите по адресу с https и убедитесь, что сертификат установлен и все нормально работает.
Настройка редиректа http на https
После установки сертификата, сайт стал доступен по обоим адресам — с http и https. Но нам нужно, чтобы сайт всегда открывался по https. К сожалению, по-умолчанию, в vestacp нет автоматической переадресации http на https. Нам придется ее настроить самостоятельно.
В инструкциях на сайте разработчиков есть руководство на тему того, как сделать принудительную переадресацию http на https — http://vestacp.com/docs/#how-to-force-https. Предлагается установить отдельный шаблон для nginx и использовать его. Но тогда все остальные шаблоны, созданные под cms не будут работать. То есть получится просто универсальный шаблон с переадресацией.
Я решил поступить проще и просто добавить пару строк в конфиг nginx. Для этого заходим на сервер по ssh от пользователя root или администратора панели управления. Открываем конфигурационный файл nginx пользователя, которому принадлежит сайт. В моем случае адрес такой — /home/user1/conf/web/nginx.conf. Находим там такую строку:
server_name vesta.zeroxzed.ru ;
Перед ней добавляем новую строку со следующим условием:
if ($scheme = http) { return 301 https://vesta.zeroxzed.ru$request_uri; }
Сохраняем файл и перезапускаем nginx, выполнив команду в консоли:
# service nginx restart
Теперь можно проверять переадресацию. При заходе по адресу http, вас должно автоматически перенаправлять на https.
Подобную операцию нужно будет проделать для всех сайтов, где захотите включить переадресацию. Если у вас их несколько, то все они будут перечислены в одном файле nginx.conf, в разных разделах server {}.
Установка php 7 в vestacp
На момент написания этой статьи, во время установки VestaCP на CentOS 7 устанавливался php 5.6. Уже давно вышла новая версия php 7 и у вас может возникнуть желание использовать именно ее. К сожалению, непосредственно панель vestacp не предоставляет удобной возможности установки и выбора различных версий php.
Если вы используете связку apache + php, можете воспользоваться готовыми скриптами, которые сами установят разные версии php и внесут изменения в интерфейс Весты так, что вы сможете выбирать нужную вам версию. Ссылки для Debian/Ubuntu и CentOS. К сожалению, для nginx + php-fpm готовых решений нет.
Для установки php 7 в vesta cp мы пойдем своим путем и просто установим в систему новую версию php. Чтобы быстро узнать, какая версия php у вас установлена, выполните в консоли сервера команду:
# php -v PHP 5.6.31 (cli) (built: Jul 6 2017 08:06:11) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
Предупреждаю, что дальнейшие действия могут привести к неработоспособности web сервера в силу значительного количества изменений. Все, что я опишу далее, проверено на момент написания статьи и не факт, что будет работать у вас. Обязательно перед внесением следующих изменений, проверьте все на тестовом сервере, который будет совпадать по версиям с рабочим.
Останавливаем службы веб сервера:
# service nginx stop # service php-fpm stop
Добавляем дополнительные репозитории:
# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm # rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm # yum – enablerepo=remi update remi-release
Удаляем текущую версию php:
# yum remove php php-fpm
Устанавливаем php7.1 на vestacp:
yum – enablerepo=remi-php71 install php71-php php71-php-pear php71-php-bcmath php71-php-pecl-jsond-devel php71-php-mysqlnd php71-php-gd php71-php-common php71-php-fpm php71-php-intl php71-php-cli php71-php php71-php-xml php71-php-opcache php71-php-pecl-apcu php71-php-pecl-jsond php71-php-pdo php71-php-gmp php71-php-process php71-php-pecl-imagick php71-php-devel php71-php-mbstring
Создаем символьную ссылку для новой версии php:
# rm -f /usr/bin/php # ln -s /usr/bin/php71 /usr/bin/php
Создадим символьную ссылку на папку с конфигурациями php-fpm, которые генерирует vesta. Версия php71-php-fpm хранит свои конфиги в /etc/opt/remi/php71/php-fpm.d. Сделаем туда ссылку из старой директории с php-fpm.
# ln -s /etc/php-fpm.d /etc/opt/remi/php71/php-fpm.d
Теперь изменим некоторые вещи в самой весте. Открываем конфиг /usr/local/vesta/conf/vesta.conf и меняем параметр:
WEB_BACKEND='php71-php-fpm'
Переименовываем пару папок в составе весты:
# cd /usr/local/vesta/data/templates/web # mv php-fpm php71-php-fpm # cd /usr/local/vesta/data/templates/web/nginx # mv php-fpm php71-php-fpm
После этих преобразований, запускаем наши сервисы и добавляем новую версию php-fpm в автозагрузку:
# systemctl start nginx # systemctl start php71-php-fpm # systemctl enable php71-php-fpm
Теперь можно создать тестовый файл phpinfo и проверить версию php. Еще раз отмечаю, что эти преобразования очень рискованны. Вы должны четко понимать, что делаете. Так как эти изменения не поддерживаются авторами панели, больше вы не сможете ее обновлять автоматически.
Можно было бы пойти другим путем, и заменить не конфиги весты, заменяя версию php-fpm, а в системе переименовать php71-php-fpm в обычный php-fpm. Тогда бы не пришлось изменять настройки самой весты. Но в таком случае вы не сможете автоматически обновлять сам php-fpm. Я в этом случае решил, что php-fpm обновлять важнее, чем весту, поэтому изменил последнюю.
Настройка backup
С резервным копированием в vestacp все достаточно просто. Есть соответствующий раздел, в котором можно выполнить бэкап.
После нажатия на плюс, задание на backup ставится в очередь. Очередь обрабатывается отдельным заданием в кроне раз в 5 минут. После завершения резервного копирования приходит оповещение на почту. После этого бэкап можно скачать через веб интерфейс весты.
Бэкап сайта в vesta cp состоит из:
- Исходников сайтов, сертификатов к ним, конфигураций nginx и самой весты к каждому домену.
- Конфигурационных файлов системного профиля на сервере.
- Дампа mysql баз и системных настроек для них.
- Cron файла пользователя.
Восстановить backup из подобного архива можно как на самой панели управления хостингом vestacp, так и на другом сервере. Мне понравилась такая простая и надежная реализация бэкапа.
Менеджер файлов
Бесплатного менеджера файлов в Vesta CP нет. Разработчики предлагают приобрести дополнительный плагин Web File Manager за 3 доллара в месяц или за 50 долларов без ограничения срока действия лицензии. Считаю, это весьма гуманным способом монетизации. Реально, Vesta CP одна из лучших бесплатных панелей управления хостингом. Даже без этого плагина, она очень хороша.
Я лично не вижу надобности в отдельном файловом менеджере. Без лишних телодвижений вы получаете ftp доступ к сайту, а в случае включения ssh доступа, учетная запись получает возможность подключаться к серверу по sftp протоколу. Я считаю это наиболее простым, безопасным и удобным способом работы с файлами сайтов напрямую. Под windows есть удобная программа для этого — WinSCP.
Обновление phpmyadmin
Для начала напомню, как в vestacp зайти в phpmyadmin. Я не сразу нашел соответствующую ссылку. Она в разделе DB.
Конфигурационный файл находится на сервере по адресу /etc/phpmyadmin/config.inc.php. Vesta использует в своей работе обычную версию phpmyadmin, которую можно установить из подключенных репозиториев в системе.
Таким образом, для обновления phpmyadmin в vestacp достаточно воспользоваться стандартным пакетным менеджером в системе (apt, yum и т.д.) и выполнить соответствующую команду по обновлению системного пакета.
Если по какой-то причине не хочется использовать репозиторий, можно просто положить свежие исходники в соответствующий каталог — /usr/share/phpMyAdmin.
Стандартное расположение файлов и логов
В завершение дам еще немного полезной информации по расположению некоторых файлов и каталогов, которые могут пригодится в работе с панелью vestacp.
/usr/local/vesta | Директория, где хранится все, что касается весты (конфиги, шаблоны, скрипты и т.д.) |
/var/log/vesta | Логи самой панели vesta. |
/home/user1/web/site.ru/public_html | Директория где непосредственно лежит сайт site.ru пользователя user1 |
/home/backup | Тут хранятся все бэкапы |
/var/log/nginx/domains | Логи всех сайтов, если вы используете nginx |
/etc/php-fpm.d | Как общие, так и персональные настройки по доменам от php-fpm |
/home/user1/conf/web | Настройки nginx и сертификаты всех сайтов пользователя user1 |
/etc/php.ini | Файл настроек php |
Описание шаблонов весты можно почитать на официальном сайте, в документации — https://vestacp.com/docs/#template-description.
Заключение
Я рассмотрел наиболее значимые аспекты в установке и настройке одной из лучших бесплатных панелей управления хостингом Vesta CP. Хочу отметить, что я не имею опыта работы с ней. Данная статья это мое знакомство и одновременно изучение этой панели.
Могу сказать, что она мне понравилась, показалась удобной и простой в эксплуатации. Исключение только отсутствие штатной возможности управлять версией php. 7-я версия вышла примерно 2 года назад и то, что ее нет в стандартной установке как-то странно.
Для себя решил, что в качестве бесплатной панели буду использовать именно Весту. В ближайшее время будет разбор еще одной панели управления хостингом. Следите за обновлениями.