Supervisor
Supervisor is a process control system that makes it easy to start, stop, and restart your Vapor app.
Install
sudo apt-get update
sudo apt-get install supervisor
Configure
Each Vapor app on your server should have its own configuration file. For an example Hello
project, the configuration file would be located at /etc/supervisor/conf.d/hello.conf
[program:hello]
command=/home/vapor/hello/.build/release/App serve --env=production
directory=/home/vapor/hello/
user=www-data
stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log
stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log
As specified in our configuration file the Hello
project is located in the home folder for the user vapor
. Make sure directory
points to the root directory of your project where the Config/
folder is.
The --env=production
flag will disable verbose logging and prioritize the Config/production
sub folder of your configuration files.
Environment
You can export variables to your Vapor app with supervisor.
environment=PORT=8123
Exported variables can be used in Vapor's configuration files with the $
prefix.
Config/production/servers.json
{
"my-server": {
"port": "$PORT"
}
}
The above config file will start a server named my-server
on the port number exported by supervisor. This is a great way to control how Vapor starts from the supervisor config scripts. Feel free to name the server whatever you like.
Start
You can now load and start your app.
supervisorctl reread
supervisorctl add hello
supervisorctl start hello
Note: The
add
command may have already started your app.