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/upstart
Ibrahim Awwal 283a5a6bdd Add rbenv shims to PATH in upstart conf file
These days bundle is installed in the shims directory, so we need to have this
in the PATH for the upstart configuration to work.
2014-01-05 17:59:25 -08:00
..
puma-manager.conf Fixed some typos in upstart scripts 2013-06-05 13:28:32 -04:00
puma.conf Add rbenv shims to PATH in upstart conf file 2014-01-05 17:59:25 -08:00
README.md Cleaned up README 2013-03-09 18:41:55 -03:00

Puma as a service using Upstart

Manage multiple Puma servers as services on the same box using Ubuntu upstart.

Installation

# Copy the scripts to services directory 
sudo cp puma.conf puma-manager.conf /etc/init

# Create an empty configuration file
sudo touch /etc/puma.conf

Managing the jungle

Puma apps are referenced in /etc/puma.conf by default. Add each app's path as a new line, e.g.:

/home/apps/my-cool-ruby-app
/home/apps/another-app/current

Start the jungle running:

sudo start puma-manager

This script will run at boot time.

Start a single puma like this:

sudo start puma app=/path/to/app

Logs

Everything is logged by upstart, defaulting to /var/log/upstart.

Each puma instance is named after its directory, so for an app called /home/apps/my-app the log file would be /var/log/upstart/puma-_home_apps_my-app.log.

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.
    • a temporary folder to put the PID, socket and state files to exist called tmp/puma. E.g.: /home/apps/my-app/tmp/puma. Puma will take care of the files for you.

You can always change those defaults by editing the scripts.

Here's what a minimal app's config file should have

pidfile "/path/to/app/tmp/puma/pid"
state_path "/path/to/app/tmp/puma/state"
activate_control_app

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!
    • Look for setuid apps and setgid apps, uncomment those lines and replace apps to whatever your deployment user is.
    • Replace apps on the paths (or set the right paths to your user's home) everywhere else.
  • Uncomment the source lines for rbenv or rvm support unless you use a system wide installation of Ruby.