Systemd¶
Systemd es el gestor de sistema y servicios por defecto en la mayoría de distribuciones de Linux. Normalmente está instalado por defecto, así que no se necesita ninguna instalación en las distribuciones de Swift soportadas.
Configuración¶
Cada aplicación Vapor en tu servidor debería tener su propio fichero de servicio. Para un proyecto Hello
de ejemplo, el fichero de configuración estaría localizado en /etc/systemd/system/hello.service
. Este fichero debería tener lo siguiente:
[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
Tal y como está especificado en nuestro fichero de configuración, el proyecto Hello
se encuentra en la carpeta "home" del usuario vapor
. Asegúrate de que WorkingDirectory
apunta al directorio raíz de tu proyecto, que es donde el fichero Package.swift
está.
La marca (flag) --env production
deshabilitará el registro detallado.
Entorno¶
De lo contrario, entrecomillar los valores es opcional pero recomendado.
Puedes exportar variables de dos maneras via systemd. Puedes crear un fichero de entorno con todas las variables establecidas en él:
EnvironmentFile=/path/to/environment/file1
EnvironmentFile=/path/to/environment/file2
O puedes añadirlas directamente al fichero de servicio bajo [service]
:
Environment="PORT=8123"
Environment="ANOTHERVALUE=/something/else"
Las variables exportadas pueden usarse en Vapor mediante Environment.get
let port = Environment.get("PORT")
Inicio¶
Ahora ya puedes cargar, habilitar, iniciar y apagar tu aplicación ejecutando lo siguiente como raíz.
systemctl daemon-reload
systemctl enable hello
systemctl start hello
systemctl stop hello
systemctl restart hello