it-swarm.com.de

Befehl Nginx enable site

Wir alle wissen, wie man eine Website mit Apache unter Linux aktiviert. Ich bin mir ziemlich sicher, dass wir uns alle darauf einigen, den Befehl a2ensite zu verwenden.

Leider gibt es in Nginx keinen äquivalenten Standardbefehl, aber es kam vor, dass ich ein Paket auf Ubuntu installiert habe, mit dem ich Websites aktivieren/deaktivieren und auflisten konnte.

Das Problem ist, dass ich mich nicht an den Namen dieses Pakets erinnere.

Weiß jemand wovon ich rede?

Bitte geben Sie den Namen dieses Pakets und den Befehlsnamen an.

144

Erstellen Sie einfach dieses Skript /usr/bin/nginx_modsite und mach es ausführbar.

#!/bin/bash

##
#  File:
#    nginx_modsite
#  Description:
#    Provides a basic script to automate enabling and disabling websites found
#    in the default configuration directories:
#      /etc/nginx/sites-available and /etc/nginx/sites-enabled
#    For easy access to this script, copy it into the directory:
#      /usr/local/sbin
#    Run this script without any arguments or with -h or --help to see a basic
#    help dialog displaying all options.
##

# Copyright (C) 2010 Michael Lustfield <[email protected]>

# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.

##
# Default Settings
##

NGINX_CONF_FILE="$(awk -F= -v RS=' ' '/conf-path/ {print $2}' <<< $(nginx -V 2>&1))"
NGINX_CONF_DIR="${NGINX_CONF_FILE%/*}"
NGINX_SITES_AVAILABLE="$NGINX_CONF_DIR/sites-available"
NGINX_SITES_ENABLED="$NGINX_CONF_DIR/sites-enabled"
SELECTED_SITE="$2"

##
# Script Functions
##

ngx_enable_site() {
    [[ ! "$SELECTED_SITE" ]] &&
        ngx_select_site "not_enabled"

    [[ ! -e "$NGINX_SITES_AVAILABLE/$SELECTED_SITE" ]] && 
        ngx_error "Site does not appear to exist."
    [[ -e "$NGINX_SITES_ENABLED/$SELECTED_SITE" ]] &&
        ngx_error "Site appears to already be enabled"

    ln -sf "$NGINX_SITES_AVAILABLE/$SELECTED_SITE" -T "$NGINX_SITES_ENABLED/$SELECTED_SITE"
    ngx_reload
}

ngx_disable_site() {
    [[ ! "$SELECTED_SITE" ]] &&
        ngx_select_site "is_enabled"

    [[ ! -e "$NGINX_SITES_AVAILABLE/$SELECTED_SITE" ]] &&
        ngx_error "Site does not appear to be \'available\'. - Not Removing"
    [[ ! -e "$NGINX_SITES_ENABLED/$SELECTED_SITE" ]] &&
        ngx_error "Site does not appear to be enabled."

    rm -f "$NGINX_SITES_ENABLED/$SELECTED_SITE"
    ngx_reload
}

ngx_list_site() {
    echo "Available sites:"
    ngx_sites "available"
    echo "Enabled Sites"
    ngx_sites "enabled"
}

##
# Helper Functions
##

ngx_select_site() {
    sites_avail=($NGINX_SITES_AVAILABLE/*)
    sa="${sites_avail[@]##*/}"
    sites_en=($NGINX_SITES_ENABLED/*)
    se="${sites_en[@]##*/}"

    case "$1" in
        not_enabled) sites=$(comm -13 <(printf "%s\n" $se) <(printf "%s\n" $sa));;
        is_enabled) sites=$(comm -12 <(printf "%s\n" $se) <(printf "%s\n" $sa));;
    esac

    ngx_Prompt "$sites"
}

ngx_Prompt() {
    sites=($1)
    i=0

    echo "SELECT A WEBSITE:"
    for site in ${sites[@]}; do
        echo -e "$i:\t${sites[$i]}"
        ((i++))
    done

    read -p "Enter number for website: " i
    SELECTED_SITE="${sites[$i]}"
}

ngx_sites() {
    case "$1" in
        available) dir="$NGINX_SITES_AVAILABLE";;
        enabled) dir="$NGINX_SITES_ENABLED";;
    esac

    for file in $dir/*; do
        echo -e "\t${file#*$dir/}"
    done
}

ngx_reload() {
    read -p "Would you like to reload the Nginx configuration now? (Y/n) " reload
    [[ "$reload" != "n" && "$reload" != "N" ]] && invoke-rc.d nginx reload
}

ngx_error() {
    echo -e "${0##*/}: ERROR: $1"
    [[ "$2" ]] && ngx_help
    exit 1
}

