Installer un drupal 7 avec ddev

Arborescence d'un projet docker ddev avec drupal 7 (drupal-composer)Le dossier du projet est nommé Projets/ddev7t et à la fin, le drupal 7 sera sous Projets/ddev7t/web.

Install du drupal 7

cd Projets
composer create-project drupal-composer/drupal-project:7.x-dev ddev7t

-> Installe drush 8.1.17, symfony/console (v3.4.11)... On va créer le ddev7t/.ddev/config.yaml avec un port différent (ici 8097) :

cd ddev7t ; ddev config ; vi .ddev/config.yaml

-> on garde les 3 valeurs par défaut (faire 3 fois ENTREE). Le script ne demande pas de port, ni d'alias pour le nom du serveur, il faut modifier manuellement le config.yaml :

APIVersion: v0.18.0
name: ddev7t
type: drupal7
docroot: web
php_version: "7.1"
router_http_port: "8097"
router_https_port: "7443"
xdebug_enabled: false
additional_hostnames: 
- dd7
- d7s1
- d7s2
provider: default

enlightened Si ddev gère le settings.php (ou pas), l'install faite au ddev start sera différente (voir  ddev : commandes fréquentes).

 

 

ddev start

-> ajout sur l'hote des noms :   (sudo /usr/local/bin/ddev hostname ddev7t.ddev.local 127.0.0.1  +  sudo /usr/local/bin/ddev hostname dd7.ddev.local 127.0.0.1  + les sudo /usr/local/bin/ddev hostname d7s1.ddev.local 127.0.0.1)
-> création de ddev-ddev7t-db + ddev-ddev7t-web + ddev-ddev7t-dba + ddev-router

 

ddev describe

pour voir le port pour attaquer la db

 

Installer le drupal via https://dd7.ddev.local:7443/install.php (tout est à db  : Database name + Database username + Database password  + Database host ; mettre si multi site un préfixe m_)

4 byte UTF-8 pour mysql non activé (plus à utf8mb4) -> les tables sont en utf8_general_ci et non en mb4.

 

A ce stade, sur l'hote :

  • ddev7t/web/sites/default a setting.php en lecture seule et en écriture un settings.local.php (avec commentaire "#ddev-generated: Automatically generated Drupal settings.php file.").
  • ddev7t/web/sites/all/modules/contrib/composer_autoloader
  • ddev7t/composer.json ("drupal-composer/drupal-project" avec require ext-gd, drush 8...)
  • .ddev le config.yaml (vu au début) et le docker-compose.yaml (créée par ddev start) + un dossier mysql vide

Conversion utf8mb4

Le user mysqld du serveur est root/root (tapper root en pw après la 2e ligne:)

ddev ssh 
mysql -u root -p

ou trouver le port avec  ddev describe puis mysql --host=127.0.0.1 --port=32772 --user=root --password=root

 

ddev ssh
cd ~ ; drush @none dl utf8mb4_convert-7.x ; drush cc drush ; cd /var/www/html/web
drush utf8mb4-convert-databases

 

Modif du settings.php (ajouter droit d'écriture, ajout utf8mb4, reprotéger) :

      'charset' => 'utf8mb4',
      'collation' => 'utf8mb4_general_ci',

 

 

et backup

du serveur installé (ie après un ddev ssh) :

mkdir /var/www/html/.tarballs
mysqldump db | gzip >/var/www/html/.tarballs/db.sql.gz

on retrouve bien sur l'hote le .sql.gz dans ddev7t/.tarballs

Ajout de modules

les commandes suivantes sont saisies du serveur (après le prompt en "uid_1000@50a79500989f:/var/www/html$" - on a fait précedemment un ddev ssh)

dl ctools 1.14 et views 3.20 (sans les installer sur le site) :   composer require drupal/views

composer require drupal/ckeditor

composer require drupal/i18n
composer require drupal/i18nviews
composer require drupal/entity_token
composer require drupal/pathauto
composer require drupal/jquery_update
composer require drupal/admin_menu
composer require drupal/ckeditor_link
composer require drupal/file_entity
composer require drupal/media_ckeditor
composer require drupal/media_oembed
composer require drupal/plupload
composer require drupal/advanced_help
composer require drupal/menu_block
composer require drupal/transliteration
composer require drupal/globalredirect 
composer require drupal/custom_search
composer require drupal/rules
composer require drupal/schemaorg
composer require drupal/metatag
composer require drupal/views_bulk_operations
composer require drupal/xmlsitemap

composer require drupal/multilink
composer require drupal/hreflang
composer require drupal/languageicons

composer require drupal/image_captcha_refresh
composer require drupal/honeypot

   

Haut de la page et install - conversion utf8mb4 - backup de la db - ajout modules (avec composer require) - utiliser

Utiliser

avec coloration syntaxique : ddev7t$ ddev exec drush pml | grep Enabled > mod_inst_180531

et sans (du srv) uid_1000@7c30fe200a88:/var/www/html$ drush @monalias pml | grep Enabled

 

 

à la mano KO

La 1ere ligne change bien la db, mais les tables restent en  utf8_general_ci avec la 2e ligne

ALTER DATABASE db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
SELECT CONCAT('ALTER TABLE `', TABLE_NAME,'` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS mySQL FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA= "db" AND TABLE_TYPE="BASE TABLE";
SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLLATION_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
where not collation_name is null
AND TABLE_SCHEMA = '[db]'
AND NOT COLLATION_NAME = 'utf8mb4_general_ci'
order by COLLATION_NAME, DATA_TYPE;
\q

 

https://mariadb.com/kb/en/library/setting-character-sets-and-collations/

SET collation_server ='utf8mb4_general_ci';

Arborescence d'un projet docker ddev avec drupal 7 (drupal-composer)
le dossier drush : pour commandes et alias drush, site en web