mirror of
https://github.com/puma/puma.git
synced 2022-11-09 13:48:40 -05:00
75 lines
1.7 KiB
Markdown
75 lines
1.7 KiB
Markdown
|
# Puma as a service using rc.d
|
||
|
|
||
|
Manage multilpe Puma servers as services on one box using FreeBSD's rc.d service.
|
||
|
|
||
|
## Dependencies
|
||
|
|
||
|
* `jq` - a command-line json parser is needed to parse the json in the config file
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
# Copy the puma script to the rc.d directory (make sure everyone has read/execute perms)
|
||
|
sudo cp puma /usr/local/etc/rc.d/
|
||
|
|
||
|
# Create an empty configuration file
|
||
|
sudo touch /usr/local/etc/puma.conf
|
||
|
|
||
|
# Enable the puma service
|
||
|
sudo echo 'puma_enable="YES"' >> /etc/rc.conf
|
||
|
|
||
|
## Managing the jungle
|
||
|
|
||
|
Puma apps are referenced in /usr/local/etc/puma.conf by default.
|
||
|
|
||
|
Start the jungle running:
|
||
|
|
||
|
`service puma start`
|
||
|
|
||
|
This script will run at boot time.
|
||
|
|
||
|
|
||
|
You can also stop the jungle (stops ALL puma instances) by running:
|
||
|
|
||
|
`service puma stop`
|
||
|
|
||
|
|
||
|
To restart the jungle:
|
||
|
|
||
|
`service puma restart`
|
||
|
|
||
|
## Conventions
|
||
|
|
||
|
* The script expects:
|
||
|
* a config file to exist under `config/puma.rb` in your app. E.g.: `/home/apps/my-app/config/puma.rb`.
|
||
|
|
||
|
You can always change those defaults by editing the scripts.
|
||
|
|
||
|
## Here's what a minimal app's config file should have
|
||
|
|
||
|
```
|
||
|
{
|
||
|
"servers" : [
|
||
|
{
|
||
|
"dir": "/path/to/rails/project",
|
||
|
"user": "deploy-user",
|
||
|
"ruby_version": "ruby.version",
|
||
|
"ruby_env": "rbenv"
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## Before starting...
|
||
|
|
||
|
You need to customise `puma.conf` to:
|
||
|
|
||
|
* Set the right user your app should be running on unless you want root to execute it!
|
||
|
* Set the directory of the app
|
||
|
* Set the ruby version to execute
|
||
|
* Set the ruby environment (currently set to rbenv, since that is the only ruby environment currently supported)
|
||
|
* Add additional server instances following the scheme in the example
|
||
|
|
||
|
## Notes:
|
||
|
|
||
|
Only rbenv is currently supported.
|