Come posso cambiare la directory principale di un server Apache? [chiuso]


241

Qualcuno sa come modificare la radice del documento del server Apache? Fondamentalmente voglio localhostvenire dalla /users/spencer/projectsdirectory anziché /var/www.

modificare

Ho finito per capirlo. Alcuni hanno suggerito cambio il httpd.conffile, ma ho finito per trovare un file in /etc/apache2/sites-available/defaulte cambiato la directory radice da /var/wwwa /home/myusername/projects_foldere che ha funzionato.


Stack Overflow è un sito per domande di programmazione e sviluppo. Questa domanda sembra fuori tema perché non riguarda la programmazione o lo sviluppo. Consulta quali argomenti posso chiedere qui nel Centro assistenza. Forse Server Fault o Webmaster Stack Exchange sarebbe un posto migliore per chiedere.
jww

Risposte:


209

Devi modificare l' DocumentRootimpostazione nel tuo httpd.conffile. È probabile che sarà sotto qualcosa del genere/etc/apache2/conf/httpd.conf

Usa il tuo editor preferito (raccomando Vim ) e cerca DocumentRoote modificalo in /users/spencer/projects. Guarda anche un po 'più in basso per un'impostazione simile a questa:

<Directory "/var/www">

Vorrai anche cambiare ciò che è tra virgolette nella tua nuova directory. Questo dà ad Apache l'accesso per leggere da quella directory quando un utente fa una richiesta che la chiama.

Ora riavvia il servizio apache ( httpd -k restart) e dovresti essere pronto.

Modifica : i file di configurazione del sito Apache2 ora sono generalmente conservati in /etc/apache2/sites-available/ (Debian, Ubuntu, ecc.).


6
Ho aperto /etc/apache2/httpd.conf, ma il file era vuoto. Lo sto aprendo con gedit.
Spencer Cooley,

3
Il file potrebbe trovarsi in /etc/httpd/conf/httpd.conf, a seconda del tipo di Linux.
Chris Henry,

3
il file httpd.conf è vuoto ma ho trovato un file su etc / apache2 / sites-available / default e lì ho cambiato la directory principale. Probabilmente avrei dovuto menzionare che questo non è su un vero server. Sto creando un ambiente di sviluppo locale. Non sono sicuro che faccia la differenza
Spencer Cooley

3
Sarebbe possibile abilitare contemporaneamente / var / www e / home / myusername / projects_folder? E come devo configurare? Grazie.
Paul Lo,

3
La "risposta" è davvero obsoleta. La risposta corretta secondo i documenti di Ubuntu 18.x è Modificare la directory principale di Apache o spostare il progetto in / var / www / html. Per modificare la directory principale di Apache, eseguire: cd / etc / apache2 / sites-available. Quindi aprire il file 000-default.conf usando il comando: nano 000-default.conf. Modifica l'opzione DocumentRoot: DocumentRoot / path / to / my / project. (vedi askubuntu.com/questions/337874/… )
sea26.2

263

Si noti che questo vale solo per Ubuntu 14.04 LTS e versioni più recenti.

Nel mio Ubuntu 14.04 LTS, la radice del documento era impostata su /var/www/html. È stato configurato nel seguente file:

/etc/apache2/sites-available/000-default.conf

Quindi basta fare un

sudo nano /etc/apache2/sites-available/000-default.conf

e cambia la riga seguente in quello che desideri:

DocumentRoot /var/www/html

Fai anche a

sudo nano /etc/apache2/apache2.conf

e trova questo

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

e /var/www/htmlpassa alla tua directory preferita

e salvalo.

Dopo aver salvato le modifiche, riavvia il server web apache2 e avrai finito :)

sudo service apache2 restart


Se preferisci un editor di testo grafico, puoi semplicemente sostituire il sudo nanocon un gksu gedit.


1
@Paul Lo: non l'ho provato su Ubuntu 13.10, solo su Ubuntu 14.04; Dato che sono abbastanza sicuro che la prima volta che ho installato apache (che era su Ubuntu 12.04), non esisteva tale directory. Quindi sì, suppongo che questo sia disponibile solo su Ubuntu 14.04 LTS e versioni successive. Tuttavia, puoi dare un'occhiata alle altre risposte. I voti suggeriscono che hanno aiutato altre persone, forse lavorano anche con Ubuntu 13.10.
Mozzbozz,

