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
:
Copysidekiq: 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:
Copyapp: %{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
Does your version of Ruby on Rails still receive security updates?
Rails LTS provides security patches for unsupported versions of Ruby on Rails (2.3, 3.2, 4.2 and 5.2).