跳转至

Systemd

Systemd 是大多数 Linux 发行版中默认的系统和服务管理器。它通常是默认安装的,所以在支持 Swift 的发行版上无需安装。

配置

服务器上的每个 Vapor 应用程序都应该有自己的服务文件。对于 Hello 示例项目,配置文件位于 /etc/systemd/system/hello.service. 该文件如下所示:

[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

正如我们的配置文件中所指定的,Hello 项目位于用户 vapor 的主文件夹中。确保 WorkingDirectory 指向 Package.swift 文件所在项目的根目录。

--env production 标志将禁用详细日志记录。

环境

此外,以下部分是可选配置,但建议使用。

你可以通过 systemd 以下面其中一种方式导出变量,或通过创建一个包含所有环境变量的文件:

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

或者你可以直接将它们添加到服务文件 [service] 下:

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

在 Vapor 中可以用使用 Environment.get 导出变量。

let port = Environment.get("PORT")

启动

你现在可以通过 root 身份运行以下命令来加载、启用、启动、停止和重启你的应用程序了。

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