add unicorn

This commit is contained in:
jomo
2014-06-23 07:30:34 +02:00
parent 58a5d6f02f
commit 00b9383ebf
5 changed files with 108 additions and 1 deletions

View File

@@ -33,7 +33,7 @@ end
# gem 'jbuilder' # gem 'jbuilder'
# Use unicorn as the app server # Use unicorn as the app server
# gem 'unicorn' gem 'unicorn'
# Deploy with Capistrano # Deploy with Capistrano
# gem 'capistrano' # gem 'capistrano'

View File

@@ -62,6 +62,7 @@ GEM
railties (>= 3.0, < 5.0) railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0) thor (>= 0.14, < 2.0)
json (1.8.1) json (1.8.1)
kgio (2.9.2)
libv8 (3.16.14.3) libv8 (3.16.14.3)
mail (2.5.4) mail (2.5.4)
mime-types (~> 1.16) mime-types (~> 1.16)
@@ -97,6 +98,7 @@ GEM
activesupport (= 4.1.0) activesupport (= 4.1.0)
rake (>= 0.8.7) rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0) thor (>= 0.18.1, < 2.0)
raindrops (0.13.0)
rake (10.2.2) rake (10.2.2)
rb-readline (0.5.1) rb-readline (0.5.1)
redcarpet (3.1.1) redcarpet (3.1.1)
@@ -135,6 +137,10 @@ GEM
uglifier (2.5.0) uglifier (2.5.0)
execjs (>= 0.3.0) execjs (>= 0.3.0)
json (>= 1.8.0) json (>= 1.8.0)
unicorn (4.8.3)
kgio (~> 2.6)
rack
raindrops (~> 0.7)
webrick (1.3.1) webrick (1.3.1)
PLATFORMS PLATFORMS
@@ -159,4 +165,5 @@ DEPENDENCIES
sass-rails sass-rails
therubyracer therubyracer
uglifier uglifier
unicorn
webrick webrick

View File

@@ -3,6 +3,7 @@ class ApplicationController < ActionController::Base
before_filter :update_ip, :update_seen, :check_banned before_filter :update_ip, :update_seen, :check_banned
# TODO: force_ssl # TODO: force_ssl
# TODO: remove this!
http_basic_authenticate_with name: "redstone", password: "sheep_" http_basic_authenticate_with name: "redstone", password: "sheep_"
helper :all helper :all

15
config/unicorn.rb Normal file
View File

@@ -0,0 +1,15 @@
root = "/home/redstoner/website/public"
working_directory root
pid "#{root}/tmp/pids/unicorn.pid"
stderr_path "#{root}/log/unicorn.log"
stdout_path "#{root}/log/unicorn.log"
listen "/tmp/unicorn.redstoner.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

84
config/unicorn_init.sh Normal file
View File

@@ -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/redstoner/website/public"
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="www-data"
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