Program przestaje działać gdy zamykam ssh!

Twoja aplikacja którą uruchamiasz po przez SSH, na przykład:

flask --app webapp run

to masz kilka opcji:

screen

Zainstaluj screen

sudo apt update && sudo apt install screen -y
screen
# tutaj otwiera się wirtualny terminal, wygląda tak samo
flask --app webapp run
# ^a d - czyli wciśnij (i trzymaj) Ctrl i naciśnij kolejno "a" oraz "d" (taraz `możesz puścić Ctrl)

Teraz twój wirtualny terminal został ‘odłączony’ i możesz się normalnie rozłączyć wpisując exit, wciskając Ctrl+D lub zamykając okno.

Przy tej konfiguracji po restarcie systemu twoja aplikacja NIE zostanie ponownie uruchomiona automatycznie!

Gdy chcesz wrócić do aplikacji wystarczy wpisać screen -r -d by wrócić do ostatniej sesji.

Poleceniem screen -list możesz wyświetlić aktywne wirtualne ekrany. Pamiętaj, pokazane zostanę tylko ekrany uruchomione przez tego samego użytkownika!

Screen ma wiele więcej opcji które można znaleźć pod poleceniem man screen

systemd

Systemd to menadżer systemu i usług od którego możesz dodać swoją aplikację. Ma to przewagę nad screen pozwalając na większą automatyzację, automatycznie uruchamianie, restartowanie oraz skryptowalność.

Umieść w pliku /usr/lib/systemd/system/mojaaplikacja.service zamieniając mojaaplikacja na nazwę swojej aplikacji.

[Unit]
Description=Foo

[Service]
WorkingDirectory=/root/mojaapkawpython
; aplikacja znajduje się w /root/mojaapkawpython
ExecStart=/bin/env flask --app webapp run
; aplikacja uruchamiana przez flask, zmień na swoją

[Install]
WantedBy=multi-user.target

Gdy uruchamiasz swoją aplikację napisaną w innej technologi zmień ExecStart= na polecenie którego chcesz użyć.

Aby uruchomić swoją aplikację użyj

systemctl start mojaaplikacja

Jeżeli chcesz by aplikacja uruchamiała się automatycznie podczas startu systemu możesz to włączyć poleceniem

systemctl enable mojaaplikacja

Warto zaznaczyć że w przypadku Pythona z flask powinno się użyć serwera WSGI, na przykład Gunicorn. Użycie zostało pominięte dla jasności przekazu oraz możliwością na użycie innej technologii niż Python

pm2

PM2 to menedżer procesów dla aplikacji Node.js. Pozwala na utrzymanie aplikacji przy życiu na zawsze, ponowne ich ładowanie bez przestojów i ułatwia wykonywanie typowych zadań administracyjnych systemu. (Z oficjalnej dokumentacji)

Instalacja (wymaga npm):

npm install pm2 -g

Następnie można uruchomić swoją aplikację za pomocą

pm2 start app.js

Listę działających aplikacji oraz ich status można sprawdzić za pomocą:

pm2 list

Pełna dokumentacja PM2

Powrót do strony głównej