← Wszystkie artykuły i nowości

Linux i hosting

Aplikacja Python jako usługa systemd

Wirtualne środowisko, restart po błędzie i logi w journalu. Przykład nie wymaga uruchamiania aplikacji jako root.

MerMiko2 min czytania

Oddziel kod od uprawnień administratora

Długotrwała aplikacja powinna działać na osobnym koncie systemowym. Przygotuj katalog projektu, wirtualne środowisko i plik startowy. Najpierw uruchom program ręcznie jako docelowy użytkownik, używając tego samego interpretera, który później trafi do usługi. Błędu importu nie naprawi automatyczny restart.

Zapisz jednostkę

Przykład dotyczy projektu w /opt/moj-bot oraz istniejącego użytkownika botapp. Utwórz plik /etc/systemd/system/moj-bot.service i dopasuj ścieżki.

[Unit]
Description=Moj bot Python
After=network.target

[Service]
Type=simple
User=botapp
WorkingDirectory=/opt/moj-bot
ExecStart=/opt/moj-bot/venv/bin/python -u main.py
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
PrivateTmp=true

[Install]
WantedBy=multi-user.target

network.target nie obiecuje dostępu do Internetu. Program powinien obsługiwać utratę połączenia i ponawiać je z opóźnieniem. Opcja -u ułatwia bieżący odczyt wyjścia Pythona w journalu.

Uruchom i sprawdź

sudo systemctl daemon-reload
sudo systemctl enable --now moj-bot.service
systemctl status moj-bot.service
journalctl -u moj-bot.service -n 50 --no-pager

Status „active” oznacza uruchomiony proces, a nie potwierdzenie działania każdej funkcji. Osobno wykonaj test połączenia z usługą zewnętrzną i sprawdź odpowiedź programu. Przy awarii odczytaj pierwszy błąd w logu, zanim zwiększysz limity restartów.

Sekrety i aktualizacje

Nie wpisuj tokenu w ExecStart ani do repozytorium. Sposób przekazania sekretu dopasuj do wersji systemd i aplikacji; plik konfiguracyjny musi mieć ograniczone uprawnienia. Aktualizację testuj w osobnym środowisku, a po wdrożeniu zachowaj poprzednią wersję kodu i zestaw zależności. Usługa nie zastępuje kopii bazy danych ani monitoringu.

Źródła i dokumentacja

Odnośniki do źródeł pozwalają sprawdzić daty, dostępność oraz pełny kontekst informacji.

Czytaj dalej

Biblioteka poradników Najnowsze wiadomości