Systemd#
Systemd to domyślny menedżer systemu i usług w większości dystrybucji Linuksa. Zazwyczaj jest zainstalowany domyślnie, więc nie jest wymagana żadna instalacja we wspieranych dystrybucjach Swift.
Konfiguracja#
Każda aplikacja Vapor na Twoim serwerze powinna mieć swój własny plik usługi. Dla przykładowego projektu Hello, plik konfiguracyjny znajdowałby się w /etc/systemd/system/hello.service. Ten plik powinien wyglądać następująco:
[Unit]
Description=Hello
Requires=network.target
After=network.target
[Service]
Type=simple
User=vapor
Group=vapor
Restart=always
RestartSec=3
WorkingDirectory=/home/vapor/hello
ExecStart=/home/vapor/hello/.build/release/App serve --env production
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=vapor-hello
[Install]
WantedBy=multi-user.target
Zgodnie z tym, co określono w naszym pliku konfiguracyjnym, projekt Hello znajduje się w folderze domowym użytkownika vapor. Upewnij się, że WorkingDirectory wskazuje na katalog główny Twojego projektu, w którym znajduje się plik Package.swift.
Flaga --env production wyłączy szczegółowe logowanie.
Zmienne środowiskowe#
Poza tym cytowanie wartości jest opcjonalne, ale zalecane.
Możesz eksportować zmienne za pomocą systemd na dwa sposoby. Albo tworząc plik środowiskowy z wszystkimi ustawionymi w nim zmiennymi:
EnvironmentFile=/path/to/environment/file1
EnvironmentFile=/path/to/environment/file2
Albo możesz dodać je bezpośrednio do pliku usługi w sekcji [service]:
Environment="PORT=8123"
Environment="ANOTHERVALUE=/something/else"
Wyeksportowanych zmiennych można używać w Vapor za pomocą Environment.get
let port = Environment.get("PORT")
Uruchamianie#
Możesz teraz wczytać, włączyć, uruchomić, zatrzymać i zrestartować swoją aplikację, uruchamiając poniższe polecenia jako root.
systemctl daemon-reload
systemctl enable hello
systemctl start hello
systemctl stop hello
systemctl restart hello