Come costruire e gestire un multisito con Drupal 7

Ritratto di Vanni

Un webmaster deve spendere parte del suo tempo per ogni sito web che amministra. Chi ha la gestione e manutenzione di un sito creato con Drupal deve tenerlo costantemente aggiornato,  in quanto molto spesso escono aggiornamenti per i moduli e i temi, senza contare le nuove release del core. Tenere curato questo aspetto è essenziale per la sicurezza e il buon funzionamento del sito.  Il “problema” si pone quando un solo webmaster amministra decine di siti e se per esempio esce una nuova versione del modulo “Views” dovrà aggiornare tale modulo in tutti i siti che lo usano, spendendo così una gran quantità di tempo.  Per ovviare a tale problematica, Drupal 7 ci dà la possibilità di costruire un multisito (multisite), dove con una solainstallazione” possiamo amministrare diversi siti indipendenti l’uno dall’altro.

Con questo sistema possiamo creare siti con diversi domini, oppure dei sottodomini o ancora delle sottocartelle.  Per poter fare questo, però, si deve avere accesso ai files di configurazione del server di hosting; in questo pagina, descriverò come poter creare un multisito su un computer locale, usando come server la piattaforma Xampp e sistema operativo Windows 8, ma la procedura è grossomodo la stessa per qualsiasi server.

PERCHE’ INSTALLARE UNA PIATTAFORMA MULTI-SITE

Come accennavo precedentemente, il pregio del multisito sta nell’abbattere i tempi di manutenzione dei vari siti, in quanto:

  • È presente un’unica installazione di Drupal 7, quindi se si deve aggiornare il core basta aggiornare la directory principale e automaticamente tutti i domini derivanti saranno aggiornati
  • Possiamo utilizzare lo stesso modulo e lo stesso tema in diversi siti, quindi basta un aggiornamento per tutti domini
  • Possiamo personalizzare ogni sito derivato con dei moduli e dei temi dedicati solo a lui

COME CREARE UN MULTISITO IN UN SERVER XAMPP E CON SISTEMA OPERATIVO WINDOWS 8

Per qualsiasi chiarimento ed approfondimento rimando alla guida ufficiale.

  • Creare un nuovo database per ogni sito che vogliamo costruire (in linea teorica si potrebbe anche condividere lo stesso database, ci sono delle tecniche apposite, ma è fortemente sconsigliato)
  • Decomprimere la cartella di Drupal 7 nella cartella htdocs di Xampp
  • Entrare nella cartella di Drupal e successivamente nella cartella “sites
  • In questa cartella si deve creare una nuova sub-directory per ogni dominio che vogliamo creare e a cui daremo il nome del sito (nel mio esempio ho costruito un sito chiamato “sperimentiamo.com” quindi il percorso era htdocs/drupal/sites/sperimentiamo.com)

Si può chiamare il sito come si vuole e si può aggiungere l’estensione .com/.it/.net ecc…

Non si deve usare il www all’inizio.

Chi vuole creare un sottodominio deve rinominare la cartella: nome_sottodominio.nome_sito.com

Chi vuole creare una sottocartella deve rinominare la directory:  nome_sito.com.nome_sottocartella (questa scelta è un po’ più complicata rispetto alle altre, rimando alla guida ufficiale sottocartella)

  • Copiare il file default.settings.php (lo si trova in drupal/sites/default) in ogni sub-directory che abbiamo creato e rinominarlo settings.php, modificare al suo interno le credenziali per accedere al database che avevamo creato per quel sito
  •  Aprire con un editor di testo il file “httpd-vhosts.conf” (che troviamo in C:xampp/apache/conf/extra) e aggiungere questa dicitura per ogni nuovo sito da creare:
<VirtualHost *:80>

    DocumentRoot "C:/xampp/htdocs/cartella_drupal/"

    ServerName nome_del_sito

</VirtualHost>

Io ho creato 2 siti all’interno della cartella sito-esperimenti, ecco le mie stringhe:

<VirtualHost *:80>

    DocumentRoot "C:/xampp/htdocs/sito-esperimenti/"

    ServerName esperimenti1

</VirtualHost>

<VirtualHost *:80>

    DocumentRoot "C:/xampp/htdocs/sito-esperimenti/"

    ServerName sperimentiamo.com

</VirtualHost>

