Posted over 2 years ago. Visible to the public.

Procfile support

If you need to run specific program(s) and be sure they will get restarted if they quit unexpectedly or after a reboot, then you can create a file named Procfile in your repository to be used by supervisord. This works best with capistrano-opscomplete Archive .

If you want to use this feature, please contact ops@makandra.de so we can enable it for your deployment.

Procfile Syntax

Currenlty the Procfile features we support are rather limited, please be aware of this. The basic syntax of the Procfile is:

Copy
$program_name: $command

For example to automatically start sidekiq:

Copy
sidekiq: bundle exec sidekiq

Important: The defined commands should not daemonize, as supervisord does that for you and otherwise can't track the commands.

You can use environment variables in your command with %{ENV_VARIABLE}s where VARIABLE is the name of the environment variable like this:

Copy
app: %{ENV_APPDIR}s/current/run_app start

Deployment

After you've created the Procfile, you also need to setup the the tasks for the deployment. If you're already using capistrano-opscomplete Archive , you can add these lines to your Capistrano config:

Copy
# Update and Restart supervisor config after 'deploy:updating', 'opscomplete:supervisor:gen_config' after 'deploy:published', 'opscomplete:supervisor:restart_procs'

There are more tasks and configuration options. Please refer to the README Archive for those and more.

Available commands on the server

If you can't or don't want to integrate capistrano-opscomplete, you can use the shell commands available on the server. They're useful if you want to verify commands manually too.

  • supervisor_gen_config

This command generates the configuration for supervisord. You need to run it before the other commands and at least every time you change your Procfile. There is no harm running it at every deploy.

  • supervisor_restart_procs

This command rereads the supervisord configuration and (re)starts all configured programs.

  • supervisor_stop_procs

This command stops all your programs in case you want to them to be stopped while your deployment runs.

  • supervisor_status

This command shows the status of all configured supervisord programs this user has access to.

  • supervisor_signal_procs $signal $program_name(optional)

This command sends the signal $signal (e.g. USR1 or TSTP) to all programs or if specified to $program_name.

Logs

The output of your programs (stdout and stderr) will get written into log files. You will find these logs here:

Copy
# stdout: ${appdir}/shared/log/${program_name}-1.log # stderr: ${appdir}/shared/log/${program_name}-1.error.log

Owner of this card:

Avatar
Kim Jahn
Last edit:
2 months ago
by Marius Schuller
Posted by Kim Jahn to opscomplete
This website uses short-lived cookies to improve usability.
Accept or learn more