Installazione di Drupal 8 con Drush
Drush è un comodo tool per gestire attività inerenti a Drupal in modo semplice e veloce. Drush permette di connettersi al sito drupal.org, installare Drupal, installare moduli, abilitare moduli e molto altro ancora. Questo è il motivo per cui ho scelto di installare Drupal 8 con Drush, e questa guida serve per farlo nel migliore dei modi.
L'ambiente di lavoro è Ubuntu 14.04.2
Operazioni preliminari - 1
Per il corretto funzionamento di Drupal bisogna assicurarsi che mod_rewrite sia abilitato in Apache (attivazione del Clean URLs); per verificare che lo sia usare il comando:
$ apache2ctl -M
se nell'elenco che viene restituito come risposta compare "rewrite_module" siamo a posto, altrimenti lo abilitiamo:
$ sudo a2enmod rewrite
poi, per rendere attivo il modulo, bisogna riavviare Apache:
$ sudo service apache2 restart
Se al riavvio esce l'errore
* Restarting web server apache2 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
dobbiamo aprire con un editor il file apache2.conf
$ sudo gedit /etc/apache2/apache2.conf
inserire la riga
ServerName 127.0.0.1
riavviare di nuovo Apache
$ sudo service apache2 restart
Controlliamo l'effettiva abilitazione del modulo rewrite:
$ sudo apache2ctl -M
Ora "rewrite_module" dovrebbe essere presente nell'elenco.
Operazioni preliminari - 2
Dobbiamo installare la libreria PHP-GD Graphics:
$ sudo apt-get install php5-gd
Per verificare se tale libreria sia già presente, possiamo eseguire una semplice applicazione PHP:
<?php
if (extension_loaded('gd') && function_exists('gd_info')) {
echo "Libreria GD Graphic presente";
}
else {
echo "Libreria GD Graphic non installata";
} ?>
ed farla eseguire dal browser.
Operazioni preliminari - 3
Apriamo il file di configurazione apache2.conf e assicuriamoci che "Allow Overrides" sia impostato a "All":
$ cd /etc/apache2
$ sudo gedit apache2.conf
e modifichiamo il tag seguente
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
sostituendo
AllowOverride None
con
AllowOverride All
Preparazione per l'installazione Drush:
Git + Composer
Le versioni precedenti a Drush 7 NON supportano Drupal 8. Perciò è obbligatorio installare questa versione.
Per installare Drush 7 è necessario utilizzare Composer, un tool per il dependency management di PHP. Composer permette di dichiarare le librerie necessarie al progetto e le installa automaticamente.
Ecco in breve le problematiche che Composer risolve:
- hai un progetto che dipende da un certo numero di librerie
- alcune di queste librerie dipendono a loro volta da altre
- è possibile dichiarare le librerie necessarie
- Composer trova quali versioni di quali packages vadano intallate e le installa (cioè esegue il downloads di queste nel progetto)
n.b. Composer non gestisce packages o librerie, nel senso che le installa in un progetto ma non globalmente: per questo viene definito dependency manager. Per chi conosce Ruby possiamo dire che Composer si inspira a Bundler: prima non c’era un tool del genere per PHP.
Per verificare se abbiamo il Composer già installato eseguiamo il comando:
$ which composer
Se restituisce
/usr/local/bin/composer
significa che è installato e si trova dove indicato, altrimenti non c'è nessuna risposta.
Composer richiede che sia presente PHP 5.3.2+ per funzionare.
Per verificare la versione PHP presente:
$ php -v
Eventualmente aggiornare il PHP.
La procedura di installazione di Drush è stata modificata in quanto ora risiede su Git, quindi è necessario avere il Git installato. Per verificarne la presenza eseguire:
$ git --version
Nel caso in cui non fosse già presente installiamo Git usando apt-get, una operazione semplice e veloce:
$ sudo apt-get install git-core
Eseguiamo subito un aggiornamento per essere sicuri di avere l’ultima versione anche di tutti i packages relativi a Git:
$ sudo apt-get update
Rieseguendo
$ git --version
dovremmo ottenere
git version 1.9.1
Il Composer può essere installato localmente (in uso solo per un progetto predeterminato) oppure globalmente (accessibile da tutti i progetti, previo l’aggiornamento del PATH). Noi installeremo la versione Globale.
$ cd ~
~$ sudo curl -sS https://getcomposer.org/installer | php
L’installatore dovrebbe rispondere:
#!/usr/bin/env php
All settings correct for using Composer
Downloading...
Composer successfully installed to: /home/{user}/composer.phar
Ora spostiamolo nella cartella bin locale:
~$ sudo mv composer.phar /usr/local/bin/composer
In questo modo sarà suficiente eseguire
$ composer
per eseguirlo, invede di
$ php composer.phar
Se non funzionasse sinceratevi che la cartella bin sia presente nella system PATH:
$ printenv PATH
Eventualmente aggiungerla.
Installazione Drush
Dobiamo scricare i file necessari in /usr/share/php (o nella cartella dove ci fosse una versione precedente di drush):
$ cd /usr/share/php
$ sudo git clone https://github.com/drush-ops/drush.git drush7
$ sudo ln -sf /usr/share/php/drush7/drush /usr/bin/drush
$ cd /usr/share/php/drush7
$ sudo composer update
$ sudo composer install
Se eseguiamo ora il comando "drush status" vedremo le informazioni relative a Drush:
$ sudo drush status
PHP executable : /usr/bin/php
PHP configuration : /etc/php5/cli/php.ini
PHP OS : Linux
Drush version : 7.0-dev
Drush temp directory : /tmp
Drush configuration :
Drush alias files :
Installazione Drupal 8
Per installare Drupal posizionarsi nella cartella dove vogliamo scaricarlo (per esempio /var/www/html o quale che sia la web root sul sistema su cui state lavorando):
$ cd /var/www/html
poi eseguiamo il download di Drupal 8
$ sudo drush dl drupal-8 --select
selezioniamo l’ultima versione, 8.0.0-beta7 quando è stato scritto questo articolo.
Come effetto viene creata una nuova cartella con all'interno i file per l'installazione denominata "drupal-8.0.0-beta7". Eventualmente rinominiamo la cartella con un nome più significativo:
$ sudo mv drupal-8.0.0-beta1 drupal_test
Entriamo nella cartella
$ cd drupal_test
Prima di proseguire dobbiamo creare un DB per drupal_test in phpMyAdmin.
Eseguire l'installazione vera e propria di Drupal; sostituendo i valori corretti in base al vostro ambiente ai parametri
"dbUser" l'utente del database creato precedentemente(tipicamente "root")
"dbPsw" la password del database creato precedentemente
"dbName" nome del database, nel nostro caso "drupal_test"
"SiteName" nome del sito, p.e. nel nostro caso "Drupal 8 Beta"
"DrupalAdminUser" utente amministratore del sito (tipicamente "admin")
"DrupalAdminPsw" password per l'accesso all'amministrazione Drupal
"DrupaladminMail" email dell'amministratore del sito
"db-su-pw" la password
eventualmente a "drupal7_test" il nome del Drupal che avete creato e a "Drupal 7 Test" la descrizione relativa, quindi
eseguire il seguente comando:
$ sudo drush site-install standard --db-url=mysql://[dbUser]:[dbPsw]@localhost/[dbName] --site-name="SiteName" --account-name=[DrupalAdminUser] --account-pass=[DrupalAdminPsw] --site-mail="DrupaladminMail" --db-prefix=shared_
Il sistema risponderà:
You are about to DROP all tables in your 'drupal_test' database. Do you want to continue? (y/n): y
Starting Drupal installation. This takes a while. Consider using the --notify global option.[ok]
Installation complete. User name: admin User password: pazuzu [ok]
Congratulations, you installed Drupal!Drupal installation complete
Se il comando dovesse restituire questo errore:
Command site-install needs a higher bootstrap level to run - you will need to invoke drush from a more functional Drupal environment to run this command.
significa che il download di Drupal contiene un file di configurazione, nella cartella sites/default, con il nome default.settings.php invece di settings.php. In questo caso deve essere rinominato e probabilmente andranno impostati i permessi al nuovo file. Andiamo perciò nella cartella dove abbiamo scaricato Drupal ed eseguiamo:
$ cd drupal_test7/sites/default
copiamo default.settings.php in settings.php
$ sudo cp default.settings.php settings.php
infine modifichiamo i permessi del file di configurazione
$ sudo chmod a+w settings.php
Torniamo nella cartelle del sito Drupal:
$ cd /var/www/html/html/drupal_test7
Rieseguiamo il comando "sudo drush si ...". A questo punto abbiamo una versione di Drupal 8 funzionante.
Se eseguiamo ora il comando "drush status" vedremo che sono presenti le informazioni del Drupal appena installato:
$ drush status
Drupal version : 8.0.0-dev
Site URI : http://default<br< a=""> /> Database driver : mysql
Database hostname : localhost
Database port :
Database username : root
Database name : drupal_test7
Database : Connected
Drupal bootstrap : Successful
Drupal user : Anonymous
Default theme : bartik
Administration theme : seven
PHP executable : /usr/bin/php
PHP configuration : /etc/php5/cli/php.ini
PHP OS : Linux
Drush version : 7.0-dev
Drush temp directory : /tmp
Drush configuration :
Drush alias files :
Drupal root : /var/www/html/drupal_test7
Site path : sites/default
File directory path : sites/default/files
Temporary file : /tmp
directory path
Active config path : sites/default/files/config_NY5y-klpPkivmgmb-AxpMCCo5 HSrF7c1R5FUXAfcqavcIlY8vQN1Agx3A0rsqUU6YWFLsiBnoQ/active
Staging config path : sites/default/files/config_NY5y-klpPkivmgmb-AxpMCCo5
HSrF7c1R5FUXAfcqavcIlY8vQN1Agx3A0rsqUU6YWFLsiBnoQ/staging
Se riscontrate l’errore:
mkdir(): Permission denied FileStorage.php:171 [warning]
mkdir(): No such file or directory FileStorage.php:182 [warning]
mkdir(): Permission denied FileStorage.php:171 [warning]
mkdir(): No such file or directory FileStorage.php:182 [warning]
filemtime(): stat failed for /var/www/drupal-8b7/sites/default/files/php/service_container/service_container_prod [warning]
MTimeProtectedFastFileStorage.php:184
dovrete cambiare il permesso:
$ sudo chmod o+w /var/www/html/drupal_test7/sites/default/files
Per il corretto funzionamento di Drupal è probabile che sia anche necessario modificare nella cartella di drush i permessi seguenti:
$ sudo chmod o+w ~/.drush/cache/usage
$ sudo chmod o+w ~/.drush/cache/default
Prima di eseguire drupal nel browser è buona norma riavviare Apache2
$ sudo service apache2 restart
Verifichiamo ora l'installazione accedendo all'indirizzo "localhost/drupal8beta7" dal nostro browser.
Bibliografia:
https://github.com/drush-ops/drush
https://getcomposer.org/doc/00-intro.md#system-requirements