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