Nginx enable/disable site (Ubuntu)

Date: 2021-09-03
cd /etc/nginx/sites-enabled
sudo ln -s ../sites-available/<sitename>
# to disable the site just remove the symlink
sudo rm /etc/nginx/sites-enabled/<sitename>

# creates a symbolic link, when LINK_NAME omitted the link uses the name from the TARGET
# ln -s TARGET [LINK_NAME]

sudo nginx -t
sudo nginx -s reload

# via systemd
sudo systemctl reload nginx 
# or full restart
sudo systemctl restart nginx 

Helper script

sudo ./nginx-site.sh enable mijnsite.nl
sudo ./nginx-site.sh disable mijnsite.nl
#!/bin/bash

SITES_AVAILABLE="/etc/nginx/sites-available"
SITES_ENABLED="/etc/nginx/sites-enabled"

usage() {
    echo "Gebruik: $0 enable|disable|edit|list [sitenaam]"
    exit 1
}

list_sites() {
    echo "Sites beschikbaar in $SITES_AVAILABLE:"

    disabled_sites=()
    enabled_sites=()

    for site in "$SITES_AVAILABLE"/*; do
        [ -f "$site" ] || continue
        sname=$(basename "$site")
        if [ -L "$SITES_ENABLED/$sname" ]; then
            enabled_sites+=("$sname")
        else
            disabled_sites+=("$sname")
        fi
    done

    GREEN="\033[0;32m"
    RED="\033[0;31m"
    NC="\033[0m" # No Color

    for sname in "${disabled_sites[@]}"; do
        printf "  %-20s [${RED}disabled${NC}]\n" "$sname"
    done

    for sname in "${enabled_sites[@]}"; do
        printf "  %-20s [${GREEN}enabled${NC}]\n" "$sname"
    done
}

edit_site() {
    if [ -z "$sitenaam" ]; then usage; fi

    if [ ! -f "$available_path" ]; then
        echo "Fout: site '$sitenaam' bestaat niet in $SITES_AVAILABLE"
        exit 1
    fi

    # Gebruik de $EDITOR variabele of standaard naar nano
    editor="${EDITOR:-nano}"
    "$editor" "$available_path"
}

if [ "$EUID" -ne 0 ]; then
    echo "Voer dit script uit als root (bijv. met sudo)"
    exit 1
fi

action="$1"
sitenaam="$2"
available_path="$SITES_AVAILABLE/$sitenaam"
enabled_path="$SITES_ENABLED/$sitenaam"

case "$action" in
    enable)
        if [ -z "$sitenaam" ]; then usage; fi
        if [ ! -e "$available_path" ]; then
            echo "Fout: $available_path bestaat niet."
            exit 1
        fi
        if [ -L "$enabled_path" ]; then
            echo "De site '$sitenaam' is al ingeschakeld."
        else
            ln -s "$available_path" "$enabled_path"
            echo "Site '$sitenaam' ingeschakeld."
            nginx -t && systemctl reload nginx
        fi
        ;;
    disable)
        if [ -z "$sitenaam" ]; then usage; fi
        if [ -L "$enabled_path" ]; then
            rm "$enabled_path"
            echo "Site '$sitenaam' uitgeschakeld."
            nginx -t && systemctl reload nginx
        else
            echo "Site '$sitenaam' is al uitgeschakeld of bestaat niet als symlink."
        fi
        ;;
     list)
        list_sites
        ;;
    edit)
        edit_site
        ;;
    *)
        usage
        ;;
esac
sudo cp nginx-site /usr/local/bin/

sudo nano /usr/local/bin/nginx-site
sudo chmod +x /usr/local/bin/nginx-site

sudo nginx-site enable mijnsite.nl
sudo nginx-site disable mijnsite.nl
sudo nginx-site list

Set $EDITOR

In .bashrc, .zshrc of /etc/environment:

export EDITOR=vim

Temporary

EDITOR=vim sudo nginx-site edit mijnsite.nl

52690cookie-checkNginx enable/disable site (Ubuntu)