Move unicorn and sidekiq commands into bash script

This commit is contained in:
Jacob Vosmaer 2013-10-09 16:45:32 +02:00
parent 7c4db532ff
commit 6a7d63aa47
4 changed files with 118 additions and 27 deletions

View File

@ -22,7 +22,6 @@ RAILS_ENV="production"
# /bin/sh variables such as PATH, EDITOR or SHELL.
app_root="/home/git/gitlab"
app_user="git"
unicorn_conf="$app_root/config/unicorn.rb"
pid_path="$app_root/tmp/pids"
socket_path="$app_root/tmp/sockets"
web_server_pid_path="$pid_path/unicorn.pid"
@ -129,7 +128,7 @@ start() {
# Remove old socket if it exists
rm -f "$socket_path"/gitlab.socket 2>/dev/null
# Start the webserver
bundle exec unicorn_rails -D -c "$unicorn_conf" -E "$RAILS_ENV"
RAILS_ENV=$RAILS_ENV script/web start
fi
# If sidekiq is already running, don't start it again.
@ -137,7 +136,7 @@ start() {
echo "The Sidekiq job dispatcher is already running with pid $spid, not restarting"
else
echo "Starting the GitLab Sidekiq event dispatcher..."
RAILS_ENV=$RAILS_ENV bundle exec rake sidekiq:start
RAILS_ENV=$RAILS_ENV script/background_jobs start
# We are sleeping a bit here because sidekiq is slow at writing it's pid
sleep 2
fi
@ -151,7 +150,7 @@ stop() {
exit_if_not_running
# If the Unicorn web server is running, tell it to stop;
if [ "$web_status" = "0" ]; then
kill -QUIT "$wpid"
RAILS_ENV=$RAILS_ENV script/web stop
echo "Stopping the GitLab Unicorn web server..."
stopping=true
else
@ -160,7 +159,7 @@ stop() {
# And do the same thing for the Sidekiq.
if [ "$sidekiq_status" = "0" ]; then
printf "Stopping Sidekiq job dispatcher."
RAILS_ENV=$RAILS_ENV bundle exec rake sidekiq:stop
RAILS_ENV=$RAILS_ENV script/background_jobs stop
stopping=true
else
echo "The Sidekiq was not running, must have run out of breath."
@ -215,10 +214,10 @@ reload(){
exit 1
fi
printf "Reloading GitLab Unicorn configuration... "
kill -USR2 "$wpid"
RAILS_ENV=$RAILS_ENV script/web reload
echo "Done."
echo "Restarting GitLab Sidekiq since it isn't capable of reloading its config..."
RAILS_ENV=$RAILS_ENV bundle exec rake sidekiq:restart
RAILS_ENV=$RAILS_ENV script/background_jobs restart
# Waiting 2 seconds for sidekiq to write it.
sleep 2
status

View File

@ -1,32 +1,19 @@
namespace :sidekiq do
desc "GITLAB | Stop sidekiq"
task :stop do
system "bundle exec sidekiqctl stop #{pidfile}"
system "script/background_jobs stop"
end
desc "GITLAB | Start sidekiq"
task :start => :restart
desc "GITLAB | Start sidekiq" do
system "script/background_jobs start"
end
desc 'GitLab | Restart sidekiq'
task :restart do
if File.exist?(pidfile)
puts 'Shutting down existing sidekiq process.'
Rake::Task['sidekiq:stop'].invoke
puts 'Starting new sidekiq process.'
end
system "bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,gitlab_shell,common,default -e #{Rails.env} -P #{pidfile} -d -L #{log_file} >> #{log_file} 2>&1"
desc 'GitLab | Restart sidekiq' do
system "script/background_jobs restart"
end
desc "GITLAB | Start sidekiq with launchd on Mac OS X"
task :launchd do
system "bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,gitlab_shell,common,default -e #{Rails.env} -P #{pidfile} >> #{log_file} 2>&1"
end
def pidfile
Rails.root.join("tmp", "pids", "sidekiq.pid")
end
def log_file
Rails.root.join("log", "sidekiq.log")
system "script/background_jobs start_no_deamonize"
end
end

56
script/background_jobs Executable file
View File

@ -0,0 +1,56 @@
#!/bin/bash
cd $(dirname $0)/..
app_root=$(pwd)
sidekiq_pidfile="$app_root/tmp/pids/sidekiq.pid"
sidekiq_logfile="$app_root/log/sidekiq.log"
gitlab_user=$(ls -l config.ru | awk '{print $3}')
function stop
{
bundle exec sidekiqctl stop $sidekiq_pidfile &>> $sidekiq_logfile
}
function killall
{
pkill -u $gitlab_user -f sidekiq
}
function restart
{
if [ -f $sidekiq_pidfile ]; then
stop
fi
killall
start_sidekiq -d -L $sidekiq_logfile
}
function start_no_deamonize
{
start_sidekiq
}
function start_sidekiq
{
bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,gitlab_shell,common,default -e $RAILS_ENV -P $sidekiq_pidfile $@ &>> $sidekiq_logfile
}
case "$1" in
stop)
stop
;;
start)
restart
;;
start_no_deamonize)
start_no_deamonize
;;
restart)
restart
;;
killall)
killall
;;
*)
echo "Usage: RAILS_ENV=your_env $0 {stop|start|start_no_deamonize|restart|killall}"
esac

49
script/web Executable file
View File

@ -0,0 +1,49 @@
#!/bin/bash
cd $(dirname $0)/..
app_root=$(pwd)
unicorn_pidfile="$app_root/tmp/pids/unicorn.pid"
unicorn_config="$app_root/config/unicorn.rb"
function get_unicorn_pid
{
local pid=$(cat $unicorn_pidfile)
if [ -z $pid ] ; then
echo "Could not find a PID in $unicorn_pidfile"
exit 1
fi
unicorn_pid=$pid
}
function start
{
bundle exec unicorn_rails -D -c $unicorn_config -E $RAILS_ENV
}
function stop
{
get_unicorn_pid
kill -QUIT $unicorn_pid
}
function reload
{
get_unicorn_pid
kill -USR2 $unicorn_pid
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
*)
echo "Usage: RAILS_ENV=your_env $0 {start|stop|reload}"
;;
esac