Glashkoff.com

Полезные советы и софт, создание и оптимизация сайтов на WordPress

Администрирование

Webinoly: управляем VPS с Ubuntu Server 18.04

Предисловие

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

Немногим более года назад я рассказал про возможности панели управления VestaCP. На тот момент это был оптимальный бюджетный способ поднятия своего веб-сервера без заморочек с настройкой. Прошло время и я понял, что нужно двигаться дальше.

Почему я потерял доверие к VestaCP

Первый тревожный звоночек — выпуск новой версии панели 0.9.8-18 аккурат перед праздниками 29 декабря 2017 года. Никто в здравом уме не будет обновлять софт перед длинными выходными, особенно если предыдущая версия вышла целый год назад (25 ноября 2016-го). За это время можно было написать уйму костылей, не проверенных на совместимость с новой версией. Вот только панель по умолчанию обновляется автоматически! Естественно, что у некоторых владельцев серверов, в том числе моих читателей, всё поломалось. Исправления вышли 10 января, то есть новогодние праздники у некоторых админов и владельцев сайтов были испорчены.

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

Чуть позже выяснилось, что вроде бы проблема в почтовом веб-клиенте roundcube, который ставится вместе с VestaCP и к серверной панели прямого отношения не имеет. Но неприятный осадочек никуда не делся.

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

Веб-серверами можно управлять тремя способами.

  • Через веб-интерфейс. Заходите на страничку, кликаете по кнопкам, ставите галки и так далее. Это просто, удобно, приятно. Для этого и нужны VestaCP, cPanel, Webmin, ISPmanager, DirectAdmin и десяток других программных продуктов.
  • Через консоль, редактируя конфиги. Хардкорный вариант — прямое редактирование конфигурационных файлов. Это сложновато, зато из-за максимального контроля всех аспектов веб-сервер идеально подгоняется под нужды владельца.
  • Через консоль с помощью скриптов. Компромиссный вариант между веб-интерфейсом и ручной правкой конфигов. Можно написать самостоятельно или воспользоваться готовыми скриптами для быстрой установки серверного софта, базовой настройки и дальнейшего управления сайтами. Это упростит редактирование конфигов.

Также можно пользоваться готовыми Docker образами, но в рамках дешёвых виртуальных серверов с ними сложно достичь хорошей производительности. Да и с безопасностью у контейнеризации, как ни странно, не всё гладко.

Скажу прямо — я не супер-мега-админ, готовый ковыряться в конфигах круглые сутки. Мне нужна надёжность и простота, чтобы я мог сосредоточиться на оптимизации и стабильности работы сервера. Веб-интерфейс, конечно, сильно облегчит добавление нового сайта, но можно обойтись одной консолью. Поэтому я стал искать скрипты для управления своей VPS-ки и нашёл три кандидата.

  • EasyEngine. Заточена под управление сайтами на WordPress. Ставит Nginx, PHP, MySQL-совместимую базу данных. Фатальный недостаток EasyEngine — разработчики подзабили на развитие проекта. Между последними версиями прошло более полутора лет (3.7.4 — 26 августа 2016 г., 3.7.5 — 30 марта 2018 г.), причём изменения незначительные.
  • lnmp. Набор скриптов китайского происхождения, поэтому официальный сайт и документация нечитабельны (онлайн-переводчик не помогает из-за изобилия технических терминов). Преимущество и одновременно проблема этого продукта — софт ставится не из репозиториев операционной системы, а собирается из исходников. Это великолепно в том плане, что скрипты заработают на всех популярных *nix операционных системах и на сервере с ARM процессором можно обеспечить максимальную производительность. Недостаток — долгое время установки. На компьютере с Core i7-2600K компиляция полного комплекта софта (там помимо Nginx+PHP+MySQL много чего ещё) заняла 30 минут. На дешёвой VPS время можно смело умножить в десять раз. 5 часов полной недоступности сайта и возможные заморочки каждый раз при обновлении до свежих версий — не то, что мне хочется.
  • Webinoly —  испанский наследник идеи EasyEngine, созданный из-за неторопливой разработки оного. Ставит минимальный набор софта, скрипты довольно простые, всё понятно организовано. Проект свежий, новые версии выходят ежемесячно.

Как вы уже догадались, я сделал свой выбор в пользу Webinoly. Пока что это самое простое и эффективное решение с грамотной поддержкой WordPress. Сайты на других CMS запускать тоже можно.

Почему Ubuntu Server 18.04?

Это релиз со статусом LTS (Long Term Support, «поддержка в течение длительного периода»), для которого будут выходить обновления аж до 2023 года. Поддержка старой 16.04 заканчивается тоже не завтра, а в 2021 году, но я всё же хочу чуть большей безопасности, чем может предоставить 16.04.

