LOEMIND.md 5.5 KB

Drupal mustikas11 – D7 → D11 migratsioon (ohmu dev)

Kataloog: /opt/docker-compose/third/drupal/mustikas11/

Mis see on

Drupal 7 (mustikas.maastikuarhitekt.ee) → Drupal 11 migratsiooni testimiskeskkond arendusserveril ohmu. Production (hetzner) jääb täiesti puutumata — migratsioon loeb ainult ohmu-l olevat sünkroonitud dr_mustikas koopiat.

Teenus

Konteiner Pilt Port URL
drupal_mustikas11 drupal_mustikas11:latest (põhineb drupal:11) 127.0.0.1:8010 → 80 https://ohmu.tail20e23.ts.net:8010/
  • Andmebaas: dr_mustikas11 (ohmu mariadb, utf8mb4_general_ci)
  • Source DB (D7 koopia): dr_mustikas (ohmu mariadb)
  • D7 failid: bind-mount /var/lib/docker/volumes/drupal_mustikas-html/_data/sites/default/files/d7-files (read-only)
  • Admin: admin / AdminPass2026!, meil ardokubjas@gmail.com (VAJA VAHTADA tootmises)
  • SMTP: mail.odamus.com:587 (TLS, bounce@odamus.com) — e-kirjad töötavad
  • system.site.mail = bounce@odamus.com (NB! peab ühtima SMTP auth kasutajaga, muidu SMTP server lükkab info@maastikuarhitekt.ee saatja tagasi)
  • Reverse proxy: reverse_proxy = TRUE settings.php-s (Tailscale serve HTTPS jaoks)

Pilt (Dockerfile)

Põhineb drupal:11 + paigaldatud:

  • drush/drush
  • drupal/migrate_plus
  • drupal/migrate_tools
  • drupal/migrate_upgrade
  • drupal/smtp
  • drupal/views_aggregator
  • drupal/views_data_export

Ehitamine: docker compose build

Vaated (D7 analoggid)

Path Vaade Sisend
/liikmed, /liikmed/nimekiri liikmed emal_liige nimekiri (nimi, e-mail, isikukood)
/projektid projektid projektide nimekiri
/kanded/liikmemaksud kanded (kande_tyyp=6) kannete tabel
/kanded/projektid kanded (kande_tyyp=8) kannete tabel
/kanded/tegevuskulud kanded (kande_tyyp=29) kannete tabel
/kanded/*/saldod kanded + views_aggregator SUM summeeritud saldod
/kanded/koik-kanded kanded kõik kanded
/synnipaevad, /liikmed/synnipaevad synnipaevad emal_liige nimekiri
/docs dokumendid filedepot_folder nimekiri
/liikmed/eksport liikmed data_export CSV (nimed, isikukoodid, e-mailid)
/contact contact moodul kontaktivorm (feedback)

Custom moodul mustikas_export parandab views_data_export rea renderdamist D11-s (fields row plugin tagastab #theme render array, mis ei serialiseeru CSV-ks). Asub custom_modules/mustikas_export/ ja tuleb image'i sisse kopeerida.

Migratsiooni jooksutamine

# Täismigratsioon (ka lõppsünk):
sudo bash /opt/docker-compose/third/drupal/mustikas11/migrate_mustikas11.sh

Drush otse (NB! mälu limiit):

docker exec drupal_mustikas11 sh -c "cd /opt/drupal && php -d memory_limit=1024M /opt/drupal/vendor/drush/drush/drush.php <cmd>"

Migratsiooni tulemus (seis 2026-08-26)

Sisutüüp D7 D11 Staatus
kanne 7792 7792 100% ✓
emal_liige 153 153 100% ✓
projekt 174 174 100% ✓
filedepot_folder 141 141 100% ✓
book 9 9 100% ✓
page 5 5 100% ✓
php 3 3 100% ✓
Kokku node 8277 8277 100% ✓
kasutajad 153 153
taxonomy terminid 108 108
failid 2675 854 (public) osaline (private jäi)
URL aliased 11147 ~11000

Teadaolevad probleemid / edasiarendus

  1. body "plain text" väli – D7 body on konfigureeritud plain_text-iga, migrate ei too seda üle (teadaolev Drupal issue). Mõjutab book/page/article/phpi sisu teksti.
  2. Custom väljad (field_nimi, field_isikukood, field_emal_kasutaja_oigused, field_sunnipaev) – D7 custom moodulitest (name, est_id_code_field, rolereference, birthdays_date). Vajavad kohandatud migratsioonipluginaid. Praegu loon neile lihtsustatud storaged (string/datetime) — andmed ei tule automaatselt üle, aga emal_liige node'id ise migreeruvad.
  3. Panels / Rules / Features / Views – EI migreeru automaatselt. Vajavad käsitsi uuesti ehitamist (sama nagu kõik D7→D8+ migratsioonid).
  4. Teemad (metro, rainbow) – PHPTemplate → Twig täisümberkirjutus. Praegu kasutusel vaikimisi Olivero.
  5. Failid private – private files (filedepot, backup_migrate) ei migreeru public files stream'i.
  6. Parool & turve – admin parool on ajutine (AdminPass2026!), SMTP on seadistatud, SSL on Tailscale serve kaudu.

Eeltingimused enne tootmist

  • Kõik custom moodulid (cpn, est_id_code jne) portida D11 jaoks
  • Teemad ümber kirjutada (Twig)
  • Panels/Views/Rules uuesti ehitada
  • i18n/entity_translation täiendav migratsioon
  • Turvaseaded (paroolid, SMTP, SSL)

Lõppsünk (viimaste andmete ülekandmine)

  1. Värskenda D7 koopia hetznerist: sudo bash /opt/docker-compose/third/drupal/mustikas/sync_from_hetzner.sh
  2. Jooksuta täismigratsioon: sudo bash /opt/docker-compose/third/drupal/mustikas11/migrate_mustikas11.sh
  3. Kui kõik ok → vaheta prod DNS / traefik uuele saidile.

Abiskriptid (konteineris /tmp/)

  • fix_fields.php – loob puuduvad custom field storage'id (string/datetime)
  • fix_fields2.php – loob datetime_range → daterange storage'id
  • fix_er_sort.php – parandab entityreference sort puuduva võtme (source DB)
  • fix_text_maxlength.php – tõstab liiga lühikese text välja max_length=255 (source DB)
  • del_kirjeldus.php – kustutab field_kirjeldus config'i (vajadusel)

Need on ka /tmp/opencode/ kohalikus Dropboxis (kust sai scp).