# 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!` (VAJA VAHTADA tootmises) ## Pilt (Dockerfile) Põhineb `drupal:11` + paigaldatud: - `drush/drush` - `drupal/migrate_plus` - `drupal/migrate_tools` - `drupal/migrate_upgrade` Ehitamine: `docker compose build` ## Migratsiooni jooksutamine ```bash # Täismigratsioon (ka lõppsünk): sudo bash /opt/docker-compose/third/drupal/mustikas11/migrate_mustikas11.sh ``` Drush otse (NB! mälu limiit): ```bash docker exec drupal_mustikas11 sh -c "cd /opt/drupal && php -d memory_limit=1024M /opt/drupal/vendor/drush/drush/drush.php " ``` ## 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, SMTP/keys jne tuleb seadistada. ## 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).