Кстати, в пользу Webinoly сыграл тот факт, что хотя на момент написания статьи версии с поддержкой Ubuntu Server 18.04 не было (сейчас поддерживает), всё нормально установилось и заработало. Такой уровень говорит о продуманности и/или простоте решения.

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

KiTTy

Советую программу KiTTy в качестве SSH-клиента. Это форк популярной софтины PuTTy с полезными улучшениями.

Главное при использовании — разобраться с сохранением сессий, чтобы не вводить каждый раз IP сервера и настройки. Остальное наработается со временем.

Так работает сохранение настроек в KiTTy и PuTTy

Так работает сохранение настроек в KiTTy и PuTTy

Кстати, для удобочитаемости текста в консоли я использую моноширинной шрифт Cousine четырнадцатым кеглем. Шрифты настраиваются в разделе Window — Appearance.

Midnight Commander

Это файловый менеджер №1 в мире *nix. С его помощью удобно смотреть содержимое каталогов и редактировать файлы конфигурации через встроенный mcedit. MC сильно облегчит жизнь.

Сначала обновите софт:

sudo apt update
sudo apt upgrade

Затем ставьте сам MC:

sudo apt install mc

Midnight Commaner запускается командой mc.

Редактор mcedit, идущий в комплекте, отдельно запускается так:

mcedit -e /dir/ваш_файл_для_редактирования

К программе есть неполная документация на русском языке.

WinSCP

Для передачи файлов с/на сервер нельзя использовать протокол FTP из-за его полной небезопасности: пароль и другие данные легко перехватить. Вместо этого файлы можно передать через SFTP, используя тот же порт, логин и пароль, что и для консоли SSH.

Скачать WinSCP можно на домашней странице программы. Доступен файл русификации, его нужно сохранить в папке с WinSCP. При смене версии нужно обязательно перезакачать русификацию, иначе язык сбросится на английский.

Fail2ban

Инсталлятор Webinoly не ставит Fail2ban, поэтому защищаться от подбора паролей к службам сервера придётся самостоятельно.

Сначала ставим с параметром -y, чтобы не было лишних вопросов:

sudo apt install fail2ban -y

И… на этом всё! После 5 неудачных попыток логина IP-адрес атакующего будет забанен на 600 секунд.

В интернете есть много инструкций по настройке Fail2ban. Подозреваю, что многие устарели, потому что Fail2ban работает «из коробки» с SSH, хоть правила и не жёсткие.

Если по какой-то причине в логах /var/log/fail2ban.log пусто (любой сервер подвергается атаке через ssh несколько раз за день), убедитесь что существует лог-файл /var/log/auth.log. Если его нет, установите rsyslog (apt install rsyslog), в файле /etc/ssh/ssh_config раздел #Logging приведите к такому виду:

# Logging
SyslogFacility AUTH
LogLevel VERBOSE

И настройте Fail2ban так:

1. Создайте файл конфигурации командой

touch /etc/fail2ban/jail.local

2. Вставьте туда конфиг для защиты SSH:

