Wszyscy wiemy, jak włączyć stronę internetową za pomocą apache w systemie Linux. Jestem pewien, że wszyscy zgadzamy się na użycie polecenia a2ensite.
Niestety nie ma domyślnej równoważnej komendy dostarczanej z Nginx, ale zdarzyło się, że zainstalowałem jakiś pakiet na Ubuntu, który pozwolił mi włączyć / wyłączyć witryny i wyświetlić je.
Problem polega na tym, że nie pamiętam nazwy tego pakietu.
Czy ktoś wie o czym mówię?
Podaj mi nazwę tego pakietu i nazwę polecenia.
nginx
command-line-interface
website
command
Ghassen Telmoudi
źródło
źródło
Odpowiedzi:
Jeśli zainstalowałeś
nginx
pakiet z repozytoriów Ubuntu, będziesz mieć dwa katalogi./etc/nginx/sites-enabled
a/etc/nginx/sites-available
.W głównej konfiguracji nginx
/etc/nginx/nginx.conf
masz następujący wiersz:Aby wyświetlić listę wszystkich dostępnych wirtualnych hostów, możesz uruchomić następującą komendę:
Aby aktywować jedno z nich, uruchom następujące polecenie:
Skrypty dostarczane z Apache to po prostu proste opakowanie powłoki, które robi coś podobnego jak powyżej.
Po połączeniu plików pamiętaj, aby uruchomić
sudo service nginx reload
/service nginx reload
źródło
Po prostu utwórz ten skrypt
/usr/bin/nginx_modsite
i wykonaj go.Jak to działa:
Aby wyświetlić listę wszystkich witryn
Aby włączyć witrynę „test_website”
Aby wyłączyć witrynę „test_website”
źródło
Masz na myśli
nginx_ensite
inginx_dissite
?źródło
NGINX
Jeśli używasz jednego z oficjalnych pakietów nginx z http://nginx.org/packages/ , najlepszym sposobem jest przejście do
/etc/nginx/conf.d
katalogu i zmiana nazwy pliku, którego dotyczy problem, z.conf
przyrostka na inny na wyłącz witrynę:sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
Lub odwrotnie, aby to włączyć:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Jest tak, ponieważ domyślnie
/etc/nginx/nginx.conf
ma następującąinclude
dyrektywę:Debian / Ubuntu
Jednakże, jeśli używasz pochodnej Debian / Ubuntu, to oprócz tego
conf.d
możesz mieć złe niestandardowesites-available
isites-enabled
katalogi, niektóre pliki, pod którymi można niechętnie zawierać, bez względu na ich rozszerzenie:W związku z tym w Debian / Ubuntu może być najpierw konieczne ustalenie, gdzie znajduje się konfiguracja witryny.
Możesz użyć następującego polecenia, aby uzyskać listę wszystkich dostępnych witryn, uruchamiając się,
find(1)
aby znaleźć wszystkie zwykłe pliki pasujące do danej maski:find /etc/nginx -maxdepth 2 -type f \( -path "*/conf.d/*.conf" -or -path "*/sites-*/*" \)
Możesz użyć następującego polecenia, aby uzyskać listę wszystkich włączonych witryn:
find /etc/nginx -maxdepth 2 \( -path "*/conf.d/*.conf" -or -path "*/sites-enabled/*" \)
Następnie, aby wyłączyć / włączyć witryny w Debian / Ubuntu:
Aby wyłączyć witrynę: jeśli konfiguracja jest włączona
conf.d
, po prostu zmień nazwę pliku, aby nie mieć już.conf
przyrostka; lub jeśli jestsites-enabled
, usuń gosites-enabled
.Aby włączyć witrynę, najlepszym sposobem jest przeniesienie jej do witryny
/etc/nginx/conf.d
i zmiana nazwy na.conf
przyrostek.PS Dlaczego myślę, że Debian
include /etc/nginx/sites-enabled/*;
jest zły? Spróbuj edytować kilka plików w tym katalogu i poprośemacs
o utworzenie plików kopii zapasowej (z~
przyrostkiem), a następnie zapytaj mnie ponownie.źródło
conf.d
katalogu jest konfiguracja na całym serwerze, taka jak dla modułów, wtyczek, programów obsługi Fastcgi itp. I jawnie nie do przechowywania hosta / vhost konfiguracje w i 2) Nie należy edytować żadnych plików wsites-enabled
serverfault.com/a/825297/86189conf.d
, ponieważ jest ona zawarta w tym samym kontekście, cosites-enabled
one -http
-level kontekście, więc dyrektyw moduł i plugin mogą nie mieć zastosowania. Podobnie twoje założenie, że nie należy edytować plików,sites-enabled
jest jedynie pobożnym życzeniem - nie ma takich instrukcji w dystrybucji ani w katalogu, więc jest to wyłącznie twoje założenie, które nie jest w żaden sposób narzucone przez dystrybucję, więc występują różnego rodzaju problemy z tego wynikające, np . stackoverflow.com/q/45852224/1122270 .conf.d
do prawdopodobnie opiekuna Debiana dla Nginx (a może jest on utrzymywany w celu zachowania zgodności z poprzednimi wersjami). Jeśli chodzi o brak edytowania plikówsites-enabled
, to nie jest pobożne życzenie, ale rzekomy przepływ pod Apache, który próbowali emulować na Nginx. W Apache jest to dość oczywiste ze względu na istnieniea2ensite
ia2dissite
skrypty. Niestety dla Nginx nie ma nic takiego, co pokazuje, jak niska jest jakość utrzymania tego pakietu w Debianie. Oba brakuje dokumentacji, to prawda.ls -al sites-enabled
w Apache lub Nginx pokazuje, że istniejące pliki w katalogu to dowiązania symboliczne-available
, to samo dotyczy modułów pod Apache, wraz z zapewnionymia2enmod
/a2dismod
scirpts.conf.d
postaci.Inną metodą jest zmiana nazwy pliku konfiguracyjnego witryny na coś, co kończy się bez .conf
Na przykład
sudo mv mysite.conf mysite.conf.disabled
Następnie przeładuj nginx, a ten vhost powróci do ustawień domyślnych.
źródło
include /etc/nginx/sites-enabled/*;
zawiera tylko conf dir as*.conf
sites-available
isites-enabled
jak mają zalety i zastosowanie. Ktoś prawdopodobnie powinien po prostu zgłosić raport o błędzie dla prawdziwej linii obrażeń w nginx conf/etc/nginx/sites-enabled/*.conf;
i prawdopodobnie zrobi to, ponieważ prawdopodobnie jest to przeoczenie. Ale jeśli szanujesz przepływ pracy w Debianie, i tak edytujesz plikisites-available
i łączysz te, w których chcesz włączyćsites-enabled
.