# Supervisor [Supervisor](http://supervisord.org) 是一个进程控制系统,可让你轻松启动、停止和重启你的 Vapor 应用程序。 ## 安装 Supervisor 可以通过 Linux 上的包管理器安装。 ### Ubuntu ```sh sudo apt-get update sudo apt-get install supervisor ``` ### CentOS and Amazon Linux ```sh sudo yum install supervisor ``` ### Fedora ```sh sudo dnf install supervisor ``` ## 配置 服务器上的每个 Vapor 应用程序都应该有自己的配置文件。例如 `Hello` 项目,配置文件位于 `/etc/supervisor/conf.d/hello.conf` ```sh [program:hello] command=/home/vapor/hello/.build/release/Run serve --env production directory=/home/vapor/hello/ user=vapor stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log ``` 正如我们的配置文件中所指定的, `Hello` 项目位于用户 `vapor` 的主文件夹中。确保 `directory` 指向 `Package.swift` 文件所在项目的根目录。 `--env production` 标志会禁用详细日志记录。 ### 环境 你可以使用 supervisor 将变量导出到你的 Vapor 应用程序。要导出多个环境值,请将它们全部放在一行上。根据 [Supervisor 文档](http://supervisord.org/configuration.html#program-x-section-values): > 包含非字母数字字符的值应该用引号括起来(e.g. KEY="val:123",KEY2="val,456")。否则,引用值是可选的,但是推荐使用。 ```sh environment=PORT=8123,ANOTHERVALUE="/something/else" ``` 可以在 Vapor 中使用 `Environment.get` 导出变量 ```swift let port = Environment.get("PORT") ``` ## 开始 你现在可以加载并启动你的应用程序。 ```sh supervisorctl reread supervisorctl add hello supervisorctl start hello ``` !!! 注意 `add` 命令可能已经启动了你的应用程序。