Almost Over

Скрипт быстрого отключения/включения сайта через NGINX

Скрипт быстрого отключения/включения сайта через NGINX

Установка скрипта

$ cd ~
$ wget https://raw.githubusercontent.com/ivan-nginx/scripts/master/de-site.sh
$ chmod 755 de-site.sh

Настройка скрипта

Перед использованием данного скрипта убедитесь, что константы на строках 11 и 12 в скрипте указаны корректно:

  • DISABLED_DIR="/etc/nginx/disabled" - директория для будучи отключеных сайтов. Можно задать любой абсолютный путь. Директорию создавать не обязательно, скрипт создаст её автоматически.
  • SITES_DIR="/etc/nginx/sites" - директория, где располагаются конфиги доменов. Обычно это “sites-enabled”. При наличии данного скрипта необходимость в каталогах “sites-enabled”, где располагаются лишь ссылки на физические конфиги в директории “sites-available”, отпадает. Конфиг попросту перемещается из SITES_DIR в DISABLED_DIR, и обратно.

Параметры запуска

При запуске скрипт ожидает 2 аргумента:

  1. Имя конфига nginx (обычно это имя домена).
  2. Режим домена (off | on | status).
    off - выключает домен.
    on - включает домен.
    status - проверяет состояние домена.

Пример запуска с параметрами

$ ./de-site.sh almostover.ru status

Скрипт также поддерживает запуск без параметров. В этом случае он их запросит почерёдно.

$ ./de-site.sh

Выглядит это как-то так:
de-site.sh в консоли

Исходник de-site.sh

https://almostover.ru/code/de-site.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/sh
# ================================================================== #
# Shell script to disable/enable site config via NGINX.
# ================================================================== #
# Version: 1.0.3
# ================================================================== #
# Parts copyright (c) 2016 Ivan.Nginx https://almostover.ru
# This script is licensed under GNU GPL version 2.0 or above
# ================================================================== #
EXPECTED_ARGS=2
DISABLED_DIR="/etc/nginx/disabled"
SITES_DIR="/etc/nginx/sites"

red='\033[00;31m'
green='\033[00;32m'
yellow='\033[00;33m'
blue='\033[01;34m'
norm='\033[00m'

if [ $# -ne $EXPECTED_ARGS ]; then
read -p "Enter site domain: " DOMAIN
read -p "Enter site mode (off|on|status): " MODE
echo
echo -e "${yellow}For command line usage:${norm} $0 ${blue}domain ${green}mode${norm}"
else
DOMAIN="$1"
MODE="$2"
fi

if ! [ -d $DISABLED_DIR/ ]; then
mkdir -p $DISABLED_DIR && echo -en "\nDirectory for disabled domains successfully created. [${green} OK ${norm}] -> ${blue}$DISABLED_DIR${norm}" || echo -e "ERROR"
fi

if [ -f $SITES_DIR/$DOMAIN ]; then
CONFIG="ENABLED"
elif [ -f $DISABLED_DIR/$DOMAIN ]; then
CONFIG="DISABLED"
else
echo -e "\n${red}Operation was aborted.${norm} Config ${blue}${DOMAIN}${norm} is ${yellow}not exists${norm}.\n" && exit
fi

already="\n${yellow}Mode change not nedeed.${norm} Domain ${blue}${DOMAIN}${norm} already [${green} $CONFIG ${norm}]\n"
success="Domain mode was successfully changed. [${green} OK ${norm}] -> ${blue}${DOMAIN}${norm}\n"

if [ "$MODE" = "off" ] ; then
if [ "$CONFIG" = "ENABLED" ] ; then
echo -e "\nSwitching nginx domain configuration file mode to [${yellow} OFF ${norm}]"
mv $SITES_DIR/$DOMAIN $DISABLED_DIR/$DOMAIN
service nginx reload && echo -e "$success" || echo -e "ERROR"
else
echo -e "$already" && exit
fi

elif [ "$MODE" = "on" ] ; then
if [ "$CONFIG" = "DISABLED" ] ; then
echo -e "\nSwitching nginx domain configuration file mode to [${green} ON ${norm}]"
mv $DISABLED_DIR/$DOMAIN $SITES_DIR/$DOMAIN
service nginx reload && echo -e "$success" || echo -e "ERROR"
else
echo -e "$already" && exit
fi

elif [ "$MODE" = "status" ] ; then
echo -e "\nDomain ${blue}${DOMAIN}${norm} is [${green} $CONFIG ${norm}]\n" && exit
else
echo -e "\n${red}Operation was aborted.${norm} Invalid argument ${yellow}$MODE${norm}.\n" && exit
fi