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
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 où 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
-
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 (icihttp://ddup.ddev.local:8036
) etdrush st
Optionnel, backup (lancer la commande derrière le prompt ddup$, sera dans un dossier ddup_0 sousddup/.ddev/db_snapshots
) avec un ddev snapshot -n ddup_0 -
composer update drupal/core webflo/drupal-core-require-dev symfony/* --with-dependencies
modifié /ddup/.ddev/config.yaml tq: router_http_port: "8081" puisddev config
(faire ok à ce qu'il propose) -
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 -
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, ajouterhooks: 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 ?
-
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**
-
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...