a2ensite для Nginx

16 September 2017
#Linux#Nginx

Думаю многим известен a2ensite/a2dissite для включения/выключения виртуальных хостов в apache. К сожалению для nginx такого нет, хотя диретории site-enabled site-available есть (это касается только ubuntu, про другие не скажу). Эта небольшая статья призвана помочь заполнить недостающие инструменты.

Скелет скрипта я взял из своей предыдущей статьи https://softroot.ru/?go=all/pravilny-lamp-na-archlinux/

Принцип действия просто. Мы просто делаем мягкую ссылку на конфиг.

Пишем первый скрипт. Для включения.

    sudo nano /usr/sbin/n2ensite
    

    #!/bin/bash
    if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled  ; then
    echo "-------------------------------"
    else
    echo "Error!! Folders /etc/nginx/sites-available & /etc/nginx/sites-enabled not fo$
    exit 0
    fi
    
    avail=/etc/nginx/sites-available/$1.conf
    enabled=/etc/nginx/sites-enabled
    
    site=`ls /etc/nginx/sites-available/`
    
    if [ "$#" != "1" ]; then
            echo "Use script: n2en site_config"
            echo -e "\nAvailable configs:\n$site"
            exit 0
    else
    if test -e $avail; then
    sudo ln -s $avail $enabled
    else
    echo -e "$avail config does not exist! Please create one!\n$site"
    exit 0
    fi
    if test -e $enabled/$1.conf; then
    echo "Success!!"
    echo "For test nginx config: sudo nginx -t"
    echo "Now reload nginx server: sudo systemctl reload nginx"
    else
    echo  -e "Config $avail does not exist!\nPlease see avail configs:\n$site"
    exit 0
    fi
    fi

Делаем скрипт исполняемым

    sudo chmod +x /usr/sbin/n2ensite

Второй скрипт для выключения сайтов.

    sudo nano /usr/sbin/n2dissite
    

    #!/bin/bash
    if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled  ; then
    echo "-------------------------------"
    else
    echo "Error!! Folders /etc/nginx/sites-available & etc/nginx/sites-enabled not found."
    exit 0
    fi
    
    avail=/etc/nginx/sites-enabled/$1.conf
    enabled=/etc/nginx/sites-enabled
    site=`ls /etc/nginx/sites-enabled`
    
    if [ "$#" != "1" ]; then
            echo "Use script: n2dissite site_config"
            echo -e "\nEnabled configs: \n$site"
            exit 0
    else
    if test -e $avail; then
    sudo rm  $avail
    else
    echo -e "$avail config does not exist! Exiting"
    exit 0
    fi
    if test -e $enabled/$1.conf; then
    echo "Error!! Could not remove $avail config!"
    else
    echo  -e "Success! $avail has been removed!\nsudo systemctl reload nginx"
    exit 0
    fi
    fi
    fi

Делаем скрипт исполняемым

    sudo chmod +x /usr/sbin/n2dissite

Для себя я для краткости именую скрипты как n2en и n2di.

На этом всё.