ngx_help() {
    echo "Usage: ${0##*/} [options]"
    echo "Options:"
    echo -e "\t<-e|--enable> <site>\tEnable site"
    echo -e "\t<-d|--disable> <site>\tDisable site"
    echo -e "\t<-l|--list>\t\tList sites"
    echo -e "\t<-h|--help>\t\tDisplay help"
    echo -e "\n\tIf <site> is left out a selection of options will be presented."
    echo -e "\tIt is assumed you are using the default sites-enabled and"
    echo -e "\tsites-disabled located at $NGINX_CONF_DIR."
}

##
# Core Piece
##

case "$1" in
    -e|--enable)    ngx_enable_site;;
    -d|--disable)   ngx_disable_site;;
    -l|--list)  ngx_list_site;;
    -h|--help)  ngx_help;;
    *)      ngx_error "No Options Selected" 1; ngx_help;;
esac

Wie es funktioniert :

Um alle Websites aufzulisten

$ Sudo nginx_modsite -l

So aktivieren Sie die Site "test_website"

$ Sudo nginx_modsite -e test_website

So deaktivieren Sie die Site "test_website"

$ Sudo nginx_modsite -d test_website
75

Wenn Sie das Paket nginx aus den Ubuntu-Repositorys installiert haben, verfügen Sie über zwei Verzeichnisse.

/etc/nginx/sites-enabled und /etc/nginx/sites-available.

In der Hauptkonfiguration von Nginx ist /etc/nginx/nginx.conf, Sie haben die folgende Zeile:

include /etc/nginx/sites-enabled/*.conf;

Um alle verfügbaren virtuellen Hosts aufzulisten, können Sie den folgenden Befehl ausführen:

ls /etc/nginx/sites-available

Führen Sie den folgenden Befehl aus, um einen von ihnen zu aktivieren:

ln -s /etc/nginx/sites-available/www.example.org.conf /etc/nginx/sites-enabled/

Die mit Apache gelieferten Skripte sind im Grunde genommen nur einfache Shell-Wrapper, die etwas Ähnliches wie oben tun.

Denken Sie nach dem Verknüpfen der Dateien daran, Sudo service nginx reload/service nginx reload

190
pkhamre

Beziehen Sie sich auf nginx_ensite und nginx_dissite?

33
Michael Hampton

NGINX

Wenn Sie eines der offiziellen Upstream-Pakete von nginx von http: //nginx.org/packages/ verwenden, navigieren Sie am besten zu das Verzeichnis /etc/nginx/conf.d und benennen Sie die betroffene Datei von einem Suffix .conf in ein anderes um, um die Site zu deaktivieren:

Sudo mv -i /etc/nginx/conf.d/default.conf{,.off}

Oder das Gegenteil, um es zu ermöglichen:

Sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}

Dies liegt daran, dass der Standardwert /etc/nginx/nginx.conf Die folgende Anweisung include hat:

http {
    …
    include /etc/nginx/conf.d/*.conf;
}

Debian/Ubuntu

Wenn Sie jedoch ein Debian/Ubuntu-Derivat verwenden, können Sie zusätzlich zu conf.d Auch böse Nicht-Standard sites-available und = haben sites-enabled Verzeichnisse, einige Dateien, unter denen ohne Rücksicht auf ihre Erweiterung schlampig enthalten sein kann:

http {
    …
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

In Debian/Ubuntu müssen Sie möglicherweise zuerst herausfinden, wo sich die Site-Konfiguration befindet.

  • Mit dem folgenden Befehl können Sie eine Liste aller verfügbaren Sites abrufen, indem Sie find(1) ausführen, um alle übereinstimmenden regulären Dateien zu finden die gegebene Maske:

    find /etc/nginx -maxdepth 2 -type f \( -path "*/conf.d/*.conf" -or -path "*/sites-*/*" \)

  • Mit dem folgenden Befehl können Sie eine Liste aller aktivierten Sites abrufen:

    find /etc/nginx -maxdepth 2 \( -path "*/conf.d/*.conf" -or -path "*/sites-enabled/*" \)

So deaktivieren/aktivieren Sie Websites unter Debian/Ubuntu:

  • Um eine Site zu deaktivieren : Wenn sich die Konfiguration in conf.d Befindet, benennen Sie die Datei einfach um, damit sie kein Suffix mehr .conf Hat. oder wenn in sites-enabled, verschieben Sie es aus sites-enabled.

  • Um eine Site zu aktivieren , verschieben Sie sie am besten nach /etc/nginx/conf.d Und benennen Sie sie um, um das Suffix .conf Zu erhalten.

P.S. Warum halte ich Debians include /etc/nginx/sites-enabled/*; Für böse? Versuchen Sie, einige Dateien in diesem Verzeichnis zu bearbeiten, und lassen Sie die Sicherungsdateien (mit dem Suffix ~) Von emacs erstellen. Fragen Sie mich dann erneut.

3
cnst

Eine andere Methode besteht darin, die Konfigurationsdatei der Site in etwas umzubenennen, das ohne .conf endet

Z.B. Sudo mv mysite.conf mysite.conf.disabled

Laden Sie dann nginx neu, und dieser vhost wird auf die Standardeinstellung zurückgesetzt.

0
Pyrite