Podpora starého dobrého Drupalu 7 skončí po úctyhodných 14 letech v lednu 2025.
Je tedy pomalu nejvyšší čas upgradovat na vyšší verzi. Postup upgradu by měl probíhat následovně:
- zálohovat soubory a databázi Drupalu 7
- vytvořit čistou instalaci aktuálního Drupalu
- stáhnout a aktivovat moduly používané na Drupalu 7
- Aktivovat “Migration” modul
- proklikat průvodce, pomodlit se, a spustit migraci
“Migration” modul požaduje přístup k databázi Drupalu 7, stejně tak jako k jeho (veřejným a privátním) souborům.
Záloha Drupalu 7 je poměrně jednoduchá díky modulu Backup and Migrate.
Čistou instalaci Drupalu 10, MariaDB serveru, i import stávající DB Drupalu 7 můžeme zajistit celkem snadno díky Dockeru (compose).
Vytvoříme adresář “drupal_migration”, do kterého rozbalíme zálohu vytvořenou modulem Backup and Migrate zmíněným výše.
Adresářová struktura by měla vypadat takto:
1drupal_migration
2| database.sql
3| MANIFEST.ini
4|
5\---docroot
6 | soubory drupalu
7 |...
V adresáři “drupal_migration” vytvoříme docker-compose.yaml
:
1version: '3.1'
2
3services:
4
5 drupal:
6 image: drupal:10-apache
7 ports:
8 - 8000:80
9 volumes:
10 - ./docroot:/d7
11 restart: always
12 depends_on:
13 - db
14
15 db:
16 image: mariadb:10.3.35
17 restart: always
18 environment:
19 MARIADB_USER: drupal10
20 MARIADB_PASSWORD: drupal10
21 MARIADB_DATABASE: drupal10
22 MARIADB_ROOT_PASSWORD: drupal10
23 volumes:
24 - ./:/d7/
25 ports:
26 - 3306:3306
Spustíme docker compose up --build
. Poté je Drupal je automaticky dostupný na http://localhost:8000/. Otevřeme localhost a proklikáme instalaci Drupalu. “Database host” je třeba změnit na hodnotu “db”, localhost odkazuje na localhost v kontejneru.
K instalaci a aktivaci modulů. Je samozřejmě možné to provést ručně, ale lepší je využít composer a drush.
Připojme se do docker kontejneru: docker exec -it <nazev kontejneru s instalací drupalu> bash
1# nainstalovat aktualne pouzivane moduly
2composer require \
3 'drupal/aggregator:^2.2'\
4 'drupal/antibot:^2.0'\
5 'drupal/backup_migrate:^5.0'\
6 'drupal/blog:^3.1'\
7 'drupal/color:^1.0'\
8 'drupal/colorbox:^2.0'\
9 'drupal/comment_notify:^1.4'\
10 'drupal/entity:^1.4'\
11 'drupal/eu_cookie_compliance:^1.24'\
12 'drupal/filefield_paths:^1.0@beta'\
13 'drupal/google_analytics:^4.0'\
14 'drupal/imageapi_optimize:^4.0'\
15 'drupal/imce:^3.0'\
16 'drupal/insert:^3.0@beta'\
17 'drupal/pathauto:^1.12'\
18 'drupal/rdf:^2.0'\
19 'drupal/yoast_seo:^1.8'\
20 'drupal/scheduler:^1.5'\
21 'drupal/sharethis:^3.0'\
22 'drupal/taxonomy_menu:^3.6'\
23 'drupal/metatag:^2.0'\
24 'drupal/recaptcha:^3.2'\
25 'drupal/xmlsitemap:^1.5'
26
27# nainstalovat drush
28composer require --dev drush/drush
29
30# zapnout moduly
31drush en -y \
32 aggregator \
33 antibot \
34 backup_migrate \
35 blog \
36 color \
37 colorbox \
38 comment_notify \
39 entity \
40 eu_cookie_compliance \
41 filefield_paths \
42 google_analytics \
43 imageapi_optimize \
44 imce \
45 insert \
46 pathauto \
47 rdf \
48 yoast_seo \
49 scheduler \
50 sharethis \
51 taxonomy_menu \
52 metatag \
53 recaptcha \
54 xmlsitemap
55
56# prepnout web do rezimu udrzby
57drush sset system.maintenance_mode 1
58
59# zapnout "migrate drupal modul"
60drush en -y \
61 migrate \
62 migrate_drupal \
63 migrate_drupal_ui
To nainstaluje a zapne všechny potřebné moduly. Poslední co je potřeba před migrací udělat, je vytvořit databázi a obnovit do ní zálohu staršího Drupalu
připojíme se do kontejneru s MySQL: docker exec -it <nazev kontejneru s instalací MariaDB> bash
1# vytvorit DB 'old_drupal_7'
2mysql -u root -p -e "CREATE DATABASE old_drupal_7;"
3
4# obnovit backup
5# je namountovaný pomocí docker compose do /d7/database.sql
6mysql -u root -p old_drupal_7 < /d7/database.sql
OK, hotovo. Teď už stačí následovat instrukce Migrate modulu. Průvodce chce kromě přístupu k DB Drupalu 7 (v tomto případě “old_drupal_7”) přístup k souborům, resp. Document root for public files a Document root for private files. Cesty jsou následující:
/d7/sites/default/files
- public files
/d7/sites/default/files/backup_migrate
- private files