diff options
| author | Tyler Mercier <tylermercier@gmail.com> | 2013-07-19 09:48:38 -0600 |
|---|---|---|
| committer | Tyler Mercier <tylermercier@gmail.com> | 2013-07-22 15:03:42 -0600 |
| commit | c538fbb9ec6405d5a06e3b39001a22f87f335e9f (patch) | |
| tree | cd0c379efb708c10078c69a3f0cdd1d1d2bcdd02 /config | |
| parent | 816743656201c0ca2a8fb6282870184636878e0c (diff) | |
add unicorn. add capistrano
Diffstat (limited to 'config')
| -rw-r--r-- | config/deploy.rb | 25 | ||||
| -rw-r--r-- | config/unicorn.rb | 15 | ||||
| -rw-r--r-- | config/unicorn_init.sh | 84 |
3 files changed, 124 insertions, 0 deletions
diff --git a/config/deploy.rb b/config/deploy.rb new file mode 100644 index 0000000..98871c2 --- /dev/null +++ b/config/deploy.rb @@ -0,0 +1,25 @@ +set :application, "set your application name here" +set :repository, "set your repository location here" + +# set :scm, :git # You can set :scm explicitly or Capistrano will make an intelligent guess based on known version control directory names +# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none` + +role :web, "your web-server here" # Your HTTP server, Apache/etc +role :app, "your app-server here" # This may be the same as your `Web` server +role :db, "your primary db-server here", :primary => true # This is where Rails migrations will run +role :db, "your slave db-server here" + +# if you want to clean up old releases on each deploy uncomment this: +# after "deploy:restart", "deploy:cleanup" + +# if you're still using the script/reaper helper you will need +# these http://github.com/rails/irs_process_scripts + +# If you are using Passenger mod_rails uncomment this: +# namespace :deploy do +# task :start do ; end +# task :stop do ; end +# task :restart, :roles => :app, :except => { :no_release => true } do +# run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}" +# end +# end
\ No newline at end of file diff --git a/config/unicorn.rb b/config/unicorn.rb new file mode 100644 index 0000000..d087fc8 --- /dev/null +++ b/config/unicorn.rb @@ -0,0 +1,15 @@ +root = "/home/username/apps/projectname/current" +working_directory root +pid "#{root}/tmp/pids/unicorn.pid" +stderr_path "#{root}/log/unicorn.log" +stdout_path "#{root}/log/unicorn.log" + +listen "/tmp/unicorn.projectname.sock" +worker_processes 2 +timeout 30 + +# Force the bundler gemfile environment variable to +# reference the capistrano "current" symlink +before_exec do |_| + ENV["BUNDLE_GEMFILE"] = File.join(root, 'Gemfile') +end diff --git a/config/unicorn_init.sh b/config/unicorn_init.sh new file mode 100644 index 0000000..d9d68ae --- /dev/null +++ b/config/unicorn_init.sh @@ -0,0 +1,84 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: unicorn +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Manage unicorn server +# Description: Start, stop, restart unicorn server for a specific application. +### END INIT INFO +set -e + +# Feel free to change any of the following variables for your app: +TIMEOUT=${TIMEOUT-60} +APP_ROOT=/home/username/apps/projectname/current +PID=$APP_ROOT/tmp/pids/unicorn.pid +CMD="cd $APP_ROOT; bundle exec unicorn -D -c $APP_ROOT/config/unicorn.rb -E production" +AS_USER=username +set -u + +OLD_PIN="$PID.oldbin" + +sig () { + test -s "$PID" && kill -$1 `cat $PID` +} + +oldsig () { + test -s $OLD_PIN && kill -$1 `cat $OLD_PIN` +} + +run () { + if [ "$(id -un)" = "$AS_USER" ]; then + eval $1 + else + su -c "$1" - $AS_USER + fi +} + +case "$1" in +start) + sig 0 && echo >&2 "Already running" && exit 0 + run "$CMD" + ;; +stop) + sig QUIT && exit 0 + echo >&2 "Not running" + ;; +force-stop) + sig TERM && exit 0 + echo >&2 "Not running" + ;; +restart|reload) + sig HUP && echo reloaded OK && exit 0 + echo >&2 "Couldn't reload, starting '$CMD' instead" + run "$CMD" + ;; +upgrade) + if sig USR2 && sleep 2 && sig 0 && oldsig QUIT + then + n=$TIMEOUT + while test -s $OLD_PIN && test $n -ge 0 + do + printf '.' && sleep 1 && n=$(( $n - 1 )) + done + echo + + if test $n -lt 0 && test -s $OLD_PIN + then + echo >&2 "$OLD_PIN still exists after $TIMEOUT seconds" + exit 1 + fi + exit 0 + fi + echo >&2 "Couldn't upgrade, starting '$CMD' instead" + run "$CMD" + ;; +reopen-logs) + sig USR1 + ;; +*) + echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>" + exit 1 + ;; +esac |
