Admin Future
241 subscribers
51 photos
1 video
4 files
120 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
Linux: "Служба" своими руками. Пишем systemd unit-файл

Хватит запускать важные скрипты "руками" через nohup ./script.sh &. Путь инженера — превратить любой скрипт или приложение в управляемую службу. В современном Linux это делается через systemd unit-файлы.

Задача: Превратим простой Python веб-сервер в службу my-app.service.
1. Ваш скрипт (для примера /opt/my-app/app.py):

Python

#!/usr/bin/env python3
# Простой веб-сервер
from http.server import HTTPServer, BaseHTTPRequestHandler

class SimpleHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
self.wfile.write(b'Hello from Admin Future!')

httpd = HTTPServer(('0.0.0.0', 8000), SimpleHandler)
httpd.serve_forever()

2. Создаем unit-файл: sudo nano /etc/systemd/system/my-app.service

Ini, TOML

[Unit]
Description=My Simple Python Web App
After=network.target

[Service]
Type=simple
# Запускаем от имени 'www-data' для безопасности
User=www-data
Group=www-data

# Указываем путь к нашему скрипту
ExecStart=/usr/bin/python3 /opt/my-app/app.py

# Автоматический перезапуск в случае сбоя
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

3. Запускаем и "включаем" службу:
Bash

# Перечитать конфиги, чтобы systemd увидел новый файл
sudo systemctl daemon-reload

# Запускаем службу
sudo systemctl start my-app

# Проверяем статус
sudo systemctl status my-app

# Включаем автозапуск при загрузке ОС
sudo systemctl enable my-app

Взгляд архитектора: Вы не просто "запустили скрипт". Вы декларативно описали его жизненный цикл. Теперь ОС сама следит за ним, перезапускает при сбоях (Restart=on-failure), запускает в нужном порядке (After=network.target) и от имени нужного пользователя. Это первый шаг к построению отказоустойчивых (self-healing) систем.

#linux #systemd #python #automation #devops #гайд #скрипты
👍4
Linux: `systemd-nspawn` — контейнеры без Docker

Боль:
Вам нужно быстро протестировать скрипт или сервис на "чистой" Ubuntu 24.04, но у вас RHEL. Вы не хотите ставить Docker, настраивать daemon.json или разворачивать тяжелую VM.

Решение: systemd-nspawn Это "секретное оружие" systemd . По сути, это chroot на стероидах, который встроен в вашу ОС. Он запускает легковесные контейнеры, используя то же ядро, но с полной изоляцией процессов и файловой системы.

Как это работает (на пальцах):

1. Создаем образ ОС (например, Ubuntu):
Bash

# (Нужен `debootstrap`)
sudo debootstrap jammy /srv/ubuntu-jammy

2. Запускаем контейнер:
Bash

# -D = директория
# -b = загрузиться в контейнер (boot)
sudo systemd-nspawn -D /srv/ubuntu-jammy -b

Готово. Вы в полноценной Ubuntu, которая запущена как сервис systemd .

Взгляд архитектора: Это идеальная "песочница" для отладки. Вы получаете полную, загружаемую ОС-контейнер без оверхеда Docker-демона. systemd-nspawn — лучший инструмент для тестирования systemd -юнитов и проверки скриптов в чистой среде перед "раскаткой" в прод.

#linux #systemd #container #devops #sre #гайд
👍2