Jak włączyć wszystkie konfesjonały witryny za pomocą a2ensite (podczas przekazywania ponad 000-default.conf && default-ssl.conf)?


11

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.confi ssl-default.conf), poszedłem do /var/www/htmli 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.

Odpowiedzi:


18

Może i po prostu użyj find w katalogu config.

find /etc/apache2/sites-available/ -type f -and -not -name "*default*" -exec a2ensite {} \;

Znajduje wszystkie pliki konfiguracyjne, które nie mają „domyślnych” w nazwie, i aktywuje je.


1
Powinieneś także szukać plików z *.confrozszerzeniem. W przeciwnym razie a2ensite narzekałby, że strona nie istnieje
Dan

@ Nie jest konieczne, ponieważ szukamy w katalogu conf.
Ziazis,

Sądzę, że ta metoda jest również dobra z zasady podczas tworzenia bloków Nginx, nie tylko dla hostów Apache.

8

Musisz przejść do, /etc/apache2/sites-availablea następnie uruchomić polecenie:

sudo a2ensite *

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:

cd /etc/apache2/sites-available
sudo a2ensite *
sudo service apache2 reload

default-ssl.confEnabling site default-ssl.

Możesz użyć, dpkg -Saby sprawdzić, czy plik konfiguracyjny pochodzi z pakietu.
muru

1

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.confdo wyłączenia domyślnych konfiguracji Apache, a następnie możemy użyć systemctl restart apache2.servicedo ponownego uruchomienia.

Możemy uruchomić to wszystko jak jedno polecenie:

sudo bash -c "a2ensite '*.conf' && a2dissite 000-default.conf default-ssl.conf && systemctl restart apache2.service"

Coś więcej, możemy utworzyć niestandardowe polecenie za pomocą funkcji w bash:

function a2ensites {
        sudo bash -c "a2ensite '*.conf' && a2dissite 000-default default-ssl && systemctl restart apache2.service"
}
export -f a2ensites

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~/.bashrcsource

 printf "\nfunction a2ensites { \n\tsudo bash -c \"a2ensite '*.conf' && a2dissite 000-default.conf default-ssl.conf && systemctl restart apache2.service\" \n}\nexport -f a2ensites\n" | tee -a $HOME/.bashrc; source $HOME/.bashrc

Pierwsza linia nie jest prawdą. Symbol *wieloznaczny jest rozwijany, zanim zostanie przekazany do a2ensitepolecenia w moim przypadku. Jednak to działa sudo a2ensite "*.conf".
Dan

Cześć, @Dan, w moim przypadku (Ubuntu 16.04.2) działa poprawnie bez cudzysłowów. Jednak zaktualizowałem odpowiedź. Czy możesz sprawdzić, czy a2ensite '*.conf'działa poprawnie w twoim systemie?
pa4080

1
Tak, to działa, jestem na Ubuntu 17.04 btw.
Dan

0

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ć:

ERROR: Site /var/www/html/domain.tld1 does not exist!
ERROR: Site /var/www/html/domain.tld2 does not exist!
ERROR: Site /var/www/html/nice_directory does not exist!
ERROR: Site /var/www/html/nice_file does not exist!

Prawdopodobnie będziesz musiał ponownie uruchomić Apache po włączeniu plików conf:

systemctl restart apache2.service

1
Nie jestem pewien, ale dlaczego konfiguracja twojej witryny znajduje się w folderze webroot? Spróbuj użyć /etc/apache2/sites-availablefolderu 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?
Ziazis

Cześć @Ziazis. Naprawdę nie rozumiem, dlaczego pytasz mnie nawet „każdy, kto ma dostęp do twojego serwera, może zajrzeć do twoich konfiguracji?” Jestem jedynym, który korzysta z serwera; Gdybym tego nie zrobił, zwykle inni użytkownicy nie mieliby dostępu do katalogu głównego dokumentu. W każdym razie, czy możesz wyjaśnić, dlaczego o to pytasz i co dokładnie uważasz za złe?

Nie jestem pewien, do czego używasz tego serwera. Jeśli jednak jest to system działający na żywo z dostępem, do którego dostęp może uzyskać osoba trzecia, nie chcesz, aby pliki konfiguracyjne leżały w nim, /var/www/htmlponieważ jest to DocumentRoot w default.html-Site. Więc w twoim przypadku wydaje się, że uruchamiasz tam konfiguracje ... To jest jak jedzenie z otwartymi ustami, nie rób tego ;-).
Ziazis

Nie rozumiem. Myślisz, że umieściłem pliki conf w katalogu głównym dokumentu? Bo ja nie. Sugerujesz, żebym je tam umieścił? Chciałbym tego uniknąć ... Chcę tylko włączyć wszystkie, które nie są 000-default i default-ssl. BTW, używam serwera do przechowywania moich osobistych stron internetowych.

Ach, rozumiem - nazwałeś wszystkie swoje RootDirectories tak samo jak twoje pliki konfiguracyjne. I tutaj myślałem, że zmieniłeś konfigurację apache2 na /var/www/htmlfolder konfiguracji. Nvm więc. To, czego tak naprawdę potrzebujesz, to po prostufind ./ -type f -and -not -name "*default*" -exec a2ensite {} \;
Ziazis

0

skopiuj wklej następujące wiersze w nazwie pliku apache_enable.sh

cd /etc/apache2/sites-available/
a2ensite *
service apache2 reload

i daj komendę read + execute apache_enable.shi wykonaj skrypt za pomocą użytkownika root


0

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.

cd / etc / apache2 / sites-available /

sudo a2ensite *

przetestowany


AFAIK, możesz to zrobić z dowolnego miejsca w systemie, gdy dokumentujesz root / var / www / html?

Ważną częścią jest folder / etc / apache2_or_other / sites-available. Katalog główny jest następnie łączony w tej konfiguracji. Możesz mieć swój root w / usr / share / htlm i nic by to nie zmieniło, chyba że nie zapisałeś go w pliku conf. Mogę być w dowolnym miejscu na serwerze, tak długo, jak pliki conf znajdują się w folderze dostępnym na stronie a2ensite będzie działał.
Carobell

Edytowałem moją odpowiedź, ponieważ pierwsza opcja nie działa przetestowana
Carobell
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.