srv17 : install drupal 8

Sur srv ubuntu17 (lamp php7), composer 1.2.2 installé globalement. Drupal8 (8.3.2) avec drush 8.1.11, Librairie GD 2.2.4.
(Sur cette vm, il y a aussi un drupal 7 en /var/www/dru7).

conf srv

fichier hosts (préparé pour 2 sous-sites et un "main" vierge" en sites/default): drucomp1 druc1 druc2 srv17

Cette vm a 2 disques, drupal-composer est installé sur ce 2e disque (label d2).

Rappel: Il faut monter via /mnt et non via /media. Logué avec un compte user de dev (pas en root), créer un dossier (vide) en /mnt nommé ici d2 (genre: chown user:www-data /mnt/d2 ; chmod o+g=rwx /mnt/d2). Par commodité, j'ai créé un dossier dossier de travail nommé w (un lien est en /home/user/w -> /mnt/d2/w) où j'ai installé drupal-composer avec un

composer create-project drupal-composer/drupal-project:8.x-dev drucomp1 --stability dev --no-interaction

Mais on n'en n'est pas encore là :) C'est juste pour dire que le Documentroot sera /mnt/d2/w/drucomp1 (les dumps et divers docs en w).

db Mysql

chaque sous-site a sa base (pas de prefixe de table). Maria à tester :)

conf apache

Voir un PJ le .zip qui regroupe les fichiers de conf (les chemins sont indiqués ici). Pour /etc/apache2/apache2.conf on ne le touche qu'une fois (voir lignes 172) smiley

3 fichiers dans /etc/apache2/conf-enabled/  et  /etc/apache2/sites-enabled/ (voir pj, faire les liens et les sudo a2enconf druc1 ; sudo a2ensite druc1 ; sudo service apache2 reload). Vérifier avec un sudo apache2ctl -S

note: pour nginx, voir leur site pour le fichier de conf des virtual hosts drupal 8 (cf ce test d'install sur un pi lemp raspbian jessie)

C'est là qu'on lance le composer create-project, qui installe :Arborescence du projet drupal-composer
   * drupal 8.3.2 dans "drucomp1/web",
   * drush 8.1 dans "drucomp1/vendor/drush/drush", twig dans vendor/twig/twig...
   * en créant cette arborescence là (le .json est donc en /mnt/d2/w/drucomp1/composer.json)...

conf drupal (multi-site)

avant la 1ere install (prérequis)

Renommer (puis modifier) drucomp1/web/sites/example.sites.php en sites.php : cp example.sites.php sites.php ; vi sites.php ; sudo chown user:www-data sites.php ; sudo chmod 404 sites.php

$sites = array(
   'drucomp' => 'default',
   'druc1' => 's01',
   'druc2' => 's02',
 );

Créer les dossiers "drucomp1/config/sync", config/sync1 et sync2 (avé les bons droits), vérifier les droits des divers settings.php, .yml et .YAML...

Utile: ajouter les PATH (dans  ~/.bashrc : PATH=$PATH:/mnt/d2/w/drucomp1/vendor/drush/drush; export PATH; )

Préparation du dossier drucomp1/web/sites/default

Il faut décommenter des lignes tout en bas de settings.php (pour activer le settings.local.php) ou mieux, utiliser :

/**
 * Fichier /w/drucomp1/web/sites/default/settings.php de la vm srv17 - 14 mai 2017
 * A l'ajout d'une nouvelle vhost, 3 modifs à faire ici: la DB, /config/sync en /config/syncX et 
 *   trusted_host_patterns
 */
$settings['trusted_host_patterns'] = [
  '^drucomp1$',
];
...
 if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
   include $app_root . '/' . $site_path . '/settings.local.php';
 }
$config_directories['sync'] = '../config/sync';
$databases['default']['default'] = array (
  'database' => 'NOM-DB',
  'username' => 'NOMUSER',
  'password' => 'MOT2PASSE',
  'prefix' => '',
  'host' => 'localhost',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
);
$settings['install_profile'] = 'standard';

Le services.yml a des conf pour twig, configuration du cookie_domain pour rester logué quand on parcours divers sous-sites (à tester).

 

Install de la vesion "main" (à ne faire qu'une seule fois)

Vérifier les droits des divers settings.php, .yml et .YAML (drupal doit pouvoir y écrire)... Copier le dossier default sous un autre nom (pour préparer l'installation suivante) et lancer l'installation.

Le status report indique qu'il faut reprotéger les fichiers de conf. Arborescence du dossier default de drupal 8.3 (après installation)

drush st ; drush @drucomp1 ard

 


 

à chaque nouvel ajout de virtualhost

Ici la nouvelle vhost "drucX" sera hébergée dans sites/s0X

Créer/vérifier le dossier "drucomp1/config/syncx", modifier/vérifier /etc/hosts, copier les 2 fichiers de conf apache (activer la vhost). Préparer le sous-dossier sites/s0X (drupal va y écrire le hash-salt...). Créer la db (à configurer dans le s0X/settings.php) :

$ mysql -u root -p

mysql> CREATE DATABASE IF NOT EXISTS nom-base CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> CREATE USER drupaluser IDENTIFIED BY 'sonmot2passe';
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON nom-base.* TO 'drupaluser'@'localhost' IDENTIFIED BY 'sonmot2passe';
mysql> FLUSH PRIVILEGES;
mysql> \q

Créer son alias en /drucomp1/drush/site-aliases/aliases.drushrc.php (remplacer druc1 par nom-du-site):

$aliases['druc1'] = array(
   'root' => '/mnt/d2/w/drucomp1/web',
   'uri' => 'http://druc1',
 );

Revérifier settings.php (y rechercher les chaines : config_directories password et trusted_host_patterns)

Installer via le navigateur install.php (en fr directement), drupal 8 indique https://www.drupal.org/server-permissions via un message "supprimer les droits en écriture sur sites/s0X et sites/s0X/settings.php

Reprotéger sites/s0X et divers fichiers de conf

Le rapport indique: le répertoire sites/s02, sites/s02/settings.php settings.local.php et services.yml + "Il est recommandé de le désactiver" au sujet de la reconstruction d'accès (paramètre rebuild_access de settings.php)

=> cd drucomp1/web/sites ; sudo chmod g-w s02 ; sudo chmod g-w s02/se*.*

Le paramètre rebuild_access n'est pas dans settings.php mais dans le settings.local.php

backup total via drush

drush @sites arb

indique le chemin des dossiers - car il crée un dossier par site (sql+fichiers, ici par ex en /home/nom-user/drush-backups/archive-dump/201705141647xx/ - les 3 dossiers compressés font à peu près 38Mo)

Arborescence du dossier de projet drupal-composer
Arborescence du dossier default de drupal 8.3 (après installation)