1
Comunque grazie per avermelo chiesto, ho appena modificato queste informazioni nella risposta in modo che nessun altro entri nella trappola di provarlo con le versioni precedenti di Ubuntu (y)
mozzbozz,

3
@mozzbozzm, hai ragione. Solo 14.04. Davvero una scelta strana, ora all'improvviso var/www/htmlcome root predefinito. Stanno davvero cercando di perdere tempo nelle persone? :)
davidkonrad,

4
Ricevo un errore proibito You don't have permission to access / on this server.quando premo localhost: 80 nel mio browser. Devo cambiare la porta?
Costa

3
@Costa Ho risolto il problema aggiungendo <Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> in /etc/apache2/apache2.conf
Keenan Gebze il

42

Ho dovuto modificare /etc/apache2/sites-available/default. Le linee sono le stesse menzionate da RDL.


3
Una modifica suggerita da @pabloab aveva questo da dire: "Apache 2.4 e versioni successive richiedono .confalla fine, e per impostazione predefinita hanno un 000-prefisso". Il risultato è /etc/apache2/sites-available/000-default.conf. Non l'ho provato, ma potrebbe aiutare alcune persone.
Nick,

^^ questo risolto. Dove è documentato che ho bisogno di .conf alla fine dei miei file disponibili sui siti?!? Ho circa 20 host virtuali che sono stati disabilitati e offline dopo un aggiornamento e dopo un paio d'ore, trovando questo e rinominando i file disponibili per i miei siti, l'ho risolto per me.
James Perih,

23

Questo è per Ubunutu 14.04:

Nel file /etc/apache2/apache2.confdovrebbe essere come sotto senza il nome della directory:

<Directory /home/username>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

e nel file /etc/apache2/sites-available/000-default.confdovresti includere il nome della directory personalizzata, ad es. www:

DocumentRoot /home/username/www

In caso contrario, ti verrà visualizzato un errore durante il caricamento del server: Forbidden You don't have permission to access / on this server


Grazie amico :) Questo ha funzionato per me in Ubuntu 16.04
Magesh Kumaar

2
Funzionava anche su Debian 8
androsfat il

15

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/apache2e non usano un singolo file di configurazione come nelle versioni precedenti ma sono divisi in file di configurazione più piccoli, /etc/apache2/apache2.confessendo 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-availablee poi copia di sudo cp 000-default.conf example.com.conf, ora modifica il file sudo gedit example.com.confper:

<VirtualHost *:80>
    ServerAdmin example@localhost
    DocumentRoot /home/ubuntu/example.com    
</VirtualHost>

Ho eliminato le righe non importanti dal file sopra per brevità. Ecco DocumentRootil 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.come cambia il proprietario e il gruppo predefinito della directory, ad esempio se il tuo nome utente registrato è ubuntucambiare le autorizzazioni come sudo chown ubuntu:www-data example.com. Ciò garantisce l'accesso completo all'utente ubuntue consente l'accesso in lettura ed esecuzione al gruppo www-data.

Ora modifica il file conf di apache eseguendo il /etc/apache2/apache2.confcomando sudo gedit apache2.confe 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 a2ensitee a2dissiterispettivamente. Ora poiché il nostro example.com.conffile 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.confe 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.comin localhostsulla porta di default 80.

Il a2ensitecomando 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.confe aggiunta Listen 8080appena 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 localhostelocalhost:8080


4

Stavo lavorando con LAMP e per cambiare la cartella Document Root ho modificato il file predefinito che si trova nella cartella / etc / apache2 / sites-available . Se vuoi fare lo stesso, modifica come segue

DocumentRoot /home/username/new_root_folder
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/username/new_root_folder>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

Dopodiché se digiti localhost nel browser caricherà il contenuto * / home / username / new_root_folder * .


4

Se non riesci a trovare http.confe seguire la strada di Nick.

Riavvia Apache utilizzando sudo service apache2 restart


4

Per apache2 su Linux Mint 17.3 Cinnamon 64-bit i seguenti lavori:

  1. In /etc/apache2/sites-available/apri il 000-default.conffile e modifica la radice del documento nel percorso assoluto della tua directory.

    sudo vim /etc/apache2/sites-available/000-default.conf

  2. In /etc/apache2/open httpd.conf, aggiungi un <Directory>tag che fa riferimento alla tua directory e contenga esattamente le stesse impostazioni del tag per var/www.

    sudo vim /etc/apache2/apache2.conf

    Sulla mia macchina sembrava così:


<Directory /home/my_user_name/php/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Nota: nel primo passaggio probabilmente si desidera modificare la radice del documento nel default-ssl.conffile anche per scopi SSL. Ma per quanto ne so non è necessario per far funzionare un ambiente di sviluppo generale.


2

In apache versione 2.4.18 (Ubuntu).

1. vai su questo file /etc/apache2/apache2.conf cerca <Directory /var/www/>e sostituisci nella tua directory ......

2. vai su /etc/apache2/sites-available/000-default.conf cerca DocumentRoot /var/www/htmle sostituisci il tuo DocumentRoot ....


Ho fatto entrambe le cose. Mostra ancora Proibito Non sei autorizzato ad accedere / su questo server.
Programmatore

controlla l'autorizzazione della tua cartella se non è nella tua home directory.
Habibun,

2

Nel caso in cui si stia utilizzando Ubuntu 16.04. Aggiorna 000-default.conf nella directory / etc / apache2 / sites-available.

qui -> ServerAdmin webmaster @ localhost DocumentRoot / var / www / html / YourFolder


1

Avevo creato /var/wwwun collegamento soft alla directory richiesta (ad es. /users/username/projects) E le cose andarono bene dopo.

Tuttavia, naturalmente, l'originale /var/wwwdeve essere eliminato o rinominato.


0

Se qualcuno ha installato LAMPnella /optcartella, allora /etc/apache2non è quello che stai cercando.

Cerca il httpd.conffile in /opt/lampp/etc/httpd.conf.

Cambia la linea in questa cartella e salvala dal terminale.



0

Se stai usando Linux Mint (opinione personale, da tutte le distro questa mi sta rendendo felice), segui questo:

1- Vai su / etc / apache2 / sites-available e modifica 000-default.conf 2- Cerca DocumentRoot, esempio DocumentRoot / var / www / html che cambi nella tua rispettiva directory; 3- Aprire il terminale e digitare: sudo service apache2 restart

MODIFICATO ----- Mi rendo conto che in Mint vai per /etc/apache2/apache.conf, sostituisci / var / www al tuo rispettivo percorso, che riavvia il server (passaggio 3).

Questo è tutto.


0

Si applica a Ubuntu 14.04 e versioni successive. Assicurati di eseguire il backup dei seguenti file prima di apportare modifiche.

1.Aprire /etc/apache2/apache2.confe cercare la <Directory /var/www/>direttiva e sostituire il percorso con/home/<USERNAME>/public_html . Puoi usare * invece di.

2.Aprire /etc/apache2/sites-available/000-default.confe sostituire la DocumentRootproprietà del valore da /var/www/htmla /home/<USERNAME>/public_html. Anche <Directory /var/www/html>a<Directory /home/<USERNAME>/public_html .

3.Apri /etc/mods-available/php7.1.conf. Trova e commenta il seguente codice

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

Non accendere php_admin_flag engine OFF flag in quanto il motivo è menzionato nel commento sopra il codice della direttiva. Anche la versione php può essere 5.0, 7.0 o qualsiasi altra cosa tu abbia installato.

Crea public_htmldirectory in home/<USERNAME>.

Riavvia il servizio apache eseguendo il comando sudo service apache2 restart.

Test eseguendo script di esempio sul server.


-3

Se stai (come me) trovi questo post tramite Google:

L'ho trovato su /etc/apache2/sites-available/000-default.conf


4
descrivere la risposta dettagliata con il codice incorporato anziché puntare a un file esterno.
Christian MICHON
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.