Skip to content

Instantly share code, notes, and snippets.

@murayama
Created July 9, 2013 01:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save murayama/5954065 to your computer and use it in GitHub Desktop.
Save murayama/5954065 to your computer and use it in GitHub Desktop.
node.jsアプリケーションのcapistranoのdeployファイルの例
require 'capistrano_colors'
require 'capistrano'
require 'capistrano/ext/multistage'
set :application, "app_name"
set :repository, "repo path"
set :scm, "git"
set :branch, "master"
set :deploy_via, :copy
set :shared_children, %w(logs node_modules)
namespace :deploy do
task :default do
update
start
end
task :cold do
update
start
end
task :setup, :except => {:no_release => true} do
dirs = [deploy_to, release_path, shared_path]
dirs += shared_children.map { |d| File.join(shared_path, d)}
run "#{try_sudo} mkdir -p #{dirs.join(' ')}"
run "#{try_sudo} chmod g+w #{dirs.join(' ')}" if fetch(:group_writable,true)
end
task :finalize_update, :except => {:no_release => true} do
run "#{try_sudo} chmod -R g+w #{latest_release}" if fetch(:group_writable,true)
run <<-CMD
#{try_sudo} rm -rf #{latest_release}/logs #{latest_release}/node_modules &&
#{try_sudo} ln -s #{shared_path}/logs #{latest_release}/logs &&
#{try_sudo} ln -s #{shared_path}/node_modules #{latest_release}/node_modules
CMD
end
task :start, :roles => :app do
stop
sleep 5
run <<-CMD
export PATH=#{node_path}:$PATH &&
cd #{File.join(deploy_to,"current")} &&
NODE_ENV=#{node_env} forever start -p #{File.join(deploy_to,"current")} -o logs/out.log -e logs/error.log #{node_script}
CMD
end
task :stop, :roles => :app do
run <<-CMD
export PATH=#{node_path}:$PATH &&
forever stop #{node_script}
CMD
end
task :restart, :roles => :app do
start
end
task :npm, :roles => :app do
run <<-CMD
export PATH=#{node_path}:$PATH &&
nodebrew use #{node_version} &&
cd #{latest_release} &&
npm install
CMD
end
end
after 'deploy:finalize_update', 'deploy:npm'
set :node_env, "staging"
set :user, "username"
set :password, "pass"
set :use_sudo, false
set :default_run_options, :pty => true
set :deploy_to, "/var/www/app/#{application}"
set :node_path, "/home/user/.nodebrew/current/bin"
set :node_version, "v0.4.12"
set :node_script, "app.js"
role :app, "remote server address"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment