1
0
Fork 0
mirror of https://github.com/puma/puma.git synced 2022-11-09 13:48:40 -05:00
puma--puma/tools/jungle/rc.d
2018-03-20 11:53:38 -06:00
..
puma Freebsd rc.d jungle for puma (#1529) 2018-03-20 11:53:38 -06:00
puma.conf Freebsd rc.d jungle for puma (#1529) 2018-03-20 11:53:38 -06:00
README.md Freebsd rc.d jungle for puma (#1529) 2018-03-20 11:53:38 -06:00

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.