- 
      
 - 
        
Save eashman/8556cb3b978bf14f30323279ff94e059 to your computer and use it in GitHub Desktop.  
    I couldn't find a quick example of how to deploy a node.js app using Capistrano 3. This gist assumes you are using Capistrano 3, Upstart, Forever, ssh/forward agent, and an unprivileged user named 'deploy'. Hopefully this simple setup will help to get you started.
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # config/deploy.rb | |
| # probably a lot of ways to improve this... | |
| set :application, 'my_app' | |
| set :repo_url, '[email protected]:USERNAME/my_app.git' | |
| # should set up a deploy user | |
| set :user, 'deploy' | |
| set :deploy_to, '/var/www/my_app' | |
| set :scm, :git | |
| set :format, :pretty | |
| set :log_level, :debug | |
| set :pty, true | |
| set :keep_releases, 5 | |
| namespace :deploy do | |
| #TODO: Add stop task in upstart | |
| desc "Stop Forever" | |
| task :started do | |
| on roles(:app) do | |
| execute "forever stopall" | |
| end | |
| end | |
| desc "Install node modules non-globally" | |
| task :npm_install do | |
| on roles(:app) do | |
| execute "cd #{current_path} && npm install" | |
| end | |
| end | |
| desc 'Restart application' | |
| task :restart do | |
| on roles(:app), in: :sequence, wait: 5 do | |
| # This assumes you are using upstart to startup your application | |
| # - be sure that your upstart script runs as the 'deploy' user | |
| execute "sudo start node-upstart-script", raise_on_non_zero_exit: false | |
| end | |
| end | |
| before :restart, 'deploy:npm_install' | |
| end | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # /etc/init/node-upstart-script.conf | |
| description "myapp" | |
| author "Your Name <[email protected]>" | |
| start on (local-filesystems and net-device-up IFACE=eth0) | |
| stop on shutdown | |
| script | |
| export HOME=/home/deploy | |
| export NODE_ENV=production | |
| cd /var/www/my_app/current/ | |
| exec sudo -u deploy forever start -l "/var/log/node/my_app.log" -a app.js >> /var/log/node/my_app.log 2>&1 | |
| end script | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # config/deploy/production.rb | |
| set :stage, :production | |
| server '127.0.0.1', user: 'deploy', roles: %w{web app}, my_property: :my_value | |
| server '127.0.0.1', | |
| user: 'deploy', | |
| roles: %w{web app}, | |
| ssh_options: { | |
| # user: 'user_name', # overrides user setting above | |
| # keys: %w(~/.ssh/id_rsa), | |
| forward_agent: true, | |
| auth_methods: %w(publickey password), | |
| #password: 'use a key instead' | |
| } | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment