-
-
Save polarlights/9dfb1c372e57c074eeb9 to your computer and use it in GitHub Desktop.
Capistrano + Nginx + Unicorn + Sinatra on Ubuntu
This file contains 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
require 'bundler/capistrano' | |
set :application, "net" | |
set :repository, "[email protected]:net.git" | |
set :scm, :git | |
set :default_environment, { | |
'PATH' => "$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH" | |
} | |
set :use_sudo, false | |
default_run_options[:pty] = true | |
set :user, "deployer" | |
set :group, user | |
set :runner, user | |
set :host, "#{user}@host.com" | |
role :web, host | |
role :app, host | |
set :rack_env, :production | |
set :deploy_to, "/srv/#{application}" | |
set :unicorn_conf, "#{current_path}/config/unicorn.rb" | |
set :unicorn_pid, "#{shared_path}/pids/unicorn.pid" | |
set :public_children, ["css","img","js"] | |
namespace :deploy do | |
task :restart do | |
run "if [ -f #{unicorn_pid} ]; then kill -USR2 `cat #{unicorn_pid}`; else cd #{current_path} && bundle exec unicorn -c #{unicorn_conf} -E #{rack_env} -D; fi" | |
end | |
task :start do | |
run "cd #{current_path} && bundle exec unicorn -c #{unicorn_conf} -E #{rack_env} -D" | |
end | |
task :stop do | |
run "if [ -f #{unicorn_pid} ]; then kill -QUIT `cat #{unicorn_pid}`; fi" | |
end | |
end |
This file contains 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
upstream net_unicorn { | |
server unix:/srv/net/shared/unicorn.sock fail_timeout=0; | |
} | |
server { | |
server_name example.net; | |
rewrite ^(.*) http://www.example.net$1 permanent; | |
} | |
server { | |
server_name www.example.net; | |
root /srv/net/current/public; | |
location / { | |
try_files $uri @net; | |
} | |
location @net { | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
proxy_set_header Host $http_host; | |
proxy_redirect off; | |
proxy_pass http://net_unicorn; | |
} | |
} |
This file contains 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
# define paths and filenames | |
deploy_to = "/srv/net" | |
rack_root = "#{deploy_to}/current" | |
pid_file = "#{deploy_to}/shared/pids/unicorn.pid" | |
socket_file= "#{deploy_to}/shared/unicorn.sock" | |
log_file = "#{rack_root}/log/unicorn.log" | |
err_log = "#{rack_root}/log/unicorn_error.log" | |
old_pid = pid_file + '.oldbin' | |
timeout 30 | |
worker_processes 2 | |
listen socket_file, :backlog => 1024 | |
pid pid_file | |
stderr_path err_log | |
stdout_path log_file | |
before_fork do |server, worker| | |
# zero downtime deploy magic: | |
# if unicorn is already running, ask it to start a new process and quit. | |
if File.exists?(old_pid) && server.pid != old_pid | |
begin | |
Process.kill("QUIT", File.read(old_pid).to_i) | |
rescue Errno::ENOENT, Errno::ESRCH | |
# already done | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment