Come abilitare tutte le configurazioni del sito con a2ensite (passando oltre 000-default.conf && default-ssl.conf)?


11

Uso il server Ubuntu 16.04.2 con Apache2, su cui memorizzo i miei siti Web personali.

Per abilitare tutti i miei file conf in /etc/apache2/sites-available(oltre 000-default.confe ssl-default.conf), sono andato a /var/www/htmled eseguito a2ensite.

Mi è stato poi detto:

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)?

Ho quindi fatto Ctrl+ con l' Cobiettivo di eseguire qualcos'altro.

Sto cercando un modo per abilitare automaticamente tutte le configurazioni del sito, senza notarne una specifica --- Voglio solo eseguire un comando che abiliti tutte le configurazioni del sito che io stesso ho aggiunto.

Risposte:


18

Potresti anche usare find nella tua directory di configurazione.

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

Questo trova tutti i tuoi file di configurazione che non hanno "default" nel loro nome e li attiva.


1
È inoltre necessario cercare file con *.confestensione. Altrimenti a2ensite si lamenterebbe che il sito non esiste
Dan,

@ Non è necessario poiché stiamo cercando nella directory conf.
Ziazis,

Immagino che questo metodo sia buono, in linea di principio, quando si creano Nginx Sblocks e non solo per Apache Vhosts.

8

Devi navigare /etc/apache2/sites-availablee quindi eseguire il comando:

sudo a2ensite *

Abiliterà tutti i siti nella directory. (i file dovrebbero essere qualcosa come xxx.conf)

E quindi ricaricare apache usando sudo service apache2 reload.

Quindi la tua sequenza di comandi dovrebbe essere così:

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

Questo abilita anche il file conf default-ssl.conf... Ciò è chiaro dall'outputEnabling site default-ssl.

Puoi usare dpkg -Sper vedere se il file di configurazione proviene da un pacchetto.
Muru,

1

Indipendentemente dalla posizione corrente, il comando sudo a2ensite "*.conf"tenterà di abilitare tutti i file di configurazione inseriti /etc/apache2/sites-available/.

Successivamente possiamo usare a2dissite 000-default.conf default-ssl.confper disabilitare le configurazioni predefinite di Apache e quindi possiamo usare systemctl restart apache2.serviceper riavviarlo.

Possiamo eseguire tutto come un singolo comando:

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

Qualcos'altro, possiamo creare un comando personalizzato tramite una funzione in bash:

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

Ora abbiamo il comando , progettato per fare questo lavoro. Per rendere permanente questo comando, dobbiamo posizionare le righe sopra nella parte inferiore del file e quindi . Il prossimo semplice script eseguirà questo compito: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

La prima riga non è vera. Il *carattere jolly viene espanso prima che venga passato al a2ensitecomando nel mio caso. Tuttavia, questo funziona sudo a2ensite "*.conf".
Dan,

Ciao, @Dan, nel mio caso (Ubuntu 16.04.2) funziona correttamente senza virgolette. Tuttavia ho aggiornato la risposta. Potresti verificare se a2ensite '*.conf'funziona correttamente nel tuo sistema?
pa4080,

1
Sì, funziona, sono su Ubuntu 17.04 BTW.
Dan,

0

L'esecuzione a2ensite /var/www/html/*/consentirà ad Apache di abilitare ogni conf del sito con lo stesso nome , come dir del sito.

Come effetto collaterale, proverà anche a far corrispondere le directory del sito che non corrispondono ai file di configurazione del sito, come previsto dal seguente output, ma penso che questo possa essere ignorato in modo sicuro:

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!

Probabilmente dovrai riavviare Apache dopo aver abilitato i file conf:

systemctl restart apache2.service

1
Non sono sicuro, ma perché la configurazione del tuo sito è nella cartella webroot? Prova a utilizzare la /etc/apache2/sites-availablecartella per le configurazioni dei tuoi siti. Dopo averli abilitati tramite a2ensite, vengono automaticamente collegati /etc/apache2/sites-enabled. Quello che stai facendo in questo momento è piuttosto strano e tutti coloro che hanno accesso al tuo server web possono esaminare le tue configurazioni?
Ziazis,

Ciao @Ziazis. Davvero non capisco, perché mi chiedi persino "chiunque abbia accesso al tuo server web può esaminare le tue configurazioni?" Sono l'unico che usa il server; Se non lo fossi, di solito altri utenti non avrebbero accesso alla radice del documento. Ad ogni modo, puoi chiarire perché lo chiedi e cosa trovi esattamente sbagliato?

Beh, non sono sicuro di cosa stai usando questo server web. Tuttavia, se si tratta di un sistema live con un accesso raggiungibile da una terza parte, non si desidera che i file di configurazione risiedano /var/www/htmlpoiché è DocumentRoot del default.htmlsito. Quindi nel tuo caso sembra che tu stia eseguendo le configurazioni lì dentro ... È come mangiare a bocca aperta, non farlo ;-).
Ziazis,

Non capisco. Pensi che ho messo i file conf nella radice del documento? Perché non l'ho fatto. Mi suggerisci di metterli lì? Vorrei evitarlo ... Voglio solo abilitarli tutti che non sono 000-default e default-ssl. A proposito, io uso il server web per memorizzare i miei siti Web personali.

Ah, capisco, hai nominato tutte le tue directory principali come i tuoi file di configurazione. E qui ho pensato che avessi cambiato la tua configurazione di apache2 per avere /var/www/htmlcome cartella di configurazione. Nvm allora. Quello di cui hai effettivamente bisogno è solo unfind ./ -type f -and -not -name "*default*" -exec a2ensite {} \;
Ziazis,

0

copia incolla le seguenti righe nel nome del file apache_enable.sh

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

e dare il comando read + execute apache_enable.shed eseguire lo script usando l'utente root


0

Sposta le configurazioni predefinite in un'altra cartella e quindi * dovrebbe funzionare come desideri.

Vai alla cartella "siti disponibili" poiché funziona solo in questa cartella.

cd / etc / apache2 / siti-disponibili /

sudo a2ensite *

testato


AFAIK, potresti farlo da qualsiasi parte del sistema quando documenti root è / var / www / html?

La parte importante è la cartella / etc / apache2_or_other / sites-available. La radice del documento viene quindi collegata in quella configurazione. Potresti avere la tua radice in / usr / share / htlm e non cambierebbe nulla, tranne se non lo avessi scritto nel file conf. Posso essere ovunque nel mio server, purché i file conf siano nella cartella siti disponibili a2ensite farà il suo lavoro.
Carobell,

Modificata la mia risposta in quanto la prima opzione non funziona testata
Carobell
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.