[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
findtime = 600
maxretry = 3
bantime = 43200

3. Перезапустите сервисы командами:

sudo service ssh restart
sudo service fail2ban restart

Позже советую погуглить документацию, чтобы настроить защиту других служб сервера. В файле конфигурации fail2ban.conf есть готовые секции для различных SSH, Nginx, Openwebmail и других, их можно «оттюнинговать» путём копирования секции настроек в файл jail.local, как в примере с настройкой ssh.

Я же расскажу о снятии блокировки по IP, что сильно выручило, когда увлёкся редактированием настроек Fail2ban и забанил самого себя.

Быстро разбанить любой IP можно с помощью утилиты fail2ban-client. Сначала смотрим, забанен ли адрес вообще.

iptables -L -n

Затем даём команду на разбан.

sudo fail2ban-client set sshd unbanip tyt_ip

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

Webinoly

Главная цель скриптов Webinoly — запустить на вашем сервере с Убунтой сайты. Вы не найдёте управление пользователями, мониторинг производительности и прочие фишечки. Webinoly — прекрасное решение для тех, кому нужен сервер для личных проектов.

В качестве софта используется стек LEMP: Nginx+PHP+MySQL. Правда, в качестве сервера баз данных авторы предпочли MariaDB, но это даже хорошо — так можно покрыть потребности большего количества систем управления контентом.

В отличии от VestaCP, какой-либо «защиты от дурака» здесь не существует. Неправильно отредактировали конфиг — сами виноваты. Но зато Webinoly не сильно вмешивается в файлы конфигурации, лишь генерируя базовые конфиги как для полностью статических, так и динамических сайтов на PHP. Особое внимание уделено WordPress: для быстрого создания сайта на этой CMS есть отдельная команда.

Поддержка кеширования с помощью средств Nginx, Redis и Memcached также присутствует. Причём для WP при включении кеша будет предложена установка соответствующих плагинов.

PhpMyAdmin для управления базами данных тоже наличествует.

В общем, Webinoly — это инструмент без особых замашек на всеядность, но зато в нём нормально работают заявленные функции:

  1. Добавление, удаление сайтов.
  2. Быстрое включение кеширования.
  3. Быстрая конфигурация HTTPS (встроенный шаблон настроек SSL очень даже неплох, получает A+ на SSL Labs).
  4. Автоматическое обновление сертификатов SSL от Let’s Encrypt.
  5. Просмотр в реальном времени всех основных журналов событий.

Это хороший старт для тех, кому не лень прочитать мануалы и донастроить сервер под свои нужны самостоятельно, на 100% используя имеющиеся ресурсы сервера.

Установка

Ставится достаточно просто, нужно выполнить несколько шагов.

1. Выполните в консоли команду загрузки и запуска инсталлятора:

wget -qO weby qrok.es/wy && sudo bash weby 3

Первоначальная установка пакетов займёт 5-15 минут.

Затем вы получите два пароля от базы данных — админский (admin) и полный (root), запишите их. Если что, в phpMyAdmin достаточно заходить под админом.

Успешная установка Webinoly

Успешная установка Webinoly

В принципе, серверный софт уже будет работать, но нужно его донастроить.

2. Кое-какие средства администрирования окажутся доступны на 22222 порту. Не облегчайте жизнь сканирующим ботам и злоумышленникам, измените порт на любой случайный командой:

sudo webinoly -tools-port=xyz

Вместо xyz — любой порт, кроме 22, 80 и 443.

Попытавшись зайти по адресу http://ip_вашего_сервера:тот_случайный_порт, вы обнаружите, что у вас требуют логин и пароль. Их нужно добавить командой:

sudo httpauth -add=[user,password]

Полагаю, вы догадались, что нужно ввести вместо user и password.

Пароли, передающиеся методом HTTP Authentication, можно перехватить. Не админьте сервер, подключившись к публичной Wi-Fi сети.

Зайдя по этому адресу, вы сможете глянуть некоторую статистику сервера и воспользоваться phpMyAdmin.

Также этим же логином и паролем можно защитить админки сайтов на WordPress. Просто выполните команду:

sudo httpauth -wp-admin-on

Это не защитит от слишком настойчивого хакера, но в целом полезно.

Документация к Webinoly

Эта консольная панель управления сервером облегчает размещение сайтов, помогает настроить бекап, быстро сконфигурировать кеширование в nginx и подключить SSL-сертификаты Let’s Encrypt.

На момент написания этой статью доступно 5 модулей, у каждого своя команда и своя зона ответственности.

httpauth — управление пользователями для проверки подлинности с помощью HTTP Authentication. Как уже писал выше, с его помощью можно защитить и админку сайта на WordPress.

log — для просмотра логов в режиме реального времени.

site — создание, удаление сайтов и изменение их настроек.

stack — установка и удаление серверного софта. Например, можно полностью убрать nginx и сервер базы данных, чтобы хостить только статические сайты.

webinoly — управление самой панелью, её обновление и регулировка некоторых параметров.

Каждый модуль требует прав администратора, т.е. команды вводятся вместе с sudo:
sudo site <набор опций>

httpauth

Команда «httpauth» позволяет ограничить доступ к страницам с помощью аутентификации по HTTP. Обычно это phpMyAdmin, /wp-admin и /wp-login.

Синтаксис:

sudo httpauth <опция>

Опции:

-add — создать пользователя для доступа к разделам, защищённым через HTTP Authentication. К системным пользователям Убунты отношения не имеют! После нажатия Enter Webinoly спросит имя пользователя и пароль. Можно этого избежать, сразу указав вот так:

sudo httpauth -add=[user,password]

-delete — удалить пользователя. Можно сразу указать вот так:

sudo httpauth -delete=user

-list — вывести список добавленных пользователей.

-wp-admin=on — включение защиты паролем страниц /wp-admin и /wp-login — админки сайтов на WordPress. Зайти можно будет под любым добавленным пользователем. Это не какая-то суперсильная защита от взлома, в админку можно попасть многими способами, просто дополнительное (весьма эффективное!) препятствие.

 -wp-admin=offглобальное выключение защиты /wp-admin и /wp-login. Для выключения на отдельных сайтах используйте sudo httpauth domain.com -wp-admin=off.

Для защиты отдельных разделов сайта есть набор команд:

# Закрытие паролем /folder и всех подразделов. Чтобы закрыть только /folder, допишите опцию "-exact".
sudo httpauth example.com -path=/folder

# Указание "-path=/" закроет доступ ко всему сайту. Удобно для разработки сайтов - никто, кроме знающих пароль, не будет иметь доступа:
sudo httpauth example.com -path=/

# Удалить блокировку указанного пути:
sudo httpauth example.com -path=/folder -purge

# Удалить всю защиту паролем, поставленную на сайт:
sudo httpauth example.com -path=all -purge

Как я написал выше, с помощью Webinoly можно легко закрыть весь сайт от доступа извне. Но вдруг вы не хотите вводить пароль? Добавьте ваш IP в список доверенных адресов:

# Добавление:
sudo httpauth -whitelist=123.123.123.123

# Очистка списка доверенных:
sudo httpauth -whitelist -purge

log

Командой «log» можно быстро глянуть журналы событий. Причём они будут отображаться в реальном времени, что очень удобно для отладки сайтов.

Синтаксис:

sudo log <домен> <опция>

Запуск «log» без опций и указания доменов покажет логи доступа (не ошибок) ко всем сайтам на VPS. Чтобы увидеть ошибки, выполните:

sudo log <домен> -error

Либо ошибки сразу всех сайтов:

sudo log -error

Специально для WordPress есть полезная команда:

sudo log <домен> -wp

Команда покажет содержимое файла /wp-content/debug.log. Работает только при включенном параметре WP_DEBUG=TRUE и записи ошибок в вышеуказанный файл.

Показ ошибок PHP:

sudo log -php

Ошибки сервера баз данных MariaDB:

sudo log -mysql

Ошибки при работе с почтой (логи postfix):

sudo log -mail

Для прерывания показа, как и в случае с любыми скриптами, жмите Ctrl+C.

site

Создание и управление сайтами — самая проработанная часть Webinoly.

Синтаксис команды site таков:

sudo site <домен> <опция_1> <опция_2>

Возможные опции:

-html — создание статического сайта.

-php — создание сайта с поддержкой PHP и без базы данных.

-mysql — если указан домен, создаёт сайт с поддержкой PHP и базу данных. Чтобы не было лишних вопросов, можно использовать настройки по умолчанию:

sudo site -mysql=default

Либо указать собственные:

sudo site -mysql=[host,dbname,dbuser,password,external_dbuser,external_dbpass]

Либо можно не вписывать пароли и данные в длинную команду, а запустить пошаговый мастер вопросов:

sudo site -mysql=custom

Кстати, если домен не указан, то команда просто создаёт БД. Пригодится на случай, если, например, сайту требуется несколько баз.

-wp — создание сайта с WordPress:

sudo site example.com -wp

Webinoly самостоятельно скачает эту CMS, создаст базу данных и пропишет базовые настройки. Вам остаётся лишь зайти на сайт и ответить на несколько базовых вопросов: какое название дать, какое имя и email у администратора и т.п. Если вы изначально добавили пароль для HTTP-аутентификации и включили защиту админки, то ненастроенный сайт будет прикрыт указанным паролем, что позволит не спешить с первоначальной настройкой.

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

# Сначала сздаю сам сайт со включенным кешированием и поддержкой плагина Yoast SEO
sudo site domain.com -wp 
# Затем включаю плагин кеширования через Nginx
sudo site domain.com -cache=on
# При необходимости включаю поддержку плагина Yoast SEO (будьте осторожны - с этой опцией при некоторых конфигурациях даже при установленном плагине файл /sitemap.xml может оказаться недоступен!)
sudo site domain.com -yoast-sitemap=on
# Затем, убедившись, что на DNS серверах уже прописалась связь доменнного имени и IP адреса сервера, запрашиваю сертификат Let's Encrypt:
sudo site domain.com -ssl=on

Любители контролировать всё и вся могут во время генерации сайта вместо «-wp» указать «-wp=custom» и тогда Webinoly спросит вас, хотите ли вы указать некоторые настройки: имя базы данных, пароль к ней и т.п. Вы можете просто нажимать Enter, чтобы использовать настройки по умолчанию. А ещё можно сразу задать в команде опции согласно синтаксису:

sudo site example.com -wp=[<setup_db>, <setup_wp>, <host>, <dbname>, <dbuser>, <dbpass>, <wp_prefix>, <external_db_user>, <external_db_pass>])

