Ga naar inhoud

Systemd

Systemd is het standaard systeem en service manager op de meeste Linux distributies. Het wordt meestal standaard geïnstalleerd, zodat geen installatie nodig is op ondersteunde Swift-distributies.

Configureren

Elke Vapor app op uw server zou zijn eigen service bestand moeten hebben. Voor een voorbeeld Hello project, zou het configuratie bestand te vinden zijn in /etc/systemd/system/hello.service. Dit bestand zou er als volgt uit moeten zien:

[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

Zoals gespecificeerd in ons configuratie bestand bevindt het Hello project zich in de thuismap van de gebruiker vapor. Zorg ervoor dat WorkingDirectory wijst naar de root directory van uw project waar het Package.swift bestand staat.

De --env production vlag schakelt verbose logging uit.

Environment

Anders is het citeren van de waarden optioneel maar aanbevolen.

Je kunt variabelen op twee manieren exporteren via systemd. Ofwel door een omgevingsbestand aan te maken met alle variabelen erin ingesteld:

EnvironmentFile=/path/to/environment/file1
EnvironmentFile=/path/to/environment/file2

Of u kunt ze direct toevoegen aan het service bestand onder [service]:

Environment="PORT=8123"
Environment="ANOTHERVALUE=/something/else"

Geëxporteerde variabelen kunnen in Vapor gebruikt worden met Environment.get

let port = Environment.get("PORT")

Start

U kunt nu uw app laden, inschakelen, starten, stoppen en herstarten door het volgende uit te voeren als root.

systemctl daemon-reload
systemctl enable hello
systemctl start hello
systemctl stop hello
systemctl restart hello