Авторская информация о системном администрировании.
# sh <(curl https://cyberpanel.net/install.sh || \
wget -O - https://cyberpanel.net/install.sh)
Я развернул и потестировал панель. Установилась без моего участия. В веб интерфейсе есть поддержка русского языка. Выглядит прилично, функционал впечатляет. В настройках глаза разбегаются. Там даже управление Docker контейнерами и образами есть, чего в описании на сайте я не увидел.
В процессе тестирования понял, на чём зарабатывает эта панель. Упомянутый WordPress Manager платный. Реализован в виде дополнения к панели, как и некоторые другие дополнительные функции. В целом, это нормальный подход для развития и поддержки панели. Есть шанс, что её не забросят, когда автору надоест ей заниматься. Ещё из платных возможностей: Rspamd, бэкапы на Google Drive, Файловый менеджер по всему серверу. И всё. Все остальные функции бесплатны.
По использованию ничего особенного не скажу. Всё плюс-минус как у всех. Добавляете домен, создаёте сайт. К нему можно тут же почту завести, DNS записи домена сделать и т.д.
Панель живая, развивается и поддерживается. Имеет большое сообщество. На форуме очень много активных тем. Автор — некий Usman Nasir. Похож на иранца или индуса. Не смог распознать точнее. Все видео на youtube канале на забавном английском, большую часть из которых озвучивает необычная женщина.
❗️На всякий случай скажу, что если можете обойтись без панели управления, обходитесь. Они в основном нужны тем, кто не разбирается в настройке веб серверов. Например, сеошники со своими сайтами. У них их десятки могут быть, которыми они сами управляют через панели. Либо тем, кто обслуживает множество клиентов на своём сервере. Тут без панели тоже неудобно. Я на тех серверах, что обслуживаю сам, панели никогда не ставлю. Это сильно сужает возможности по настройке и увеличивает риски по безопасности.
⇨ Сайт / Исходники
#hosting_panel# docker run -d --restart unless-stopped \
-p 80:80 -p 81:81 -p 443:443 \
-v ./data:/data -v ./letsencrypt:/etc/letsencrypt \
jc21/nginx-proxy-manager:latest
Далее идёте на 81-й порт своего сервера и логинитесь под учёткой [email protected] / changeme. Не забудьте сразу поменять, если он смотрит в интернет. Вся конфигурация и сертификаты будут храниться в созданных директориях, так что их удобно бэкапить.
Это хобби-проект одного разработчика, так что в прод такое ставить не стоит. А себе домой или для тестов вполне сойдёт. Приятный продукт с красивым веб интерфейсом, который решает одну конкретную задачу. И делает это хорошо. Рекомендую, если вам нужна подобная функциональность.
⇨ Сайт / Исходники / Обзор / NPM vs Traefik
#nginx #webserver# sed 's/old_function/new_function/g' oldfilename > newfilename
Или посложнее пример с вырезанием вредоносного куска кода из всех файлов, которые заразил какой-то вирус. Допустим, это некий код следующего содержания:
<script>function aeaab19d(a)...................</script>
Текста между тэгами script может быть много, поэтому искать проще всего по этому тэгу и началу строки с function aeaab19d(a).
# sed -r 's/<script>function aeaab19d\(a\).*?<\/script>//' test.php
Тут я использую ключ -r для поддержки регулярных выражений, конкретно .*?.
Можно ещё усложнить и выполнить замену кода между каких-то строк. Для усложнения возьмём какой-нибудь XML:
<username><![CDATA[user01]]></username>
<password><![CDATA[password01]]></password>
<dbname><![CDATA[database]]></dbname>
Заменим user01 на user02
# sed -r 's/(<username>.+)user01(.+<\/username>)/\1user02\2/' test.xml
Тут важны круглые скобки и \1 и \2. Мы в первой части выражения запомнили текст в круглых скобках, а во второй части его использовали — сначала первую скобку, потом вторую.
Это были примеры для одиночных файлов, а теперь добавляем сюда find и используем sed на любом наборе файлов, который найдёт find.
# find /var/www/ -type f -name \*.php -exec \
sed -i -r 's/<script>function aeaab19d\(a\).*?<\/script>//' {} \;
Добавляем к sed ключ -i для того, чтобы он сразу изменял файл. Кстати, для find наиболее популярные примеры можете посмотреть через тэг #find.
Очень аккуратно выполняйте массовые действия. Сначала всё отладьте на тестовых файлах. Потом сделайте бэкап исходных файлов. И только потом выполняйте массовые изменения. И будьте готовы быстро всё откатить обратно.
Примеры рекомендую записать. Если надо быстро что-то сделать, то сходу правильно регулярку вы так просто не наберёте. К тому же в таком использовании есть свои нюансы. К примеру, я так и не смог победить команду sed, которая удаляет весь код <script>, если внутри есть переход на новую строку. Вроде бы легко найти, как заставить . в регулярках учитывать и переход на новую строку, но на практике у меня это не получилось сделать. Я не понял, как правильно составить выражение для sed.
Не забывайте про сервисы, которые помогают отлаживать регулярки. Собрал их в отдельной заметке.
#linux #bash #script# nc -U /run/mysqld/mysqld.sock
В ответ получите то же самое, что получили бы, если бы обратились к tcp порту через telnet:
# telnet 127.0.0.1 3306
Я лично почти всегда использую unix сокет для локальных сервисов, если они его поддерживают.
#linux