Skip to content
This is a pm2 handler for capistrano 3.x.
Branch: master
Clone or download
tomhanoldt Merge pull request #9 from mengqing/fix-symlink
PM2 cwd path should always be the current path
Latest commit dbce40f Aug 29, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib fix: PM2 cwd path should always be the current path Aug 29, 2018
Gemfile init Sep 3, 2015
LICENSE Initial commit Sep 3, 2015 Update Jan 17, 2017
Rakefile init Sep 3, 2015
capistrano-pm2.gemspec increment gem version Apr 22, 2016

Capistrano::pm2 Gem Version

nodejs pm2 support for Capistrano 3.x


Add this line to your application's Gemfile:

gem 'capistrano', '~> 3.1.0'
gem 'capistrano-pm2'

And then execute:

$ bundle

Or install it yourself as:

$ gem install capistrano-pm2


Require in Capfile to use the default task:

require 'capistrano/pm2'

The task will run before deploy:restart as part of Capistrano's default deploy, or can be run in isolation with cap production pm2:restart. You can also invoke it in your deploy.rb:

namespace :deploy do
  desc 'Restart application'
  task :restart do
    # invoke 'npm:install'
    invoke 'pm2:restart'

  after :publishing, :restart

Available Tasks

cap pm2:delete                     # Delete pm2 application
cap pm2:list                       # Show pm2 application info
cap pm2:logs                       # Watch pm2 logs
cap pm2:restart                    # Restart app gracefully
cap pm2:setup                      # Install pm2 via npm on the remote host
cap pm2:start                      # Start pm2 application
cap pm2:status                     # List all pm2 applications
cap pm2:stop                       # Stop pm2 application
cap pm2:save                       # Save pm2 state so it can be loaded after restart

Configurable options:

set :pm2_app_command, 'main.js'                   # the main program
set :pm2_app_name, fetch(:application)            # name for pm2 app
set :pm2_target_path, -> { release_path }         # where to run pm2 commands
set :pm2_roles, :all                              # server roles where pm2 runs on
set :pm2_env_variables, {}                        # default: env vars for pm2
set :pm2_start_params, ''                         # pm2 start params see


  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request
You can’t perform that action at this time.