Для WordPress Multisite есть два варианта установки — для подкаталога:

sudo site example.com -wpsubdir=default -cache

И субдомена:

sudo site example.com -wpsubdom=default -cache

Как только вы войдете на свой новый сайт, WordPress, как обычно, попросит вас выбрать язык, пользователя, почту и другие настройки. Загляните в Инструменты — Настройка сети, чтобы снова выбрать тип установки — субдомен или подкаталог. Можно донастроить WP Multisite и другим способом, раскомментировав добавленные Webinoly строки в wp-config.php файле.

Помните о том, что на нагруженных сайтах вы всегда можете с помощью -cache=on и -cache=off включить и выключить кеширование FastCgi с помощью Nginx. Это позволит держать на дешёвом виртуальном сервере сайт, который посещают десятки тысяч человек в сутки при условии, что на нём контент меняется редко (люди не заходят в Личный кабинет, не устраивают дискуссии в режиме чата и тому подобное).

Чтобы включить FastCgi:

sudo site domain.com -cache=on

Чтобы отключить FastCgi:

sudo site domain.com -cache=off

Вы также можете активировать кеш сразу при создании нового сайта:

sudo site domain.com -wp -cache=on

Кстати, для WordPress используйте плагин Nginx Helper, чтобы кеш очищался корректно. В его настройках укажите прямую очистку файлов вместо запроса через url (опция «Delete local server cache files» или «Удалить локальные файлы кеша на сервере»).

