[Настройка Linux, Системное администрирование, *nix] Почему хабражители предпочитают велосипеды, вместо готовых решений? Или о systemd, part 0
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
С Новым Годом, Хабр!
Первого января все нормальные люди занимаются прокрастинацией, уничтожением стратегического запаса оливье и прочими, не связанными с физической или интеллектуальной нагрузкой вещами. Вот и я планировал присоединиться к этой новогодней армии, но не тут-то было!Во всём виноват Хабр!…. Точнее хабражители! А, если ещё точнее, всему виной — предновогодние статьи, в которых два никак не связанных между собой юзера изобрели два почти одинаковых велосипеда. Итак, встречайте моих сегодняшних героев!Как создавался новогодний Хабрачат в этом году
Скачивается бинарник под нужную платформу из релизов на github. Можно положить его, например, в /usr/bin. Далее пишем простой скрипт, который будет перезапускать сервер, в случае падения.… (пропущен башизм с бесконечным циклом и прочими sleep-ами)
© оригиналБезумный дом
В процессе эксплуатации я заметил, что Domoticz иногда падает с ошибкой. Чтобы поднимать его автоматически, напишу watchdog с помощью cron.… (пропущены башизм, на пару с кронтабом)Теперь каждые 5 минут будет запускаться скрипт, который проверит, работает ли Domoticz и перезапустит его, если это необходимо
© оригиналЧто с этим делать и как дальше жить?Я совершенно не планировал писать статью освещающую самые основы systemd, у меня в планах, цикл статей из разряда «systemd для продолжающих», но жизнь, как видно, вносит свои коррективы, в результате пусть моя сегодняшняя, коротенькая статья будет своеобразным прологом к планируемуму циклу. Но так как про написание сервисных юнитов systemd написано 100500 хаутушек, то мы осветим только параметры относящиеся к автоматическому перезапуску сервисов, на конкретных примерах (и на затравку кое что ещё ;-), в применении к статьям двух уважаемых хабровчан.Делаем всё по фен-шуюНу я надеюсь вы тут все достаточно технически грамотные, поэтому я сразу приведу готовые, самодокументированные юниты и конфиги, а так-же команды запуска всего этого безобразия.«Как создавался Хабрачат в этом году»Юнит(/etc/systemd/system/ssh-chat.service):
[Unit]
Description=SSH Chat Service
After=network.target network-online.target
[Service]
# Пользователь и группа с правами которых будет запускаться сервис
User=ssh-chat
Group=ssh-chat
Type=Simple
ExecStart=/usr/local/bin/ssh-chat --admin=/etc/ssh-chat/admins --bind=0.0.0.0:22 --log /var/log/ssh-chat.log --motd=/etc/ssh-chat/motd
# В каких случаях сервис будет автоматически перезагружаться.
# on-failure — в случае выхода с ненулевым кодом возврата.
Restart=on-failure
# Таймаут перед загрузкой сервиса, после падения.
RestartSec=1
# Capablities для сервиса. В данном случае - разрешение сервису
# биндиться на привилегированные порты (< 1000)
AmbientCapablities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multiuser.target
Конфиг для systemd-sysusers.service(/etc/sysusers.d/ssh-chat.conf):
u ssh-chat - "SSH Chat user" /etc/ssh-chat
# Поля записи:
# u : создаём пользователя
# ssh-chat : username
# - : или UID[:GID] в данном случае автоматически занять свободные UID/GID < 1000
# "SSH Chat user" : Описание, или "-", если не нужно.
# /etc/ssh-chat : Home Directory
# Может быть ещё одно поле -- login shell. По умолчанию /usr/bin/nologin
Инсталляция и запуск:
sudo systemctl restart systemd-sysusers.service && sudo systemctl enable --now ssh-chat
«Безумный дом»Юнит(/etc/systemd/system/domoticz.service):
[Unit]
Description=Domoticz Daemon
After=network.target
[Service]
User=http
Group=http
# Эта директива позволяет выполнять подготовительные действия перед
# запуском сервиса. Модификатор "+" указывает выполнять их от рута.
ExecStartPre=+/usr/bin/install -d -m 0700 -o http -g http /var/run/domoticz
ExecStart=/opt/domoticz/domoticz -www 8080 -pidfile /var/run/domoticz/domoticz.pid
PIDFile=/var/run/domoticz/domoticz.pid
WorkingDirectory=/opt/domoticz
# Всё то же самое, что и в случае "хабрачата", только таймаут 5 секунд.
RestartSec=5
Restart=on-failure
[Install]
WantedBy=multi-user.target
Инсталляция и запуск:
sudo systemctl enable --now domoticz
Что дальше?Возможности systemd, кратко освещённые в этой статье, а так-же многие другие, более подробно будут разобраны в следующих статьях цикла. Триггеры, поддержка бинарных форматов, «прозрачные»(transient) юниты, встроенная контейнеризация and more, more... Но нетерпеливые могут уже «вот прям щаз» заняться чтением одной из лучших документаций в мире линукс. Маны которые можно почитать по сегодняшней теме:
man systemd.unit
man systemd.service
man systemd.exec
man systemctl
man sysusers.d
man systemd-sysusers
И на закуску маленький секрет. Один из моих любимых манов: man systemd.directives - путеводитель по всем директивам конфигурации которые могут встретиться вам в процессе изучения systemd. Ещё раз С новым Годом, Хабр! И используйте правильные инструменты! PS: Добавил ссылку на ман по systemd.exec. Как-то я про него малость забыл.
===========
Источник:
habr.com
===========
Похожие новости:
- [Настройка Linux, Разработка под Arduino, Разработка на Raspberry Pi, Умный дом] Безумный дом
- [Промышленное программирование, SCADA] Веселые уроки WinCC OA. Установка WinCC OA под Debian и перенос прикладного проекта
- [Информационная безопасность, Системное программирование, Разработка под Linux] Карантин для динамической памяти ядра Linux
- [IT-инфраструктура, Сетевые технологии, Разработка систем связи, Разработка под Linux] Безопасные города без зоопарка
- [Системное администрирование, Разработка под iOS, Разработка под MacOS] 1008F — или как раскирпичить свой Mac
- [Системное администрирование, Apache, Big Data, DevOps] Практический взгляд на хранение в Kafka (перевод)
- [Настройка Linux, Разработка под Linux, Игры и игровые приставки] Linux портируют на Nintendo 64
- [Настройка Linux, Разработка на Raspberry Pi] Kali Linux на Raspberry Pi: просто, быстро, понятно
- [Open source, *nix] FOSS News №48 – дайджест новостей и других материалов о свободном и открытом ПО за 21-27 декабря 2020 года
- [.NET, ASP, C#, Разработка под Linux, DevOps] Как готовить Cake, используя только Frosting
Теги для поиска: #_nastrojka_linux (Настройка Linux), #_sistemnoe_administrirovanie (Системное администрирование), #_*nix, #_systemd, #_linux, #_faulttolerant, #_nastrojka_linux (
Настройка Linux
), #_sistemnoe_administrirovanie (
Системное администрирование
), #_*nix
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 08:36
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
С Новым Годом, Хабр! Первого января все нормальные люди занимаются прокрастинацией, уничтожением стратегического запаса оливье и прочими, не связанными с физической или интеллектуальной нагрузкой вещами. Вот и я планировал присоединиться к этой новогодней армии, но не тут-то было!Во всём виноват Хабр!…. Точнее хабражители! А, если ещё точнее, всему виной — предновогодние статьи, в которых два никак не связанных между собой юзера изобрели два почти одинаковых велосипеда. Итак, встречайте моих сегодняшних героев!Как создавался новогодний Хабрачат в этом году Скачивается бинарник под нужную платформу из релизов на github. Можно положить его, например, в /usr/bin. Далее пишем простой скрипт, который будет перезапускать сервер, в случае падения.… (пропущен башизм с бесконечным циклом и прочими sleep-ами)
В процессе эксплуатации я заметил, что Domoticz иногда падает с ошибкой. Чтобы поднимать его автоматически, напишу watchdog с помощью cron.… (пропущены башизм, на пару с кронтабом)Теперь каждые 5 минут будет запускаться скрипт, который проверит, работает ли Domoticz и перезапустит его, если это необходимо
[Unit]
Description=SSH Chat Service After=network.target network-online.target [Service] # Пользователь и группа с правами которых будет запускаться сервис User=ssh-chat Group=ssh-chat Type=Simple ExecStart=/usr/local/bin/ssh-chat --admin=/etc/ssh-chat/admins --bind=0.0.0.0:22 --log /var/log/ssh-chat.log --motd=/etc/ssh-chat/motd # В каких случаях сервис будет автоматически перезагружаться. # on-failure — в случае выхода с ненулевым кодом возврата. Restart=on-failure # Таймаут перед загрузкой сервиса, после падения. RestartSec=1 # Capablities для сервиса. В данном случае - разрешение сервису # биндиться на привилегированные порты (< 1000) AmbientCapablities=CAP_NET_BIND_SERVICE [Install] WantedBy=multiuser.target u ssh-chat - "SSH Chat user" /etc/ssh-chat
# Поля записи: # u : создаём пользователя # ssh-chat : username # - : или UID[:GID] в данном случае автоматически занять свободные UID/GID < 1000 # "SSH Chat user" : Описание, или "-", если не нужно. # /etc/ssh-chat : Home Directory # Может быть ещё одно поле -- login shell. По умолчанию /usr/bin/nologin sudo systemctl restart systemd-sysusers.service && sudo systemctl enable --now ssh-chat
[Unit]
Description=Domoticz Daemon After=network.target [Service] User=http Group=http # Эта директива позволяет выполнять подготовительные действия перед # запуском сервиса. Модификатор "+" указывает выполнять их от рута. ExecStartPre=+/usr/bin/install -d -m 0700 -o http -g http /var/run/domoticz ExecStart=/opt/domoticz/domoticz -www 8080 -pidfile /var/run/domoticz/domoticz.pid PIDFile=/var/run/domoticz/domoticz.pid WorkingDirectory=/opt/domoticz # Всё то же самое, что и в случае "хабрачата", только таймаут 5 секунд. RestartSec=5 Restart=on-failure [Install] WantedBy=multi-user.target sudo systemctl enable --now domoticz
man systemd.unit
man systemd.service man systemd.exec man systemctl man sysusers.d man systemd-sysusers =========== Источник: habr.com =========== Похожие новости:
Настройка Linux ), #_sistemnoe_administrirovanie ( Системное администрирование ), #_*nix |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 08:36
Часовой пояс: UTC + 5