[Ubuntu] Modificare la DocumentRoot di Apache

Uno dei motivi che mi ha spinto a passare a Linux è la facilità con la quale è possibile utilizzare applicazioni server side in locale. L’utilizzo di strumenti di sviluppo web in un sistema che, seppur desktop, rimane molto server oriented, è favorito da un ambiente circostante amichevole e molto potente : - ) .

Non starò qui a dirvi come installare un server LAMP sulla vostra distro, o magari ripensandoci ve lo dico pure… E’ talmente facile!
Fate tutto da terminale. Di seguito i comandi tutto d’un fiato!

sudo -s
apt-get install mysql-server
apt-get install apache2
apt-get install php4
apt-get install libapache2-mod-php4
apt-get install php4-gd
apt-get install phpmyadmin
/etc/init.d/apache2 restart

In sequenza installeremo il server dei database mysql, il web server apache, il php4 con il modulo per apache e la libreria gd (se vuoi installare il php 5 basta sostituire php4 con php5 nei comandi sopra riportati), phpmyadmin per una facile gestione dei database.
Alla fine riavviamo il tutto ed avremo il nostro sistema pronto per giocare : - )

Un’avvertenza è d’obbligo: come proposta sopra la configurazione di default del server mysql è perfettamente funzionante, ma non sicura, dato che non è stata impostata una password per l’accesso al server e la username di default è root.
Tale configurazione va bene se si utilizza il server per i propri test in locale, va malissimo se si usa la propria macchina come server vero e proprio! Regolatevi di conseguenza.

Come detto, è tutto a postro e pronto per l’uso. C’è solo una piccola cosa da aggiustare: la DocumentRoot del server Apache.
Come impostazione base la nostra webroot si trova in /var/www . Ma sarebbe meglio tenerla nella nostra /home, perchè se per un problema qualsiasi ci troviamo a dover riscrivere tutto il file sistem, andremo a perdere anche i dati (ovvero il codice sorgente delle nostra applicazioni web) presenti nella webroot.
Mentre avendo il tutto in /home (e se siamo furbi abbiamo una partizione separata proprio per /home), tutto risulterà più organizzato.

Non pensate sia solo una questione che rileva nel momento in cui dobbiamo sovrascrivere il file system per un qualche motivo. Pensate a quanti backup facciamo. Con la webroot nel file system saremo costretti a backuppare dati da più parti, mentre se la spostiamo in una sottodirectory della nostra home, basterà backuppare quella per essere sicuri che tutti i nostri dati sono stati salvati!

Ecco come fare per modificare la webroot di default di Apache2 distribuito da Ubuntu.

Nella nostra home creiamo una nuova directory. Chiamiamola public_html: sarà questa la nuova webroot.

mkdir /home/davide/public_html

Ovviamente sostituite a davide il nome della vostra home. Dopo di che apriamo il file che in ubuntu si occupa di configurare la DocumentRoot di Apache (non è httpd.con).

sudo gedit /etc/apache2/sites-available/default

Cerchiamo la sezione DocumentRoot. Visualizzeremo qualcosa del genere.

    DocumentRoot /var/www/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        # This directive allows us to have apache2’s default start page
        # in /apache2-default/, but still have / go to the right place
        # Commented out for Ubuntu
    </Directory>

Modifichiamolo come segue.

    DocumentRoot /home/davide/public_html/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/davide/public_html/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        # This directive allows us to have apache2’s default start page
        # in /apache2-default/, but still have / go to the right place
        # Commented out for Ubuntu
    </Directory>

Anche qui fate attenzione a dare il vostro indirizzo di public_html.

Basterà riavviare apache.

sudo /etc/init.d/apache2 restart

Aprire il browser su localhost e saremo reindirizzati al contenuto di /public_html.
Ricordatevi infine di spostare tutto il contenuto di /var/www nella vostra nuova DocumentRoot.

16 thoughts on “[Ubuntu] Modificare la DocumentRoot di Apache”

  1. ottimo, non sapevo dove andarmi a settare la document root, non ne avevo proprio idea dal momento che ho trovato pressokè vuoto httpd.conf 😀
    grazie tante!

  2. e se mi da Forbidden???
    se cambio la documentRoot in /var/www/sito tutto bene….ma se imposto una cartella della home mi da Forbidden…..perche??
    Ho modificato i permessi ma niente….
    qualche ideaa??
    grazie

  3. Vuol dire che hai cambiato la document root, senza aver modificato di conseguenza le direttive <Directory

    Leggi bene il codice copiato, che è da cambiare in due posti.

  4. @duffimc

    Probabilmente hai risolto .. ma lo dico anche agli altri, potrebbe anche essere un problema di permessi.

    Alcune distribuzioni impostano le home degli utenti non eseguibili da altri utenti, quindi assicurati che tutte le directory nel percorso di DocumentRoot siano almeno leggibili ed eseguibili.

    Non sai quanto c'ho smanettato prima di capirlo, dopo un aggiornamento … che nervi!! 😀

  5. Non sono sicuro, ma…
    … non è meglio fare un "override" in /etc/apache2/httpd.conf?

    In altre parole, lasciare /etc/apache2/sites-available/default così come è e scrivere le linee con la nuova DocumentRoot in httpd.conf

    Credo che httpd.conf serva proprio a fare l'override di default. Confermate?

    Ciao!

Comments are closed.