-parked — указание, что это альтернативный домен сайта. Таким образом один сайт может быть доступен на разных доменах. Синтаксис такой:

sudo site domain.com -parked=mainsite.com

Обязательный момент: основной сайт должен быть на этой же VPS-ке, иначе ничего не заработает.

-proxy — включение обратного прокси в Nginx. Синтаксис такой:

sudo site example.com -proxy=localhost:8080

Пригодится, например, если сайт работает на Python вместо PHP или нужно привязать доменное имя к контейнеру Docker.

-on и -off — активация и деактивация сайта. Допустим, вы проводите какие-то технические работы и посетители вам не нужны, можно временно отключить сайт.

-delete — удаление указанного сайта.  Если не хотите, чтобы удалилась связанная БД, используйте «-delete=keep-db» (но про резервные копии не забывайте!).

-delete-all удаляет ВСЕ сайты. Если сайт на WP, удалится и привязанная база данных, в остальных случаях может что-то остаться.

-list — вывод списка сайтов на VPS.

-ssl=on — включение шифрования по HTTPS. Запрашивается бесплатный сертификат у сервиса Let’s Encrypt, который будет сам обновляться. Каждую неделю Webinoly будет присылать вам письма со статусом используемых сертификатов, чтобы максимально контролировать этот процесс.

Важный момент: если ваш сайт использует «припаркованные» (зеркальные) домены, нужно использовать параметр -root с указанием основного. Синтаксис получения сертификата будет такой:

sudo site domain.com -ssl=on -root=mainsite.com

-ssl=off — выключение HTTPS у сайта.

-subdomain=true — принудительное указание поддомена. Обычно Webinoly сам определяет, указали ли вы домен или субдомен, но разработчики реализовали возможность указать это вручную.

stack

Команда «stack» управляет набором софта, который инсталлирует Webinoly. Синтаксис команд:

sudo stack <option> <option2>

Пригодится, если вам не нужен весь серверный софт и вы поставили панель управления сервером такой командой (обратите внимание на 0 в конце):

wget -qO weby qrok.es/wy && sudo bash weby 0

Опции:

-html или -nginx — установка Nginx. Для особенных случаев можно указать источник версий:

sudo stack -nginx=mainline

или

sudo stack -nginx=stable

-php — PHP-интерпретатор.

-mysql — MySQL (MariaDB).

-pma — phpMyAdmin.

-web-tools — дополнительные утилиты: Let’s Encrypt, Duply & Duplicity (для бекапов), Postfix (для отправки почты с VPS), Redis и Memcached (кеширование), Php Info & Status (страница, доступная через порт 22222), phpMyAdmin. По умолчанию ставятся вместе с nginx, поэтому, если всё это добро вам не нужно, используйте опцию -notools:

sudo stack -nginx -notools

-lemp — установка Nginx, PHP, MySQL и всех дополнительных утилит.

-php-ver — (пере)установка PHP на определённую версию. Например:

sudo stack -php-ver=7.3

-purge — добавление этой команды к -php, -nginx, -mysql, -pma, -web-tools вызовет удаление указанного софта.

-purge-server-all — удаление всего софта, кроме Webinoly. Чтобы не было вопросов от консоли управления, можно форсировать операцию:

sudo stack -purge-server-all=force

-info — вывод информации об установленных пакетах, софте.

webinoly

Модуль, отвечающий за настройку консоли. Синтаксис:

sudo webinoly <опция>

-update — обновление Webinoly до последней версии.

-dbpass — по идее эта команда восстановит изначально сгенерированные логины и пароли пользователей баз данных, но пока лучше не пользоваться — разработчики сообщают, что нужно доработать.

-tools-port — указание порта для доступа к phpMyAdmin и другим инструментам.

-login-www-data — разрешить пользователю www-data доступ к загрузке файлов по протоколу SFTP. -nologin-www-data запрещает.

-config-cache — настройка кеша FastCgi в Nginx. Настраиваются три срока хранения кеша:

  1. Код HTTP 200: успешные запросы страниц.
  2. Время бездействия: удалить кешированные данные, которые не запрашивались определённое время.
  3. HTTP-коды 301, 302, 307 и 404: перенаправления и «страница не найдена».