Volendo si possono anche decommentare e modificare le stringhe di esempio che sono già scritte nel file:

##<VirtualHost *:80>

    ##ServerAdmin [email protected]

    ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"

    ##ServerName dummy-host.example.com

    ##ServerAlias www.dummy-host.example.com

    ##ErrorLog "logs/dummy-host.example.com-error.log"

    ##CustomLog "logs/dummy-host.example.com-access.log" common

##<VirtualHost>


##<VirtualHost *:80>

    ##ServerAdmin [email protected]

    ##DocumentRoot "C:/xampp/htdocs/dummy-host2.example.com"

    ##ServerName dummy-host2.example.com

    ##ErrorLog "logs/dummy-host2.example.com-error.log"

    ##CustomLog "logs/dummy-host2.example.com-access.log" common

##<VirtualHost>
  • Aprire con un editor di testo il file “hosts” (che troviamo in C:windows/system32/drivers/etc) e aggiungere queste stringhe:
127.0.0.1    nome_del_sito.com

Nel mio esempio ho inserito le stringhe:

127.0.0.1    esperimenti1

127.0.0.1    sperimentiamo.com
  • Ora lanciare nel browser per ogni nuovo sito l’Url:

http:// nome_del_sito.com/install.php

si avvierà cosi l’installazione dei nuovi siti nei database (seguire la classica procedura)

pagina di installazione del primo sito su una piattaforma multisito

  • Finita l’installazione di ogni sito avremmo dei siti perfettamente distinti e funzionanti
  • Sito 1 homepage del primo sito installato
  • Sito 2 homepage del secondo sito installato
  • Come si può vedere, se si necessita di un aggiornamento
  • notifica di drupal per l'aggiornamento della nuova release del core
  • Con una sola operazione di aggiornamento entrambi i siti risulteranno apposto
  • Sito 1 notifica di aggiornamento effettuato al primo sito
  • Sito 2 notifica di aggiornamento effettuato al secondo sito
  • I moduli comuni a tutti i siti si devono inserire nella cartella drupal/sites/all/modules
  • Mentre se vogliamo personalizzare un solo sito (in questo esempio ad uno dei 2 siti ho attivato il tema  “mayo”)
  • personalizzazione di uno dei due siti con un tema dedicato
  • Nella sub-directory di quel sito creare una cartella modules e una themes in cui inserire moduli e temi specifici
  • directory con relative cartelle per il funzionamento dei nuovi siti

Commenti

Multisito in Remoto

Salve, ma se volessi creare un multisito in remoto con sottocartella e non sottodominio?(Aruba non permette di creare sottodomini se non a pagamento)

 

Grazie.

Ciao Crescenzo,

Ciao Crescenzo,

devo realizzare un multisito e letto la tua guida. E' chiara ed esaustiva ma sicuramente sbaglio qualcosa, in quanto nell'esecuzione non si comporta come da te descritto

Premetto che sto facendo le prove in locale con XAMPP.  Ho seguito le tue indicazioni ma mi sa che sbaglio qualcosa

Ho scaricato drupal 8 in locale nella cartella c:\xampp\htdocs\Prova

 

In Prova\sites ho creato due cartelle

Prova1  e  Prova2. In entrambe queste cartelle ho copiato il file default.settings.php rinominandolo in settings.php

