summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorTyler Mercier <tylermercier@gmail.com>2013-07-19 09:48:38 -0600
committerTyler Mercier <tylermercier@gmail.com>2013-07-22 15:03:42 -0600
commitc538fbb9ec6405d5a06e3b39001a22f87f335e9f (patch)
treecd0c379efb708c10078c69a3f0cdd1d1d2bcdd02 /config
parent816743656201c0ca2a8fb6282870184636878e0c (diff)
add unicorn. add capistrano
Diffstat (limited to 'config')
-rw-r--r--config/deploy.rb25
-rw-r--r--config/unicorn.rb15
-rw-r--r--config/unicorn_init.sh84
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