Skip to content

Instantly share code, notes, and snippets.

@denisshevchenko
Last active August 29, 2015 14:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save denisshevchenko/1d529775493bc153bf33 to your computer and use it in GitHub Desktop.
Save denisshevchenko/1d529775493bc153bf33 to your computer and use it in GitHub Desktop.
Пример скрипта, управляющего Yesod-приложением на рабочем сервере
#!/bin/bash
USAGE="
Использование: webhs_ctl.sh STAND COMMAND
где:
STAND - один из имеющихся стендов: alpha, beta, rc, production
COMMAND - одна из команд: start, stop, restart
Пример:
./webhs_ctl.sh alpha restart
Эта команда перезапускает alpha-стенд (http://alpha.service.com).
"
# Имя стенда и команда обязательны!
if [ "$1" = "" ]
then
echo "Имя стенда забыли! Без него никак."
echo "$USAGE"
exit 1
fi
if [ "$2" = "" ]
then
echo "Имя команды забыли! Что делать-то?"
echo "$USAGE"
exit 1
fi
STAND_NAME=$1
COMMAND=$2
STAND_BASE_URL=service.com
REPO_DIRECTORY=$HOME/web/webhs
WORK_DIRECTORY=/srv/www/webhs/$STAND_NAME
PROCESS_NAME=webhs-$STAND_NAME
EXECUTABLE_NAME=$PROCESS_NAME
# Анализируем стенд...
if [ $STAND_NAME = "alpha" ]
then
WORK_ENV=Development
elif [ $STAND_NAME = "beta" ]
then
WORK_ENV=Testing
elif [ $STAND_NAME = "rc" ]
then
WORK_ENV=Staging
elif [ $STAND_NAME = "production" ]
then
WORK_ENV=Production
else
echo "Вы ошиблись, такого стенда нет. Выберите из этих: alpha, beta, rc, production."
exit 1
fi
cd $WORK_DIRECTORY
# Анализируем команду...
if [ $COMMAND = "start" ]
then
echo "Команда 'start'..."
echo "nohup bin/${EXECUTABLE_NAME} ${WORK_ENV} > /dev/null 2>&1 &"
nohup bin/$EXECUTABLE_NAME $WORK_ENV > /dev/null 2>&1 &
# Удаляем артефакты от демонизации приложения через nohup, если таковые есть...
rm *.out 2> /dev/null
elif [ $COMMAND = "stop" ]
then
killall $PROCESS_NAME 2> /dev/null
elif [ $COMMAND = "restart" ]
then
killall $PROCESS_NAME 2> /dev/null
nohup bin/$EXECUTABLE_NAME $WORK_ENV > /dev/null 2>&1 &
# Удаляем артефакты от демонизации приложения через nohup, если таковые есть...
rm *.out 2> /dev/null
else
echo "Вы ошиблись, такой команды нет. Выберите из этих: start, stop, restart."
exit 1
fi
echo "Готово, проверяйте."
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment