Jump to content
  • entry
    1
  • comments
    2
  • views
    300

Поднимаем сервак на HestiaCP или Devops для самых маленьких


Nameless

1,627 views

 Share

 

 

 

 

Года полтора назад озадачился поиском удобной, легкой и бесплатной панели для управлением своего сервера дабы не лазеть лишний раз в консоль плюс клиенты тоже могли бы иметь доступ к базовым настройкам если понадобится. Пересмотрев всякие BrainyCP, aaPanel, VestaCP и тп на мой взгляд они были либо перегруженные, либо их недолюбили и они находятся в непонятном состоянии, что проще вообще без панели работать.

 Но в один момент нашел панель HestiaCP которая является ответвлением от VestaCP. Демо понравилось, приятный и минималистичный интерфейс, неплохое количество участников на гитхабе и дружелюбный форум. Использую больше года и пока не разочаровался.

Из удобств:

  • Доступ по SFTP/FTP, создание мультиаккаунтов
  • 2 Фактораня авторизация
  • Мулти php
  • Годные шаблоны настроек Nginx под разные cms
  • Доступ по SSH
  • Простое развертывание баз данных (PostgreSQL, MySQL 8, MariaDB 10.11) + PhpMyAdmin
  • Резервное копирование как локальное так и удаленное
  • Настройка лимитов для пользователей
  • Выпуск сертификата Let’s Encrypt одной кнопкой или вставкой купленного
  • Работа с DNS записями
  • Возможность организовать полностью свой почтовый сервер
  • Удобный файловый менеджер

Из минусов, нет такого количества модулей как в aaPanel или ISPmanager и тот же ioncube придется поставить руками, но и этот процесс упростили за последнее время

 До начала установки вам понадобиться GIT, тк в моем примере я использую консоль Git BASH, впрочем можно использовать веб версию консоли у хостера.

 В качестве хостера я выбрал 2 наиболее оптимальных вариантов:

  • Таймвеб если ваш проект в РФ и вам нужны все закрывающие доки и вы не хотите заморачиваться с оплатой зарубежных вариантов, мучиться с почтой.
  • Хецнер если нет проблем с оплатой за пределами РФ и ваш проект ближе по локациям к их серверам. Но у хецнера и других не дорогих зарубежных хостингов будет заблокирован 25/465 порт для отправки почты новорегов, а где-то совсем и вам придется использовать 585 порт через SMTP reley который к счастью поддерживает наша панель. По хецнеру в доке написано, что можно попросить через месяц разблокировать, по факту мне разблокировали месяца через 3-4 (разблокировать раньше не помогали даже скрины с DNS записями о том, что моя почта ходит через SMTP mail.ru) у таймвеба такой проблемы нет, просто пишите в саппорт и вам разблокируют.

 

Регистрируемся на timeweb.cloud (+300 рублей по ссылке), переходим в облачные сервера, выбираем ОС Ubuntu последней версии, максимально близкий ваш регион.

 

Спойлер

image.thumb.png.1ebc173e2fae35375df490677ff5b398.png

 

Для большинства среднестатистических магазинов подойдет такая конфигурация:

 

Спойлер

image.thumb.png.277dea4f9a5141e302dedcfb5fb00d76.png

 

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

Дальше для добавления SSH ключа нужно его сгенерировать, можно добавить и позже, но удобнее сразу:

 Запускаем Bash и вводим команду:

 

ssh-keygen -t rsa -b 4096 -C "ваша_почта" -f  ~/.ssh/имя-проекта_rsa

 

В папке C:\Users\текущий-пользователь\.ssh

У вас появится 2 файла имя-проекта_rsa (закрытый ключ) и имя-проекта_rsa.pub (открытый ключ).Открываем последний любым текстовым редактором и копируем содержимое сюда:

Спойлер

 

image.png.8f2550ee7348eaa2ad8973e6827f67c6.png

 

image.png.00ef07b00d8baf664363eddefcce3916.png

 

Все после чего вам приходит уведомление на почту с адресом сервера и стандартным именем суперпользователя для входа в систему под которым будем делать первоначальные настройки:

Спойлер

image.png.8fadd16f2fca4af4b870dabebafec3b2.png

 

Теперь переходим в настройки и копируем пароль для root:

 

Спойлер

image.thumb.png.86c53c5ff180d0969c76f64fde694852.png

 

Такой же аналог на Хецнер (+20 евро по ссылки после регистрации):


 

Спойлер

image.thumb.png.10f9244935183b4b1737952ea46dc16b.png

image.thumb.png.a42c7423631b3e9497705874450a0e15.png

image.thumb.png.e5485a84a1f9367d9a8b023633241b07.png

