Il modo giusto per cambiare directory o eseguire da più directory in porte diverse per apache2 è il seguente:
Per apache2 i file di configurazione si trovano sotto /etc/apache2
e non usano un singolo file di configurazione come nelle versioni precedenti ma sono divisi in file di configurazione più piccoli, /etc/apache2/apache2.conf
essendo il file di configurazione principale. Per servire file da una directory diversa abbiamo bisogno di un nuovo file conf di virtualhost. I file di configurazione di virtualhost si trovano in /etc/apache2/sites-available
(non modificare i file all'interno dei siti abilitati). L'installazione predefinita di apache utilizza il file di configurazione virtualhost 000-default.conf
.
Inizia creando un nuovo file virtualhost copiando il file virtualhost predefinito utilizzato dall'installazione predefinita di apache (quello che viene eseguito su localhost sulla porta 80). Passa alla directory /etc/apache2/sites-available
e poi copia di sudo cp 000-default.conf example.com.conf
, ora modifica il file sudo gedit example.com.conf
per:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
Ho eliminato le righe non importanti dal file sopra per brevità. Ecco DocumentRoot
il percorso della directory da cui devono essere forniti i file del sito Web come index.html
.
Creare la directory da cui si desidera servire i file, ad esempio; mkdir example.com
e cambia il proprietario e il gruppo predefinito della directory, ad esempio se il tuo nome utente registrato è ubuntu
cambiare le autorizzazioni come sudo chown ubuntu:www-data example.com
. Ciò garantisce l'accesso completo all'utente ubuntu
e consente l'accesso in lettura ed esecuzione al gruppo www-data
.
Ora modifica il file conf di apache eseguendo il /etc/apache2/apache2.conf
comando sudo gedit apache2.conf
e trova la riga <Directory /var/www/>
e sotto il tag di chiusura </Directory>
, aggiungi quanto segue:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
Ora ci sono due comandi per abilitare o disabilitare i file di configurazione di virtualhost, che sono a2ensite
e a2dissite
rispettivamente. Ora poiché il nostro example.com.conf
file utilizza la stessa porta ( 80
) utilizzata dal file di configurazione predefinito ( 000-default.conf
), dobbiamo disabilitare il file di configurazione predefinito emettendo il comando sudo a2dissite 000-default.conf
e abilitare il nostro file di configurazione virtualhost dasudo a2ensite example.com.conf
Ora riavvia o ricarica il server con il comando sudo service apache2 restart
. Ora apache serve file dalla directory example.com
in localhost
sulla porta di default 80
.
Il a2ensite
comando fondamentalmente crea un collegamento simbolico al file conf nella directory abilitata per il sito
Non modificare i file all'interno di Directoy abilitato per i siti (o abilitato per *), come indicato in questa risposta https://stackoverflow.com/a/41568701/2532763
Per modificare la porta ed eseguire da più directory su porte diverse:
Ora se è necessario eseguire la directory su una porta diversa, modificare il numero di porta da 80 a 8080 modificando il file virtualhost come:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
e modifica /etc/apache2/ports.conf
e aggiunta Listen 8080
appena sotto la lineaListen 80
Ora possiamo abilitare il file conf predefinito di virtualhost che gira sulla porta 80 poiché la directory example.com usa la porta 8080, come sudo a2ensite 000-default.conf
Ora riavvia o ricarica il server con il comando sudo service apache2 restart
. Ora è possibile accedere ad entrambe le directory da localhost
elocalhost:8080