Apache – Configurare un sottodominio. Metodo Name-Based

Ecco come configurare il nostro web server preferito (Apache ovviamente ; - ) ) in modo da ottenere un sotto dominio.

Preambolo: i sub-domain sono entità del tutto simili ai domini. Ma, a differenza di questi vengono definiti di terzo livello. Un esempio può spiegare meglio come funziona il tutto.
Prendiamo il dominio blog.miosito.com. Quella che comunemente viene definita estenzione del dominio, è il dominio di primo livello (.com).
Il nome del dominio, miosito.com, è il dominio di secondo livello. E’ quello che generalmente registriamo presso i nostri provider.
Il dominio di terzo livello corrisponde ad ogni sottodominio riferibile al dominio di secondo livello. Nel nostro caso è blog.miosito.com.

Nella realtà delle cose, un dominio di terzo livello funziona esattamente come uno di secondo. L’unica differenza è che l’indirizzo di riferimento è inalberato in un dominio di secondo livello. Dobbiamo semplicemente fare in modo che la digitazione dell’indirizzo porti l’utente alla document root impostata per il sotto dominio.

Procediamo in locale:

Premessa
Io uso Ubuntu Edgy. Ho installato Apache dai repository ufficiali. Regolatevi di conseguenza : - ) .
Configureremo il sottodominio subdomain.localhost.

Creiamo lo spazio che ospiterà il sotto dominio
Nella document root di Apache, create una directory che ospiterà i file del sotto dominio.

mkdir /home/davide/public_html/subdomain

Ovviamente usate come directory target la vostra document root di apache.
Create un file di nome index.html e dentro semplicemente scriverete:

<h1>Funziona!</h1>

Configurazione Apache
Apriamo il file di configurazione di Apache. In Ubuntu il file che si occupa di questa parte della configurazione è

/etc/apache2/sites-available/default

Usate il vostro editor di testo preferito. Nella parte bassa del file inserite:

<VirtualHost *>
  ServerName subdomain.localhost
  DocumentRoot /home/davide/public_html/subdomain
  #usate la VOSTRA document root!
</VirtualHost>

Creiamo l’associazione IP dominio
Quello che in remoto sarebbe la creazione di un nuovo record DNS : - ) . In locale agiamo editando il file:

/etc/hosts

Aggiungiamo la riga:

127.0.0.1 subdomain.localhost

Riavviamo Apache:

sudo /etc/init.d/apache2 restart

E puntando il nostro browser su http://subdomain.localhost saremo indirizzati al nuovo subdominio, visualizzando la scritta:

Funziona!

10 thoughts on “Apache – Configurare un sottodominio. Metodo Name-Based”

  1. <VirtualHost *>
    ServerName subdomain.localhost
    DocumentRoot /home/davide/public_html/subdomain
    #usate la VOSTRA document root!
    </VirtualHost>

    manca una ‘l’

  2. sen una cosa…
    geniale l’idea di mettere la cartella di pubblicazione sotto il tuo home.
    Ma ora come faccio con i permessi? Il subdomain mi da inevitabilmente 403 perchè (suppongo) il proprietario non è apache (www-data?) ma me!
    va bene apache ma io li devo poter modificare senza problemi i file nella cartella.

    Come risolvi tu la cosa?
    Grazie ma io il discorso dei gruppi e degli utenti non l’ho mai masticato troppo!

    tnx : - )

  3. Per essere una guida assolutamente perfetta, manca solo che spieghi come impedire che l’utente, oltre a visualizzare
    http://subdomain.miosito.it/pagina.html
    NON POSSA VEDERE la stessa pagina tramite
    http://miosito.it/subdomain/pagina.html

    Lo so, è facile. Ma visto che ci sei…
    A che potrebbe servire?
    Ad attivare/disattivare nomi di dominio e conseguentemente interi siti, operando esclusivamente sulla configurazione host (e, immagino, ad un sacco di altre cose)

  4. … bhe per pra ho deciso di far girare apache dal mio utente…quello della home…
    …gridate pure allo scandalo! 🙂

  5. @ sgrezzeria: opz, scusa il ritardo. Basta modificare i permessi della directory. Se serve anche l’owner.

    Impostando i file “statici” a 644 e gli script a 755 non dovresti avere problemi. Anche se ricorda, è indicazione di massima, dipende da quello che hai 🙂

  6. non va…
    ho provato anche a dargli
    chown -R 777 ./*
    ma sempre forbidden rimane!
    Invece non appena l’utente di apache divento io e non “www-data” tutto è ok.
    Inizierei anche a provare a mettere il mio utente in www-data o l’utente www-data nel mio gruppo ma mi sa che faccio danni (e poi non vedo www-data nell’utilità grafica di gestione gruppi di ubuntu).
    La soluzione di cambiare l’utente di apache (come da tuo ultimo post) sembra la migliore: posso modificare il file e salvare senza preoccuparmi dei permessi. Chissà una volta ripubblicando tutto online come va a finire???
    Grazie

  7. Puoi tranquillamente modificare l’utente di apache direttamente dal file di configurazione.

    La messa on line non è correlata all’ownership del web server locale.

    PS: dopo aver cambiato utente ad apache, meglio risistemare i permessi. Tutto a 777 è un po’ eccessivo.

  8. > La messa on line non è correlata all’ownership del web server locale.

    mi stai dicendo che uploadando i file, i permessi dei file online non si curano dei permessi in locale ma li ereditano dall’utente ftp?
    Cmq grazie per la dritta dell’utente apache…non ci avevo mai pensato!

  9. No aspetta sgrezzeria. I permessi su file e directory, se il server in cui uppi i file può (non è Windows per intenderci) riscrive gli stessi permessi del file in locale, ma l’owner del file sul server sarà sempre l’utente ftp che ha uploadato il file.

    Se in locale il file è di www-data e ti colleghi via ftp al server come web1010, i permessi del file saranno gli stessi di quelli in locale. L’owner invece sarà web1010.

Comments are closed.