# Supervisor [Supervisor](http://supervisord.org)は、Vaporアプリの起動、停止、再起動を簡単に行えるプロセス制御システムです。 ## インストール {#install} SupervisorはLinuxのパッケージマネージャーからインストールできます。 ### Ubuntu ```sh sudo apt-get update sudo apt-get install supervisor ``` ### CentOSとAmazon Linux {#centos-and-amazon-linux} ```sh sudo yum install supervisor ``` ### Fedora ```sh sudo dnf install supervisor ``` ## 設定 {#configure} サーバー上の各Vaporアプリには独自の設定ファイルが必要です。例として`Hello`プロジェクトの場合、設定ファイルは`/etc/supervisor/conf.d/hello.conf`に配置されます。 ```sh [program:hello] command=/home/vapor/hello/.build/release/App serve --env production directory=/home/vapor/hello/ user=vapor stdout_logfile=/var/log/supervisor/%(program_name)s-stdout.log stderr_logfile=/var/log/supervisor/%(program_name)s-stderr.log ``` 設定ファイルで指定されているように、`Hello`プロジェクトはユーザー`vapor`のホームフォルダに配置されています。`directory`が`Package.swift`ファイルのあるプロジェクトのルートディレクトリを指していることを確認してください。 `--env production`フラグは冗長なログを無効にします。 ### 環境変数 {#environment} supervisorを使ってVaporアプリに変数をエクスポートできます。複数の環境値をエクスポートする場合は、すべて1行に記述します。[Supervisorドキュメント](http://supervisord.org/configuration.html#program-x-section-values)によると: > 英数字以外の文字を含む値は引用符で囲む必要があります(例:KEY="val:123",KEY2="val,456")。それ以外の場合、値を引用符で囲むことは任意ですが推奨されます。 ```sh environment=PORT=8123,ANOTHERVALUE="/something/else" ``` エクスポートされた変数は、Vaporで`Environment.get`を使用して利用できます。 ```swift let port = Environment.get("PORT") ``` ## 起動 {#start} これでアプリをロードして起動できます。 ```sh supervisorctl reread supervisorctl add hello supervisorctl start hello ``` !!! note `add`コマンドはすでにアプリを起動している可能性があります。