image.thumb.png.b2d9bfd980787f841eb62a6c8bbbad07.png

image.thumb.png.9eea60520dde32d9a7f17a6f54adbcee.png

image.thumb.png.31b8cb1faba3b27ad86f471d91fd9390.png

image.png.bfcb7cd7829521ba3e543d6f70487f40.png

 

Если будет несколько ключей, то этот можно назначить главным, в качестве имени можно указать почту

 

Добавить/удалить ключ можно будет и тут:

 

 

Спойлер

image.thumb.png.37da12c7fab957dfef2e3ac67785e606.png

 

Получилась такая красота:

 

Спойлер

 

image.png.0eaa5ad1fc815506b95ddde9ef04dc18.png

 

image.thumb.png.4092bf64ccb1ef27b625418c431f99b8.png

 

Тут пароль для root пользователя приходит сразу на почту:

 

Спойлер

image.png.c4dde6d2856e8228529611cc3ed2939e.png

 

Если что, его всегда можно скинуть тут:

 

Спойлер

image.thumb.png.70e6e2be3f9c76028719de0ffa2e9fd2.png

 

Погнали настраивать, открываем наш bash:

Вводим команду: ssh root@ip-адрес-нашего-сервера и пароль

 

 

Спойлер

image.thumb.png.1b974cf3703165a94fef10e5c406ba63.png

 

Все мы внутри, видно, что ресурсов задействовано совсем не много

Создаем нового пользователя, командой:

adduser new_user

 

Добавляем пароль, а остальные данные по желанию

 

Добавляем пользователя в группу администраторов:

usermod -aG sudo new_user

 

Запускаем поиск обновлений и одновременную их установку командой:

apt update && apt upgrade

 

Ставим sudo который позволит работать с правами администратора:

apt install sudo

 

Перезагружаем сервер:

shutdown -r now

 

Далее будем заходить только под логином созданного пользователя, те в bash для доступа к серверу нужно будет написать:

ssh new_user@ip-адрес-вашего-сервера

 

Ставим утилиту htop командой:

sudo apt install htop

 

Теперь запустив команду:

sudo htop

 

и можно посмотреть запущенные процессы, занятые ресурсы в удобном виде:

 

Спойлер

image.thumb.png.7d51a463a2bd774b2150971bf2ea7a23.png

 

Ставим файловый менеджер Midnight Commander:

sudo apt install mc

 

Запустим mc и получим удобную визуальную навигацию, чтобы получить доступ к редактированию системных папок и файлов нужно запускать утилиту с правами администратора:

 

sudo mc

 

После запуска переходим в папку /etc/ssh/ ищем файл sshd_config, нажимаем F4 и при первом запуске mc спросит какой редактор выбрать по умолчанию:

Спойлер

image.png.d638962716f72f200415270d61180e03.png

 

Выбирайте либо nano (1)  либо встроенный mcedit (3), про vim лучше сначала почитать или посмотреть пару видосов)

Ищем в файле строчку:

PermitRootLogin     yes

 

и меняем значение на no:

Спойлер

image.png.93e564480cdce2b3189c438dc11b250c.png

 

дальше ищем строчку:

PasswordAuthentication      yes

 

и делаем тоже самое:

Спойлер

image.png.10c1a680275d96d73f822c9708df5af0.png

 

Жмем F2 для сохранения если использовали mcedit или CTRL+O с перезаписью если вы использовали nano и CTR+X для выхода из редактора

Перезагружаем сервис SSH:

sudo service ssh restart
sudo systemctl restart ssh

 

Для более комфортной работы можно прописать алиасы для SSH ключей и не держать ip адрес сервера в голове, создадим в папке с ssh ключами файл config, откроем его и пропишем:

Host nash_sasait (удобное имя)
HostName 0.0.0.0 (ip адрес вашего сервера)
IdentityFile ~/.ssh/имя-проекта_rsa (имя закрытого SSH ключа)
User new_user (имя пользователя)
Port 22

 

теперь открыв bash вам достаточно ввести команду:

ssh nash_sasait

 

Таких настроек можно делать сколько угодно

Если сервер брали на хецнере, возможно захочется установить другое удобное локальное время, делается командой:

sudo dpkg-reconfigure tzdata

 

Для установки приятного глазу имя хоста, а не вот типо этого:

Спойлер

image.png.a81d534ca00ff8c7d2a17c0457a0b34d.png

 

воспользуемся командой:

sudo hostnamectl set-hostname ваше-красивое-имя

 

Посмотрим статус:

sudo hostnamectl status

 

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

Спойлер

image.png.8efcafeba7586f8dab92bab8ae1c45b9.png

 

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

  • почту
  • пароль админа
  • домен (в качестве домена я использую поддомен вида cp.основной домен, но вы можете использовать любой другой технический домен)
  • порт который можете менять можете не менять как по мне кому припрет все равно просканирует и найдет
