Test de ddev

Dans cette page, vers install - conf_mig (migrer drupal 7 vers 8: #mig_arbo et #db7)  - 1ers test - Plus sur le web

 

https://github.com/drud/ddev

Git drupal : https://www.drupal.org/project/drupal/git-instructions

 

Installe : php 7.1 + nginx +MailHog + mariadb + phpmyadmin

https://ddev.readthedocs.io/en/latest/users/extend/customization-extendi...

 

Installation

avoir sur son poste : php-cli et composer, Docker

http://ddev.readthedocs.io/en/latest/#system-requirements

curl https://raw.githubusercontent.com/drud/ddev/master/install_ddev.sh | bash

Le déplace aussi en /usr/local/bin/ + message "Bash completion for ddev was not installed. You may manually install /tmp/ddev_bash_completion.sh in your bash_completions.d directory." =>
sudo cp /tmp/ddev_bash_completion.sh /etc/bash_completion.d/

Lancer pour tester ddev

cd drupal ; ddev start

avoir son l'host (son pc)

Pour utiliser ddev, il faut un php cli et composer fonctionnels -> il manque docker-compose et php-cli =>

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

sudo apt-get install php7.0-cli php7.0-xml php7.0-gd php7.0-curl

composer global self-update
composer global require drush/drush:dev-master
composer update

Vérifier /etc/php/7.0/cli/php.ini

composer require --dev behat/mink

 

Update de 2020

uns fois docker installé, ddev s'installe avec Linuxbrew (avec un  brew tap drud/ddev && brew install ddev ), la maj de ddev se fait avec

brew upgrade ddev

 

Certificats de dev (2020)

Requiert certutil: sudo apt install libnss3-tools
Puis, installer avec brew install mkcert

  • mkcert -install
    crée en /home/user/.local/share/mkcert les 2 .pem
  • puis créer pour un site, par ex: mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
    ca crée un nouveau certif valide pour : "example.com" "example.com" "example.test" "localhost" "127.0.0.1" et "::1"
    le certif est à  "./example.com+5.pem" et la clef à "./example.com+5-key.pem" ✅

mkcert crée et installe automatiquement une CA locale dans le magasin racine du système, et génère des certificats de confiance locaux. mkcert ne configure pas automatiquement les serveurs pour utiliser les certificats, cependant, c'est à vous de décider.

Voir est le certif rootCA.pem: mkcert -CAROOT
Pour installer sur un autre pc: copier rootCA.pem sur l'autre pc, configurer $CAROOT vers le bon dossier et faire mkcert -install

 

Dans cette page, vers install - conf_mig (migrer drupal 7 vers 8: #mig_arbo et #db7)  - 1ers test - Plus sur le web

 

Conf en Nov 2018 (migration v7 v8)

Pour migration d'un drupal 7 vers drupal 8.

prérequis ok: sur un ubuntu, php-cli (PHP 7.2.10), composer (version 1.6.5) et Docker (version 18.06.1-ce en nov 2018 et 19.03.6 en fev 2020) +   docker-compose (1.25.4 en fev 2020) sont à jour. Pour vérifier docker:
docker run --rm -t -p 80:80 -v "/$PWD:/tmp/projdir" -v "/$HOME:/tmp/homedir" busybox sh -c "echo ---- Project Directory && ls //tmp/projdir && echo ---- Home Directory && ls //tmp/homedir"

réinstall de ddev (etre dans son dossier projet) : curl -L https://raw.githubusercontent.com/drud/ddev/master/install_ddev.sh | bash
cd ddup ; ddev config --project-type php --php-version 7.1 ; ddev composer create drupal-composer/drupal-project:8.x-dev --stability dev

Extraits du retour/interaction :

  Creating volume "ddev-ssh-agent_dot_ssh" with default driver
  Creating volume "ddev-ssh-agent_socket_dir" with default driver  ...
  ssh-agent container is running: If you want to add authentication to to the ssh-agent container, run 'ddev auth ssh' to enable your keys.
  sudo /usr/local/bin/ddev hostname ddup.ddev.local 127.0.0.1  ...
  Creating volume "ddev-composer-cache" with default driver
  Pulling db (drud/ddev-dbserver:v1.4.0)...
  Executing composer command: composer create-project drupal-composer/drupal-project:8.x-dev /var/www/html/.tmp_HpKbax --stability dev
  Installing drupal-composer/drupal-project (8.x-dev ...
  Loading composer repositories with package information
  Updating dependencies (including require-dev)
  Package operations: 129 installs, 0 updates, 0 removals
  - Installing cweagans/composer-patches (1.6.5): Downloading (100%)         
  - Installing composer/installers (v1.6.0): Downloading (100%)         
  - Installing composer/semver (1.4.2), ... drupal-composer/drupal-scaffold (2.5.4), ymfony/yaml (v3.4.18), drupal/console-core (1.8.0), Installing drupal/coder (8.3.1) ...
  - Installing s: Downloading (100%)  
  Create a sites/default/settings.php file with chmod 0666
  Create a sites/default/files directory with chmod 0777
  Moving installation to project root
  Removing temporary install directory

  1. Le dossier ddup pèse environ 125 Mo, contient 5 fichiers cachés, un composer.json (de drupal-composer/drupal-project, qui a les require "drupal/core": "^8.6.0", "drush/drush": "^9.0.0"), le README.md et les dossiers : drush, scripts, vendor (dossiers symfony, composer...), web (le code php du drupal 8) et .ddev
    Le site (drupal 8.6.3) n'étant pas installé, seul le lien phpMyAdmin fonctionne (ici http://ddup.ddev.local:8036) et drush st
    Optionnel, backup (lancer la commande derrière le prompt ddup$, sera dans un dossier ddup_0 sous ddup/.ddev/db_snapshots) avec un ddev snapshot -n ddup_0
  2. composer update drupal/core webflo/drupal-core-require-dev symfony/* --with-dependencies
    modifié /ddup/.ddev/config.yaml tq: router_http_port: "8081" puis
    ddev config (faire ok à ce qu'il propose)
  3. ddev start ; ddev describe
    Le dossier ddup pèse 217,7 Mo, et drupal 8.6.3 est pret à être installé via l'url
    Backup: ddev snapshot -n ddup_vide
    Le dossier ddup pèse 312,0 Mo (dont les 2 backups: ddup_0 93,6 Mo et ddup_vide 94,3 Mo).
    Installer en profil minimal (si pour migration de drupal 7 vers 8) via http://ddup.ddev.local:8081/core/install.php
    Avec un seul snapshot (ddup_vide, 94,3 Mo) , le dossier pèse 220,0 Mo
  4. Récupérer la base drupal 7. Je ne n'aborderai pas ici les commandes db, mais, en gros :
    • avoir fait un export de la base de donnée de la prod (ici, un drupal 7 hébergé chez un provider), on a donc un fichier db7.sql.
    • Puis, l'importer sur le serveur db, via
      soit par ex MySQLWorkbench (il crée une base db7, à coté de db du drupal 8) et ajouter les bons droits pour le user  db
      soit voir install drupal, soit via ssh
      soit (reproductible, mais je ne l'ai pas testé) dans le fichier config.yaml de son projet, ajouter
      hooks:
        post-start:
          - exec: mysql -uroot -proot -hdb -e "CREATE DATABASE IF NOT EXISTS db7; GRANT ALL ON db7.* TO 'db'@'%';"

Points db7.sql : Cette db source (db7.sql, issue d'un export de la prod, ici un drupal 7 bilingue fr-en) est-elle à convertir entre-temps dans le bon UTF-8 (par erreur, avait était créée en swidish) ? Faudra-il créer un projet ddev de type drupal 7, l'y importer, désactiver voire désinstaller les modules qui posent soucis ou y modifier les conf de certains champs, la réexporter pour migrer ?

  1. Téléchargement des modules de migration (passer ces commandes dans le projet ddev8)
    composer require drupal/migrate_upgrade:^3 ; composer require drupal/migrate_tools ; composer require drupal/migrate_plus
    Télécharger les modules contribs necessaires **
  2. Finaliser la conf. Modifier le settings .php (en ddup/web/sites/default) en ajoutant les lignes :

    $databases['migration_source_db']['default'] = array (
      'database' => 'nom-dbimportée-drupal7',
      'username' => 'db',
      'password' => 'db',
      'prefix' => '',
      'host' => 'db',
      'port' => '3306',
      'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
      'driver' => 'mysql',
    );
    $settings['install_profile'] = 'minimal';

 

** modules necessaires pour moi, du core : block_content, breakpoint, CKEditor, config (Configuration Manager), Contact, media, views_ui et
pathauto (avec ctools et token), metatag, admin_toolbar_tools
composer require drupal/admin_toolbar ; composer require drupal/pathauto ; composer require drupal/metatag ;

A ce stade, en ne gardant que le dernier snapshot, le dossier pèse  574,1 Mo (compris : 2 db sans les fichiers files du drupal 7).

 

Dans cette page, vers install - conf_mig (migrer drupal 7 vers 8: #mig_arbo et #db7)  - 1ers test - Plus sur le web

 


Test de leur docker pour drupal 8 (en 2018)

https://ddev.readthedocs.io/en/latest/users/cli-usage/#drupal-8-quickstart

Installer drupal avec composer create-project drupal-composer/drupal-project:8.x-dev drupal

Le template composer utilisé (par ddev, pour installer drupal) est drupal-project.
Lire le README.md pour voir comment le mettre à jour. La commande qui a été passée est de type (ici, some-dir=ddev8 mais j'aurais pu le nommer mig7_8 ou autre est le nom du projet ddev, pas celui du site)
composer create-project drupal-composer/drupal-project:8.x-dev some-dir --stability dev --no-interaction
Il utilise packagist.drupal-composer.org (et non packages.drupal.org), pour changer, voir le drupal/README.md).
Avec ddev version v1.3.0, on a passé un ddev config : Project name (ddevd8), Docroot Location (web), Project Type (drupal8)

 

config (nom docroot et type de projet = drupal8)

cd drupal ; ddev config

écrit  ddev1/drupal/.ddev/config.yaml
Modifié pour port 8080

la base

ddev start

Install : mariadb nginx phpmyadmin et affiche 2 liens (http et https) mais KO (erreur de /var/log/nginx/error.log et php-fpm) :
Warning: require(/var/www/html/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/html/autoload.php on line 14

car sur mon poste php 7 était incomplet et composer pas à jour...

accès ssh (on arrive dans /var/www/html, pas de coloration syntaxique bash) : ddev ssh
voir logs  : ddev logs   (ou ddev logs -f  et ctrl+c)
L'import prend divers formats (.sql, sql.gz, tar, tar.gz, et zip)  : ddev import-db --src=dumpfile.sql.gz

ddev describe

NAME     TYPE     LOCATION                    URL(s)              STATUS        
drupal8  drupal8  /PATH/drupal  http://drupal8.ddev.local:8080    running
                                https://drupal8.ddev.local                    

Project Information
-----------------
PHP version:	7.1                                                       
URLs:       	http://drupal8.ddev.local:8080, https://drupal8.ddev.local

MySQL Credentials
-----------------
...
To connect to mysql from your host machine, use port 32768 on 127.0.0.1.
For example: mysql --host=127.0.0.1 --port=32768 --user=user --password=pw --database=db

Other Services
--------------
MailHog:   	http://drupal8.ddev.local:8025
phpMyAdmin:	http://drupal8.ddev.local:8036

DDEV ROUTER STATUS: healthy 

 

 

ddev remove

Commande "non destructive" :  efface les conteners, mais pas la db du projet (ni le code et fichiers du projet).

  • etre dans un dossier de projet ddev remove -> efface les conteners. Ou ddev remove <projectname>
  • effacer la db importée d'un projet et conteners: ddev remove --remove-data

 

En pratique

Le drupal 8 n'est pas installé, la base de donnée est créée sur l'host db.

  • /etc/php/7.1/fpm/php.ini
  • /etc/nginx/sites-enabled/nginx-site.conf
    Pour modifier la conf, copier le fichier de conf en .ddev/nginx-site.conf (cf https://ddev.readthedocs.io/en/latest/users/extend/customization-extendi... )
    Pour info : root /var/www/html/web
  • drush 8.1.15
    Drush script           :  /home/.composer/vendor/drush/drush/drush.php
    Drush configuration    :  /etc/drush/drushrc.php

Coté host :

  • /home/user/.ddev/router-compose.yaml association ports
  • /home/user/.ddev/ddevd8/mysql -> le mysql-slow.log est lisible directement + un dossier  nombase  où on voit le nom des tables (avec préfixes).

 

 

Dans cette page, vers install - conf_mig (migrer drupal 7 vers 8: #mig_arbo et #db7)  - 1ers test - Plus sur le web


Plus sur le web

https://ddev.readthedocs.io/en/latest/

#ddev sur http://drupalslack.herokuapp.com/
https://ddev.readthedocs.io/en/latest/users/extend/customization-extendi...

 

https://docs.docker.com/samples/#library-references

logo drush