Wir alle wissen, wie man eine Website mit Apache unter Linux aktiviert. Ich bin mir ziemlich sicher, dass wir uns alle auf die Verwendung des Befehls a2ensite einig sind.
Leider gibt es mit Nginx keinen entsprechenden 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, ich erinnere mich nicht an den Namen dieses Pakets.
Weiß jemand, wovon ich spreche?
Bitte geben Sie den Namen dieses Pakets und den Befehlsnamen an.
nginx
command-line-interface
website
command
Ghassen Telmoudi
quelle
quelle
Antworten:
Wenn Sie das
nginx
Paket aus den Ubuntu-Repositorys installiert haben , haben Sie zwei Verzeichnisse./etc/nginx/sites-enabled
und/etc/nginx/sites-available
.In der Hauptkonfiguration von nginx
/etc/nginx/nginx.conf
haben Sie die folgende Zeile:Grundsätzlich können Sie den folgenden Befehl ausführen, um alle verfügbaren virtuellen Hosts aufzulisten:
Führen Sie zum Aktivieren eines dieser Befehle den folgenden Befehl aus:
Die Skripte, die mit Apache geliefert werden, sind im Grunde nur einfache Shell-Wrapper, die etwas Ähnliches wie oben tun.
Denken Sie nach dem Verknüpfen der Dateien daran,
sudo service nginx reload
/ auszuführen .service nginx reload
quelle
Erstellen Sie einfach dieses Skript
/usr/bin/nginx_modsite
und machen Sie es ausführbar.Wie es funktioniert:
Um alle Websites aufzulisten
So aktivieren Sie die Site "test_website"
So deaktivieren Sie die Site "test_website"
quelle
Beziehen Sie sich auf
nginx_ensite
undnginx_dissite
?quelle
NGINX
Wenn Sie eines der offiziellen Upstream-Pakete von nginx von http://nginx.org/packages/ verwenden , ist es am besten, zum
/etc/nginx/conf.d
Verzeichnis zu navigieren und die betroffene Datei von einem.conf
Suffix in ein anderes umzubenennen deaktiviere die Seite:sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
Oder das Gegenteil, um es zu aktivieren:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Dies liegt daran, dass die Standardeinstellung
/etc/nginx/nginx.conf
die folgendeinclude
Anweisung enthält:Debian / Ubuntu
Wenn Sie jedoch ein Debian / Ubuntu-Derivat verwenden,
conf.d
können Sie zusätzlich zu den bösen Nicht-Standard-sites-available
undsites-enabled
Verzeichnissen auch einige Dateien haben, unter denen sich schlampig etwas befinden kann, ohne Rücksicht auf deren Erweiterung:Daher müssen Sie in Debian / Ubuntu 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)
nach allen regulären Dateien suchen, die der angegebenen Maske entsprechen: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 Sites unter Debian / Ubuntu:
So deaktivieren Sie eine Site: Wenn sich die Konfiguration in befindet
conf.d
, benennen Sie die Datei einfach so um, dass sie kein.conf
Suffix mehr hat . oder wenn Siesites-enabled
drin sind, bewegen Sie es raussites-enabled
.Um eine Site zu aktivieren , ist es am besten, sie zu verschieben
/etc/nginx/conf.d
und in ein.conf
Suffix umzubenennen .PS Warum halte ich Debians für
include /etc/nginx/sites-enabled/*;
böse? Versuchen Sie, einige Dateien in diesem Verzeichnis zu bearbeiten, und lassen Sieemacs
die Sicherungsdateien (mit dem~
Suffix) erstellen. Fragen Sie mich dann erneut.quelle
conf.d
Verzeichnisses ist die serverweite Konfiguration für Module, Plugins, Fastcgi-Handler usw. und ausdrücklich , Host nicht zu speichern / vhost-Konfigurationen in und 2) Man sollte keine Dateien insites-enabled
serverfault.com/a/825297/86189conf.d
, da diese im selben Kontext wie der Kontext mitsites-enabled
einerhttp
Ebene enthalten sind. Daher gelten die Anweisungen für Module und Plugins möglicherweise nicht. Ebenso ist Ihre Annahme, dass man keine Dateien bearbeiten sollte,sites-enabled
nur ein Wunschdenken - es gibt keine solchen Anweisungen in der Distribution oder im Verzeichnis, also ist es nur Ihre Annahme, die in keiner Weise von der Distribution durchgesetzt wird, also Sie Es treten alle möglichen Probleme auf, z . B. stackoverflow.com/q/45852224/1122270 .conf.d
, was wahrscheinlich den Debian-Betreuer von Nginx betrifft (oder es wird möglicherweise aus Gründen der Kompatibilität mit dem Upstream beibehalten).sites-enabled
Es geht nicht darum, Dateien zu bearbeiten , sondern um den vermeintlichen Workflow unter Apache, den sie auf Nginx emulieren wollten. In Apache ist es aufgrund der Existenz vona2ensite
unda2dissite
Skripten ziemlich offensichtlich . Leider wird für Nginx nichts dergleichen bereitgestellt, was zeigt, wie niedrig die Wartungsqualität dieses Pakets unter Debian ist. Beiden fehlt die Dokumentation, stimmt.ls -al sites-enabled
in Apache oder Nginx zeigt, dass die vorhandenen Dateien im Verzeichnis symbolische Links von sind-available
, ebenso für Module unter Apache, zusammen mit zur Verfügung gestelltena2enmod
/a2dismod
scirpts.conf.d
as-is recht einfach ist.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.
quelle
include /etc/nginx/sites-enabled/*;
es nur conf dir as enthält*.conf
sites-available
undsites-enabled
wie sie Verdienste und Nutzen haben. Jemand sollte wahrscheinlich nur einen Fehlerbericht für die wirklich beleidigende Zeile in nginx conf einreichen/etc/nginx/sites-enabled/*.conf;
und sie werden es wahrscheinlich, da es wahrscheinlich ein Versehen ist. Aber wenn Sie den Debian-Workflowsites-available
respektieren, werden Sie trotzdem Dateien bearbeiten und die verknüpfen, für die Sie die Aktivierung wünschensites-enabled
.