Korzystam z serwera Ubuntu 16.04.2 z Apache2, na którym przechowuję moje osobiste strony internetowe.
Aby włączyć wszystkie moje pliki conf w /etc/apache2/sites-available
(oprócz 000-default.conf
i ssl-default.conf
), poszedłem do /var/www/html
i wykonałem a2ensite
.
Powiedziano mi wtedy:
Your choices are:
000-default default-ssl domain.tld1 domain.tld2 domain.tld3 domain.tld4
Which site(s) do you want to enable (wildcards ok)?
Potem Ctrl+ chciałem Cwykonać coś innego.
Szukam sposobu, aby automatycznie włączyć wszystkie konfesjonały witryn, nie zwracając uwagi na konkretne --- Chcę tylko uruchomić polecenie, które umożliwi wszystkie konfesjonały witryn, które sam dodałem.
*.conf
rozszerzeniem. W przeciwnym razie a2ensite narzekałby, że strona nie istniejeMusisz przejść do,
/etc/apache2/sites-available
a następnie uruchomić polecenie:Umożliwi to włączenie wszystkich witryn w katalogu. (pliki powinny być takie jak xxx.conf)
A następnie ponownie załaduj apache za pomocą
sudo service apache2 reload
.Twoja sekwencja poleceń powinna wyglądać następująco:
źródło
default-ssl.conf
Enabling site default-ssl.
dpkg -S
aby sprawdzić, czy plik konfiguracyjny pochodzi z pakietu.Bez względu na naszą obecną lokalizację, polecenie
sudo a2ensite "*.conf"
spróbuje włączyć wszystkie umieszczone w nim pliki konfiguracyjne/etc/apache2/sites-available/
.Następnie możemy użyć
a2dissite 000-default.conf default-ssl.conf
do wyłączenia domyślnych konfiguracji Apache, a następnie możemy użyćsystemctl restart apache2.service
do ponownego uruchomienia.Możemy uruchomić to wszystko jak jedno polecenie:
Coś więcej, możemy utworzyć niestandardowe polecenie za pomocą funkcji w bash:
Teraz mamy polecenie zaprojektowane do wykonania tego zadania. Aby to polecenie było trwałe, musimy umieścić powyższe linie na dole pliku, a następnie w nim. Następny prosty skrypt wykona to zadanie:
a2ensites
~/.bashrc
source
źródło
*
wieloznaczny jest rozwijany, zanim zostanie przekazany doa2ensite
polecenia w moim przypadku. Jednak to działasudo a2ensite "*.conf"
.a2ensite '*.conf'
działa poprawnie w twoim systemie?Wykonywanie
a2ensite /var/www/html/*/
sprawi, że Apache włączy każdą konfigurację witryny o tej samej nazwie , co katalog strony.Jako efekt uboczny, spróbuje również dopasować katalogi witryny, które nie pasują do plików conf witryny, zgodnie z przewidywaniami z następujących danych wyjściowych, ale myślę, że można to bezpiecznie zignorować:
Prawdopodobnie będziesz musiał ponownie uruchomić Apache po włączeniu plików conf:
źródło
/etc/apache2/sites-available
folderu do konfiguracji swoich witryn. Po włączeniu ich przez a2ensite są one automatycznie łączone/etc/apache2/sites-enabled
. To, co teraz robisz, jest dość dziwne i każdy, kto ma dostęp do twojego serwera, może zajrzeć do twoich konfiguracji?/var/www/html
ponieważ jest to DocumentRoot wdefault.html
-Site. Więc w twoim przypadku wydaje się, że uruchamiasz tam konfiguracje ... To jest jak jedzenie z otwartymi ustami, nie rób tego ;-)./var/www/html
folder konfiguracji. Nvm więc. To, czego tak naprawdę potrzebujesz, to po prostufind ./ -type f -and -not -name "*default*" -exec a2ensite {} \;
skopiuj wklej następujące wiersze w nazwie pliku
apache_enable.sh
i daj komendę read + execute
apache_enable.sh
i wykonaj skrypt za pomocą użytkownika rootźródło
Przenieś domyślne konfiguracje do innego folderu, a następnie * powinien działać tak, jak chcesz.
Przejdź do folderu „witryny dostępne”, ponieważ działa tylko w tym folderze.
źródło