summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Capfile4
-rw-r--r--Gemfile4
-rw-r--r--Gemfile.lock22
-rw-r--r--config/deploy.rb25
-rw-r--r--config/unicorn.rb15
-rw-r--r--config/unicorn_init.sh84
6 files changed, 152 insertions, 2 deletions
diff --git a/Capfile b/Capfile
new file mode 100644
index 0000000..6a798eb
--- /dev/null
+++ b/Capfile
@@ -0,0 +1,4 @@
+load 'deploy'
+# Uncomment if you are using Rails' asset pipeline
+ # load 'deploy/assets'
+load 'config/deploy' # remove this line to skip loading any of the default tasks \ No newline at end of file
diff --git a/Gemfile b/Gemfile
index 459ba6a..63d8471 100644
--- a/Gemfile
+++ b/Gemfile
@@ -50,10 +50,10 @@ end
# gem 'bcrypt-ruby', '~> 3.0.0'
# Use unicorn as the app server
-# gem 'unicorn'
+gem 'unicorn'
# Use Capistrano for deployment
-# gem 'capistrano', group: :development
+gem 'capistrano', group: :development
# Use debugger
# gem 'debugger', group: [:development, :test]
diff --git a/Gemfile.lock b/Gemfile.lock
index e4af723..f0e582b 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -30,6 +30,12 @@ GEM
bootstrap-sass (2.3.2.1)
sass (~> 3.2)
builder (3.1.4)
+ capistrano (2.15.5)
+ highline
+ net-scp (>= 1.0.0)
+ net-sftp (>= 2.0.0)
+ net-ssh (>= 2.0.14)
+ net-ssh-gateway (>= 1.1.0)
capybara (2.1.0)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
@@ -69,6 +75,7 @@ GEM
httparty
multi_json (>= 1.3.4)
high_voltage (1.2.4)
+ highline (1.6.19)
hike (1.2.3)
http_parser.rb (0.5.3)
httparty (0.11.0)
@@ -82,6 +89,7 @@ GEM
railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0)
json (1.8.0)
+ kgio (2.8.0)
mail (2.5.4)
mime-types (~> 1.16)
treetop (~> 1.4.8)
@@ -90,6 +98,13 @@ GEM
minitest (4.7.5)
multi_json (1.7.7)
multi_xml (0.5.4)
+ net-scp (1.1.2)
+ net-ssh (>= 2.6.5)
+ net-sftp (2.1.2)
+ net-ssh (>= 2.6.5)
+ net-ssh (2.6.8)
+ net-ssh-gateway (1.2.0)
+ net-ssh (>= 2.6.5)
nokogiri (1.6.0)
mini_portile (~> 0.5.0)
pg (0.15.1)
@@ -116,6 +131,7 @@ GEM
activesupport (= 4.0.0)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
+ raindrops (0.11.0)
rake (10.1.0)
rdoc (3.12.2)
json (~> 1.4)
@@ -180,6 +196,10 @@ GEM
uglifier (2.1.2)
execjs (>= 0.3.0)
multi_json (~> 1.0, >= 1.0.2)
+ unicorn (4.6.3)
+ kgio (~> 2.6)
+ rack
+ raindrops (~> 0.7)
websocket (1.0.7)
xpath (2.0.0)
nokogiri (~> 1.3)
@@ -189,6 +209,7 @@ PLATFORMS
DEPENDENCIES
bootstrap-sass
+ capistrano
capybara
coffee-rails (~> 4.0.0)
database_cleaner
@@ -209,3 +230,4 @@ DEPENDENCIES
teaspoon
turbolinks
uglifier (>= 1.3.0)
+ unicorn
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