puma - fast, concurrent web server for ruby and rack
puma [options...] [rackup file]
puma [-h | --help | -V | --version]
The following options are available:
- -b, --bind
URI
- URI to bind to (tcp://, unix://, ssl://).
- -C, --config
PATH
- Load given path as a config file.
- --control
URL
- DEPRECATED alias for --control-url.
- --control-token
TOKEN
- The TOKEN to use as authentication for the control server.
- --control-url
URL
- The bind URL to use for the control server and app. Use auto
to use a temp unix server. This requires to use a --control-token,
which needs to be given with every request to the control server
(token=foo).
- -d, --daemon
- Demonize the server into the background.
- --debug
- Show low level debugging information.
- --dir DIR
- Change to given directory before starting.
- -e, --environment
ENVIRONMENT
- The environment to run the Rack app on. Default development.
- -I, --include
PATH
- Specify $LOAD_PATH directories.
- -p, --port
PORT
- Define the TCP port to bind to. Use -b for more advanced
options.
- --pidfile
PATH
- Use the given path as PID file.
- --preload
- Preload the application. This loads all the application code prior to
forking. Preloading reduces total memory usage of an application and is
only available in cluster mode.
- --prune-bundler
- Prune out the bundler env if possible.
- -q, --quiet
- Do not log requests internally. Default: true.
- -v, --log-requests
- Log requests as they occur.
- -R, --restart-cmd
CMD
- The puma command to run during a hot restart. Default:
inferred.
- -S, --state
PATH
- Where to store the state details.
- -t, --threads
INT
- Min:max threads to use. Puma will automatically scale the number of
threads, from the minimum until it caps out at the maximum, based on how
much traffic is present. Default: 0:16.
- --tcp-mode
- Run the app in raw TCP mode instead of HTTP mode.
- --early-hints
- Enable early hints support.
- -w, --workers
COUNT
- Activate cluster mode and define number of worker processes to create. In
this mode workers are forked from a master process. Each child process
still has its own thread pool and the -t setting is per
worker.
- --tag
NAME
- Additional text to display in process listing.
- --redirect-stdout
FILE
- Redirect STDOUT to a specific file.
- --redirect-stderr
FILE
- Redirect STDERR to a specific file.
- --[no-]redirect-append
- Append to redirected files.
- -h, --help
- Show help.
- -V, --version
- Print the version information.
The following examples show how to bind TCP or sockets:
Bind Puma to a socket with the -b (or --bind) flag:
puma -b tcp://127.0.0.1:9292
To use a UNIX Socket instead of TCP:
puma -b unix:///var/run/puma.sock
To change the permissions of the UNIX socket, add a umask
parameter:
puma -b
'unix:///var/run/puma.sock?umask=0111'
In need of a bit of security use SSL sockets:
puma -b
'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert'
The following example show how to Create a control server and use
pumactl(1) to interact with the control server to restart
puma.
puma --control-url tcp://127.0.0.1:9293
--control-token foo
pumactl --control-url 'tcp://127.0.0.1:9293' --control-token foo
restart
puma will look for a configuration file at
config/puma.rb. If an environment is specified, either via the
-e and --environment flags, or through the RACK_ENV or
the RAILS_ENV environment variables, it looks for configuration at
config/puma/<environment_name>.rb.
The -C flag allows one to pass on a custom configuration
location. If the value specified is a dash (-) puma won't look
for any configuration file:
puma -C "-"
There is extensive documentation at <https://puma.io/puma/>
and <https://github.com/puma/puma>.
This manual page was written by Daniel Leidert
<dleidert@debian.org>, for the Debian GNU/Linux system (but may be
used by others).