Спойлер

image.thumb.png.3e89f917e3aeea6c1de07e9a34e92b71.png

 

Важно, если вы взяли сервер с 2 гб оперативы и не собираетесь использовать почтовый сервер, вы можете их отключить:

  • clamav (антивирус который будет жрать больше 1,2 гб оперативы)
  • spamassassin (антиспам)
  • dovecot (IMAP и POP3-сервер)
  • exim (почтовый агент)

Можно все это отключить и позже)

Копируем и поочередно вставляем команды в консоль с правами админа:

Спойлер

image.thumb.png.f47d2e4307057c231e0936990900c721.png

 

Если все сделано верно, начнется установка:

Спойлер

image.png.0c44054e147105974d52947778a61d45.png

 

После установки ваша панель будет доступна по адресу: ip-вашего-сервера:8083 (или тот порт который вы указали при установке):

Спойлер

image.png.43d4e27345f55f39e45315b723667f5b.png

 

Заходим внутрь панели и переходим на вкладку Web, жмем редактировать домен:

Спойлер

image.png.9ecf99a1797b10eb2ea3e999a2e8f1d4.png

 

Включаем 301 редирект и указываем в качестве адреса ваш ip-адрес-сервера:8083

Спойлер

image.png.5c7ed2af2ac17e03b29897973d73d728.png

 

Теперь не нужно держать в голове ip адрес, достаточно ввести имя поддомена и вы попадете в панель. но для этого еще нужно прописать А/АААA записи для поддомена

В настройках вашей панели где находятся домены, впишите в A запись ip адрес v4, а в AAAA ip v6 (для основного домена у вас будут те же адреса, также не забудьте их прописать)

Спойлер

image.thumb.png.2e2cc5f86f03020e3aabb06f995a5eda.png

 

Скопировать для таймвеба можно тут:

Спойлер

image.thumb.png.b15be5bfcb8db4dba8889923aa83a4cd.png

 

У хецнера тут:

Спойлер

image.thumb.png.10d5bf2f4ca56fd76876b586039bcf19.png

 

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

Спойлер

image.thumb.png.0592cdd8d2e2d2d93a81af48431cd457.png

image.thumb.png.5c8ad166abea0956a643a252874df276.png

 

после создания можно либо выйти из панели и залогиниться под новым пользователем либо можно перемещаться между логинами тут:

Спойлер

image.thumb.png.fe68bd490c399832a143cbadc596baaf.png

 

что удобно на период настроек

Далее добавляем основной домен сайта:

Спойлер

image.thumb.png.2af318dbf2b6b2f390077cc5e83ed880.png

 

И переходим в настройку домена:

Спойлер

image.png.e8bd4a76dc74e4a295eb44dc9f3c5b88.png

 

Включаем поддержку SSL, если будем использовать бесплатный Let's Encrypt, то включаем первый чекбокс, если у нас платный сертификат или заглючил Let's Encrypt и забанил нас на время, то можно вставить другой сертификат в эти поля (как вариант бесплатный временный сертификат можно сгенерировать тут):

Спойлер

image.png.c8680fe0c63e4b4f5d6a35a4fc94082d.png

 

Выбираем шаблон Nginx - opencart

Версию php в зависимости от версии вашего движка, у меня старая поэтому 5.6

Ниже создаем нужное количество FTP аккаунтов, если расположении пути нужно поменять отличное от дефолтного, отжимаем чекбокс выше и выбираем удобное:

Спойлер

image.png.51b7beff7746e31e7a3514032c6de9f5.png

 

Все, теперь можно подключиться по FTP и залить файлы движка:

Спойлер

image.png.0126d87adb9b4b4ba1d7656b38fb1d05.png

 

Настроим количество резервных копий, для этого перейдем в панель Пакеты под администратором:

Спойлер

image.thumb.png.aeb74c420a59cc3c1a7704173292f7e9.png

 

Индикатор максимальных доступных резервных копий:

Спойлер

image.thumb.png.2d424c64fd7d40df9a12f03676de24db.png

 

пакет system установлен для пользователя администратор по умолчанию, удалить и редактировать нельзя. Можно сделать копию и отредактировать ее и выбрать для администратора, но сейчас нам достаточно отредактировать пакет default который включен по умолчанию для всех остальных пользователей:

Спойлер

image.png.a3f670f4fdf9dc3e43c1dd8c18701b34.png

 

Мне достаточно 2 локальных копий, также можно сделать настройки по умолчанию шаблона Nginx/php/ssh и прочие

Доступные резервные копии можно скачать или развернуть перейдя на соответствующую вкладку под нужным пользователем:

Спойлер

image.thumb.png.9135d8052fbddfe61f4506c8db6eb6d2.png

 

Важно, архивы по умолчанию будут запакованы методом zstd, для распаковки нужно отдельный плагин для 7zip или такой архиватор скачать, но можно и включить метод сжатия gzip, для настройки нужно перейти в настройки панели под админом:

Спойлер

image.thumb.png.7d8a8a8172ef89c6142d173875aaaef2.png

image.png.bb8ec08e1896050604fc55b079b33bcb.png

 

Если вы заметите, что резервные копии перестали создаваться, то скорее всего у вас недостаточно свободного места на диске, тогда либо уменьшите количество резервных копий либо докупить свободное место, либо сливайте на внешней FTP. Например есть такой дешман вариант холодного хранилища от яндекса:

Спойлер

image.thumb.png.eca8fc30230b5d8a2c7fda6340e60b43.png

 

Теперь перейдем опять в консоль и установим Ioncube без которого не будут работать платные модули:

wget https://raw.githubusercontent.com/jaapmarcus/ioncube-hestia-installer/main/install_ioncube.sh
chmod +x install_ioncube.sh
./install_ioncube.sh

 

После посмотрим установленную версию php и загрузку ионкуба командой:

php -v

 

Спойлер

image.thumb.png.6157c33c46cd06d1daba371b06476951.png

 

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

Теперь создадим базу данных из под пользователя:

Спойлер

image.thumb.png.9c36fac48a1e66562c23a23fe92f73eb.png

image.png.8241060a8247cd9d3cb4b793d865926e.png

 

Название базы данных, имя пользователя и пароль не забудьте сохранить, эти данные нужны будут при инсталяции движка. При установки cms из списка доступных приложений панели база данных будет создана автоматически (opencart там доступен только последней версии из официального репозитория, клубной сборки там конечно же не будет)

Для запуска phpMyAdmin нужно отредактировать файл:

sudo nano /etc/nginx/conf.d/ip-вашего-сервера.conf

 

Заменив:

location /phpmyadmin/ {
  alias /var/www/document_errors/;
  return 404;
}
location /phppgadmin/ {
  alias /var/www/document_errors/;
  return 404;
}

 

На:

include     /etc/nginx/conf.d/phpmyadmin.inc*;
include     /etc/nginx/conf.d/phppgadmin.inc*;

 

У себя я просто закомментировал эти строки:

Спойлер

image.png.d7136329e610edcbcc5b53d3b7833c4e.png

 

Системная версия php должны быть выше версии 7.2.5 иначе получите такую ошибку:

Спойлер

image.png.f9bd98226f9e497bfed650f2afb7c224.png

 

Системную версию php можно просмотреть, изменить и включить дополнительные версии в настройках панели тут:

Спойлер

image.thumb.png.9df3a474b2161afe25530799bc41a96c.png

 

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

Спойлер

image.thumb.png.2aa471aac2e485f9ddaf8875388030cb.png

 

Жмем добавить правило:

Спойлер

image.png.c8289642c2cd06b49d20762798bf3f12.png

 

Добавляем доступ к порту 3306 (порт нашей базы данных), если в адресе оставить все нули, то доступ будет с любого ip адреса, безопаснее сделать доступ только с вашего выделенного ip

Далее запускаем Bash и редактируем, файл:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

 

Ищем строку bind-address и указываем либо:

bind-address = 0.0.0.0

 

для доступа с любого ip либо ваш статический ip адрес

Спойлер

image.png.50c350f057f201d7879e86d7c1f8e4cd.png

 

После создания базы данных можно открыть HeidiSQL и настроить новое подключение указав имя сервера, имя пользователя базы данных и пароль:

Спойлер

image.thumb.png.595a0332d53e64f19a465420382b8a15.png

 

Ну вот как бы и все, после того как залили файлы движка можно приступить к установке, также можно выполнить установку cms не только opencart из панели, но там доступна только последняя версия из официального репозитория, которая пока сырая, но тот же wordpress поставить не зазорно из панели, делается это через вкладку приложения в настройках вашего домена:

Спойлер

image.thumb.png.eb3ff875eedf77c846da149867292fdc.png

 

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

Спойлер

image.thumb.png.dd424293c6ee65f6ba5bf7c14a11a26d.png

 

 

 

Edited by Nameless

 Share

2 Comments


Recommended Comments

В 25.11.2023 в 14:42, kvant08 сказал:

Хорошая статья.

У меня такой вопрос: как устaновить hestiacp но с PHP 7.4 и Opencart 3 ?

С уважением Живко

 

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

image.thumb.png.14e957d9319f0ddc5df179831e0dab92.png

Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...