mirror of https://github.com/vapor/docs.git
70 lines
1.8 KiB
Markdown
70 lines
1.8 KiB
Markdown
# Systemd
|
|
|
|
Systemd 是大多数 Linux 发行版中默认的系统和服务管理器。它通常是默认安装的,所以在支持 Swift 的发行版上无需安装。
|
|
|
|
## 配置
|
|
|
|
服务器上的每个 Vapor 应用程序都应该有自己的服务文件。对于 `Hello` 示例项目,配置文件位于 `/etc/systemd/system/hello.service`. 该文件如下所示:
|
|
|
|
```sh
|
|
[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 以下面其中一种方式导出变量,或通过创建一个包含所有环境变量的文件:
|
|
|
|
```sh
|
|
EnvironmentFile=/path/to/environment/file1
|
|
EnvironmentFile=/path/to/environment/file2
|
|
```
|
|
|
|
或者你可以直接将它们添加到服务文件 `[service]` 下:
|
|
|
|
```sh
|
|
Environment="PORT=8123"
|
|
Environment="ANOTHERVALUE=/something/else"
|
|
```
|
|
|
|
在 Vapor 中可以用使用 `Environment.get` 导出变量。
|
|
|
|
```swift
|
|
let port = Environment.get("PORT")
|
|
```
|
|
|
|
## 启动
|
|
|
|
你现在可以通过 `root` 身份运行以下命令来加载、启用、启动、停止和重启你的应用程序了。
|
|
|
|
```sh
|
|
systemctl daemon-reload
|
|
systemctl enable hello
|
|
systemctl start hello
|
|
systemctl stop hello
|
|
systemctl restart hello
|
|
```
|