Формат времени: s — секунды, m — минуты, h — часы, d — дни, w — недели, M — месяцы, y — года.

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

sudo webinoly -config-cache=[10d, 1w, 5m]

-clear-cache=<опция> — принудительная очистка кеша. Возможные опции: all (все), fastcgi, redis, memcached, opcache.

-verify — проверка целостности установки Webinoly. Запустится проверка всех файлов и некоторых настроек.

-info — информация о настройках Webinoly.

-uninstall — удаление консоли управления. Папки с сайтами останутся.

-server-update или -server-reset — сброс всех файлов конфигурации на дефолтные.

Редактирование настроек Nginx и прочего софта

Файл конфигурации панели управления находится по пути /opt/webinoly/webinoly.conf. Особо менять там нечего, но если что — смотрите официальную документацию.

Когда вы создаёте сайт командой sudo site, в указанных ниже директориях генерируются конфигурационные файлы на основе шаблонов из /opt/webinoly/templates/.

/var/www/имя_сайта/htdocs/ — сюда нужно поместить файлы сайтов.

/etc/nginx/sites-available — конфиги nginx, сгенерированные на основе шаблонов Webinoly.

/etc/mysql/ — конфиги сервера баз данных.

/etc/nginx/ — конфиги Nginx.

/etc/php/ — настройки PHP.

Так вот, почти всё это добро редактировать можно. В конфигах, которые перезапишутся при обновлении панели, так и будет написано — «Do not modify, all changes lost after update Webinoly», всё остальное правьте как вам угодно.

Чтобы не забивался диск сервера

Это не совсем проблема Webinoly, а скорее странность дефолтных настроек MySQL/MariaDB. Сразу после установки Webinoly поищите в файле /etc/mysql/my.cnf указанные ниже строки и закомментируйте (поставьте знак «#» в начале строк), чтобы получилось вот так:

#server-id = 1
#report_host = master1
#auto_increment_increment = 2
#auto_increment_offset = 1
#log_bin = /var/log/mysql/mariadb-bin
#log_bin_index = /var/log/mysql/mariadb-bin.index

Файл редактируется только под root’ом, то есть редактор можно запустить вот так:

sudo nano /etc/mysql/my.cnf

Если каких-то строк нет — не добавляйте. После правки и сохранения перезапустите службу MySQL:

sudo service mysql restart

Данные настройки нужны для работы БД сразу на нескольких серверах. Кому такое нужно — настроит. Для одиночного VPS опции log_bin и log_bin_index только мешают, ибо в каталоге /var/log/mysql/ начнут плодиться файлы mariadb-bin*. Когда на сервере 5-10 Гб свободного места, каждый гигабайт на счету.

После отключения настроек, связанных с репликацией БД, и рестарта службы, каталог  /var/log/mysql/ можно смело очищать.

Бекапы

Панель ставит Duplicity и Duply для возможности использования резервного копирования, но настраивать создание резервных копий придётся самостоятельно.

Возможностей Duplicity (Duply — это надстройка) очень много, сценариев использования десятки, если не сотни. Я не хочу раздувать свою заметку до объёма Войны и мира, поэтому смотрите здесь: duply.net.

Резюме

Webinoly — достаточно простой инструмент, автоматизирующий администрирование VPS или VDS. В нём нет «защиты от дурака», поэтому внимательно читайте мануалы перед тем, как что-то делать.

А как вы управляете своим сервером (если он у вас есть)?

28 комментариев

  1. Игорь

    вообще можно у реселлеров недорого взять ispmanager. там конечно намного удобнее все, чем в весте. висит десяток сайтов на wp и опенкарте. Vps на ovh. Есть выбор версии php, mysql. Нормальная документация. в принципе пока устраивает. бесконечная лицензия стоит 2000 рублей

    Ответить

    • Дмитрий Глашков

      А как организована техподдержка в таком случае? Через реселлера? Возможно, вы ещё просто не сталкивались с ситуацией, когда какой-то модуль ведёт себя некорректно и достучаться до техподдержки ISPmanager невозможно. Либо это мне так не везло.

      Ответить

  2. Игорь

    была проблема с лицензией, триальная оставалась после покупки вечной. Написал в тп isp напрямую, в тот же день они ответили и решили проблему на своей стороне. Платное обращение в кабинете Billlmanager не списалось. А с какими модулями была проблема?

    Ответить

    • Дмитрий Глашков

      Времени прошло предостаточно, много конкретики не могу сказать. Помню самый яркий случай: в конце 2013 года или январе 2014-го у знакомого при обновлении этой панели стёрлись конфиги Апача и PHP, затем при добавлении новых доменов они вообще перестали генерироваться. Дело было в неверном назначении прав и я это исправил, но попутно обнаружил, что панель странно обращается с содержимым конфигов (затирает строки, иногда вставляет блоки хостов в середину старых), причём баг воспроизводился только в определённое время суток при сильном скачке посещаемости сайтов, размещённых на сервере. Решил об этом написать авторам панели и столкнулся с тем, что без пакета техподдержки меня принципиально игнорировали. Пришлось общаться с теми, кто перепродал лицензию, потому что платная техподдержка была куплена. В итоге с лицензией разобрались, но с конфигами так ни к чему не пришли, потому что ломать сервер в пике посещаемости для повторного воспроизведения бага нельзя, а логов оказалось недостаточно.
      Были и другие проблемы, обычно по мелочи. Например, неверно составленные шаблоны Nginx для одновременной работы по HTTP и HTTPS.
      Как клиент shared-хостингов я тоже наступал на грабли, связанные с глюками этой панели. Например, два раза подряд не включалось автопродление оплаты и сайты останавливали, хотя переключатель стоял в положении «Вкл». Техподдержка подтвердила, что проблема в биллинговой части и сообщила, что пилят своё собственное решение на замену. Не редактировались настройки DNS у купленного домена (при сохранении возвращались старые значения). Не активировались модули PHP (впоследствии оказалось, что я вообще не должен был видеть этот раздел настроек на своём тарифе). А ещё однажды я «сломал» свою админку, просто изменив тему оформления. Это был просто epic fail, я не мог поверить, что в таком серьёзном продукте наличествовал такой баг. Для платного продукта с долгой историей разработки эти проблемы странны и ненормальны.

      Ответить

  3. Александр

    Дмитрий, привет. Спасибо за обзор :) EE какое-то время использовал, простой инструмент, жаль, что на него подзабили.

    После EE перешел на roots.io У них в комплекте идет не только сервер настроенный, но и вагрант с виртуал бокс, для удобной локальной разработки(виртулка поднимается одной командой на локальной машине, вместе с wordpress’ом и всеми плагинами, который у тебя в проекте есть, сам проект естественно в репозитории, зависимостями кампоузер управляет)

    Плюс, на всех серверах единое окружение получается, что тоже классно.

    Ответить

    • Дмитрий Глашков

      Ого, вот это да, как я мог пропустить такой проект! Спасибо. Надо глянуть.

      Ответить

  4. Fanis

    Пользовался ispmanager год, как то раз решил перейти на связку Nginx+php-fpm. Хапнул гемороя я с этой панелью знатно, и не только из за связки. С помощью поисков наткнулся на EasyEngine. С консолью не особо в ладах, но мое любопытство взяло вверх. После прочтения манаулов и несколько проб установки сервера и настройки. Это просто свежий глоток воздуха после этих грабозких интерфейсов с их неповоротливостью. Сейчас просто радуюсь что рискнул работать через консоль. Документация отличная на сайте простые команды и простые решения, единственное у меня траблы были с настройкой почты. Сейчас наткнулся на тесты по сервакам и увидел обзор webinoly, а затем и у вас здесь обновление в статье. В отличие от Easyengine по первым признакам ребята получается более быстрее работают и обновляют свою панельку. И вот это все заставляет чесаться руки и готовиться к переезду на webinoly)))

    Ответить

    • Дмитрий Глашков

      Спасибо за отзыв. Да, авторы webinoly молодцы. Судя по логам изменений на Гитхабе, у них правильный баланс между введением новых фишек и доработкой существующих функций. Аккуратно работают, ничего не ломая.

      Ответить

  5. Viktor

    как это сравнивается с SlickStack?

    https://github.com/littlebizzy/slickstack

    Ответить

    • Дмитрий Глашков

      Привет. Судя по описанию на Гитхабе, SlickStack для WordPress (быстрого развёртывания Multisite и управления ими), а Webinoly более универсальный инструмент, подходящий для любых типов сайтов, с CMS и без. По моему мнению, сравнить их не получится, так как решают разные задачи.

      Ответить

  6. Сергей

    Привет. Webinoly устанавливал от root пользователя, или создавал еще одного?

    Ответить

    • Дмитрий Глашков

      Создавал отдельного. Но запускать скрипт установки и управлять самим webinoly нужно с sudo.

      Ответить

  7. Василий

    Добрый день. Дмитрий подскажите пожалуйста, а как нибудь можно создавать сайты разными пользователями, чтоб в итоге они были изолированы друг от друга?

    Ответить

    • Дмитрий Глашков

      Василий, привет. В webinoly это не предусмотрено, однако можно вручную создать разные пулы php-fpm для разных сайтов и вручную указывать их в правилах nginx вместо общего, который запущен по умолчанию. Это не защитит от доступа через уязвимости, но на уровне PHP поможет оградить сайты (не полностью, способы всегда найдутся!). Для организации более надёжной изоляции webinoly без серьёзной переработки не подходит. В том числе не подходит для работы через разных пользователей.

      Ответить

  8. Николай

    Добрый день, Дмитрий
    Пытаюсь установить WordPress на Webinoly по Вашему мануалу. После команды «sudo site example.com -wp» не выводятся никакие настройки. Сразу выскакивает site example.com has been successfully created! Подскажите, пожалуйста, в чем может быть проблема?

    Ответить

    • Дмитрий Глашков

      Николай, судя по сообщению, нет никакой проблемы, сайт успешно создаётся. А что ещё нужно?

      Ответить

      • Дмитрий

        Дмитрий, спасибо за подробный материал. Но у меня такая же «проблема», как у Николая.
        После команды:

        sudo site example.com -wp

        По мануалу на оф.сайте и в примерах других ресурсов, webinoly должен запустить диалог, по типу:

        Do you need to setup new MySQL database? [Y/n]
        Create WP-Config file automatically? [Y/n]

        Database Host [localhost]:Database Name [example_com]:
        Database User [example_com]:
        Database Password [A4PXURg5]:
        Database Prefix [wp_]:

        Site example.com has been successfully created!

        Но этого не происходит, просто пишет Site example.com has been successfully created!
        А какие тогда данные для подключения, к БД, в админку?

        Ответить

      • Дмитрий Глашков

        Нет, вы неправильно поняли документацию. На официальным сайте чёрным по белому написано:
        sudo site domain.com -wp создаёт сайт на WordPress. То есть скачивает и распаковывает CMS, создаёт базу данных и пользователя, прописывает их в wp-config.php. Об успешном создании сайта скрипт и сообщает — «Site example.com has been successfully created!». Вам не нужно знать имя БД и пароль, ибо вводить их в таком сценарии не потребуется. А если всё-таки захотите узнать — смотрите содержимое wp-config.php.
        sudo site domain.com -wp=custom запустит тот самый пошаговый мастер создания сайта, который так хотите увидеть.

        Ответить

      • Денис Ефремов

        Я вчера тоже столкнулся с этой проблемой и долго не мог ее победить.

        Ответить

  9. Денис Ефремов

    Дмитрий, добрый день.
    В первую очередь хочу вас поблагодарить за столь детальный и толковый мануал, впервые у меня получилось развернуть свой сайт визитку на Водпрессе, на малинке, да еще и на своем сервере и на своем домене. Всё отлично работает с одним «но», сайт не работает почему-то извне. В настройках роутера перенаправил порты (хотя не факт, что правильно), но толку нет от этого.

    Ответить

  10. Павел

    добрый день, спасибо за статью!
    а как (возможно ли?) с этой панель настроить Nginx + Pagespeed ?

    Ответить

    • Дмитрий Глашков

      Павел, это совершенно точно возможно. Пошагово расписать не могу, только общий смысл: ставьте Webinoly как обычно (по моей инструкции), затем удаляйте Nginx не через команду stack, а средствами операционной системы (apt remove nginx), и собирайте из исходников либо ставьте из стороннего репозитория версию Nginx с модулем PageSpeed. Webinoly ведь всё равно, что за версия используется — это всего лишь скрипты, которые генерируют конфиги и манипулируют файлами, и если менять Nginx не через средства Webinoly, то оный и не заметит, что что-то изменилось. Затем, чтобы включить PageSpeed у сайтов, в их конфиг (который создаёт Webinoly по команде site) вписывайте директивы, которые описаны в документации к модулю PageSpeed («pagespeed on;» и др.).

      Ответить

  11. che100

    Интересный сайт и классная тема wp.
    Читаю с удовольствием.
    Не понимаю только, одного, почему не держите свой сервачек, а арендуете чужие мощности.

    Ответить

    • Дмитрий Глашков

      Спасибо за оценку моего труда.
      Все личные проекты летают на дешёвых VPS, нет смысла покупать дорогущий сервер.

      Ответить

  12. Вова

    Читал на сайте про летс-серты.
    Возможно ли на Webinoly выпускать серты автоматически для, например, сайта login.ru и зеркалом логин.рф?

    Ответить

    • Дмитрий Глашков

      Вова, Webinoly не выпускает сертификаты, а только запускает certbot и создаёт задание в cron для автоматического обновления сертификата. Что касается зеркал (parked в терминологии Webinoly) — поддерживаются, но не знаю, так ли, как вам нужно. Все возможности я описал в статье по ссылке выше.

      Ответить

Написать комментарий

Правила:
  • 1. Уважайте стороннее мнение. Токсичные комментарии удаляются.
  • 2. Комментарии со ссылками видны после проверки модератором.
  • 3. Обсуждение нелицензионного софта и других незаконных тем запрещено.

Тема Rowling от Anders Norén. Копирование материалов сайта разрешается только с указанием автора и активной ссылкой на источник.