Создание systemd-unit
1. Создай скрипт
sudo mkdir -p /opt/devops-http sudo nano /opt/devops-http/server.py
Вставь:
from http.server import HTTPServer, BaseHTTPRequestHandler
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
self.wfile.write(b"Hello from systemd service\n")
server = HTTPServer(("0.0.0.0", 8080), Handler)
server.serve_forever()
Сделай исполняемым:
sudo chmod +x /opt/devops-http/server.py
Проверь вручную:
python3 /opt/devops-http/server.py
В другом терминале:
curl http://localhost:8080
Останови сервер Ctrl+C. IMPORTANT: Обрати внимание, что скрипт создавался в /opt, так как это стандартная директория для сторонних приложений. При создании скрипта в ней не будет проблем с правами доступа, так как в /opt обычно нет ограничений на запись для root.
2. Создай systemd-юнит
sudo nano /etc/systemd/system/devops-http.service
Вставь:
[Unit] Description=DevOps Practice HTTP Server After=network.target [Service] Type=simple ExecStart=/usr/bin/python3 /opt/devops-http/server.py Restart=always RestartSec=3 MemoryMax=100M CPUQuota=50% User=nobody Group=nogroup [Install] WantedBy=multi-user.target
3. Активируй сервис
sudo systemctl daemon-reload sudo systemctl enable devops-http.service sudo systemctl start devops-http.service
Проверка:
systemctl status devops-http.service curl http://localhost:8080
4. Проверка рестарта при падении
Узнай PID:
systemctl show devops-http.service -p MainPID
Убей процесс:
sudo kill -9 <PID>
Проверь, что поднялся снова:
systemctl status devops-http.service curl http://localhost:8080
5. Смотреть логи
journalctl -u devops-http.service -f