In entrambi questi file ho inserito le caratteristiche del dataBase precedentemente creato (dataBase Prova1 e DataBase Prova2

 

Proseguo aprendo il file C:\xampp\apache\conf\extra\httpd-vhosts.conf, decommento le linee e inserisco questi dati:

<VirtualHost *:80>

    DocumentRoot "C:/xampp/htdocs/Prova"

    ServerName Prova

</VirtualHost>

 

<VirtualHost *:80>

    DocumentRoot "C:/xampp/htdocs/Prova"

    ServerName Prova1

</VirtualHost>

 

<VirtualHost *:80>

    DocumentRoot "C:/xampp/htdocs/Prova"

    ServerName Prova2

</VirtualHost>

 

 

Successivamente ho aperto il file C:\Windows\System32\drivers\etc\hosts e scritte le righe successive

# localhost name resolution is handled within DNS itself.

127.0.0.1       Prova

127.0.0.1       Prova1

127.0.0.1       Prova2

 

La guida prosegue indicando di scrivere nel browser  http:// nome_del_sito.com/install.php

Per me dovrebbe essere http://Prova1/install.php  e poi  http://Prova2/install.php  per l'installazione del secondo

 

Ho lanciato l'installazione di prova1 con http://Prova1/install.php  e sono riuscito ad effettuare l'installazione.

Quando lancio i lcomando http://Prova2/install.php per l'installazione di Prova2 mi ritorna un msgg  che mi avvisa che Drupal è già installato. Da quel che posso capire le cartelle prova1 e prova2 con i rispettivi parametri di accessso al database non li tiene proprio presenti

 

Preciso che il dataBase Prova non l'ho creato e aprendo il file settings.php presente nella cartella sites/defaul, mi riporta i dati dell'accesso del dataBase prova1.

Sicuramente è oer questo che mi dice che l'installazione è stat già effettuata.

Forse devo eliminare in host il VHOST prova?

 

Ritratto di Vanni

Salve Crescenzo,

Salve, probabilmente con Drupal 8 sono cambiate le procudure per installare un multisito, in questo articolo mi riferisco specificamente a Drupal 7.

Non saprei darti dei consigli utili riguardo a Drupal 8 perche' non lo sto seguendo in quanto ora lavoro con altre tecnologie.

Ho trovato questo link dove puoi dare un'occhiata per un multisito con Drupal 8: https://www.drupal.org/docs/8/multisite

Multi Sito

Grazie per la risposta. Non so se JS possa andar bene per la realizzazione di un sito multidatabse per un gestionale.

Mi ero approcciato a drupal in quanto ne avevo sentito parlare molto bene, soprattutto per la sicurezza e per avr già qualcosa di protno invece di dover prepaarare tutto ex novo ed avere già form pronte per l'utilizzo.

Per il corso che stai preparando sarà completo anche con l'uso di dataBase?

Realizzato già qualche gestionale con js?

P.S.:

Drupal ho qualche dubbio in quanto il database contiene tutto e se si sputtana hai eprso tutto ed è una cosa che non mi piace tanto

Multi Sito

Con piacere, dipende se va bene per creare webapp gestionali. Avevo peensato a drupal per questioni di sicurezza e per avere già pronte tante cose tipo uestione utenti, ruoli ed altro.

La cosa che non mi piace tanto di drupal è che è tutto contemuto nel databse e con molta facilità capita che si sputtani il tutto dovendo ricominciare da capo

Inizierò a vedere il corso e capire se si può interfacciare facilmente con un dataBase

Ritratto di Vanni

Salve Gaetano. Il nuovo

Salve Gaetano. Il nuovo tutorial e' sull'uso di JavaScript a livello di front-end, quindi non prendo in considerazione NodeJS, ne' l'uso di database. Comunque NodeJS e' in grado di interagire con diversi tipi di database, ma personalmente non ho esperienza con siti gestionali.

Riguardo a Drupal, si puo' connettere con piu' database (trovi molti link on line, qui un esempio: https://drupal.stackexchange.com/questions/167569/how-can-i-setup-multiple-database-connections), quindi puoi separare i contenuti del sito dai contenuti del gestionale. E puoi usare dei moduli come backup & migrate che ti aiutano a fare i backup.

Multi Sito

Ho iniziato a vedere il tuo corso, peccato non ci sia la parte che interessa me principalmente, in quanto il gestionale obbligatoriamente ha bisogno del dataBase e dei vari collegamenti. Ho letto anche che NodeJS è abbastanza pesante e dovrò testarlo anche per la velocità. grazie di tutto

Aggiungi un commento

Filtered HTML

  • Indirizzi web o e-mail vengono trasformati in link automaticamente
  • Elementi HTML permessi: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Linee e paragrafi vanno a capo automaticamente.

Comment

  • Elementi HTML permessi: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Linee e paragrafi vanno a capo automaticamente.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente

Plain text

  • Nessun tag HTML consentito.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente
  • Linee e paragrafi vanno a capo automaticamente.
Per tutelare la vostra privacy suggerisco l'uso di un nickname o lasciare anonimo...
CAPTCHA
Questa domanda e' per testare se sei un visitatore persona e non un software che genera spam
2 + 1 =
Risolvi la semplice domanda di matematica e inserisci il risultato. Es. se e' 1 + 3 inserisci 4.