Ver Fonte

Lisa mustikas11: Drupal 7 -> Drupal 11 migratsioonikeskkond

- Dockerfile: drupal:11 + drush + migrate_plus/migrate_tools/migrate_upgrade
- docker-compose: port 8010, DB dr_mustikas11, D7 failid read-only bind-mount
- migrate_mustikas11.sh: korduvkäivitatav täismigratsioon (ka lõppsünk)
- LOEMIND.md: dokumentatsioon + tulemused (8277/8277 node) + edasiarendus
- Tailscale serve: https://ohmu.tail20e23.ts.net:8010/
ardo há 1 dia atrás
pai
commit
19e616c1cc

+ 13 - 0
third/drupal/mustikas11/Dockerfile

@@ -0,0 +1,13 @@
+# Drupal 11 image with Drush + migrate modules for D7 migration testing
+FROM drupal:11
+
+# Install Drush and migrate modules (baked in so container is reproducible)
+RUN composer require --no-interaction \
+    drush/drush \
+    drupal/migrate_plus \
+    drupal/migrate_tools \
+    drupal/migrate_upgrade \
+    && composer clear-cache
+
+# Make drush available on PATH
+ENV PATH="/opt/drupal/vendor/bin:${PATH}"

+ 102 - 0
third/drupal/mustikas11/LOEMIND.md

@@ -0,0 +1,102 @@
+# 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 <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, 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).

+ 42 - 0
third/drupal/mustikas11/docker-compose.yml

@@ -0,0 +1,42 @@
+version: "3.9"
+
+services:
+  drupal:
+    image: drupal_mustikas11:latest
+    container_name: drupal_mustikas11
+    build:
+      context: .
+      dockerfile: Dockerfile
+    ports:
+      - "127.0.0.1:8010:80"
+    volumes:
+      - modules:/opt/drupal/web/modules
+      - sites:/opt/drupal/web/sites
+      - theme:/opt/drupal/web/themes
+      - profile:/opt/drupal/web/profiles
+      - /backups/docker/drupal/mustikas11:/backups
+      - /etc/localtime:/etc/localtime
+      # D7 source files (read-only) for file migration
+      - /var/lib/docker/volumes/drupal_mustikas-html/_data/sites/default/files:/d7-files:ro
+    networks:
+      - ai_network
+    restart: unless-stopped
+
+volumes:
+  modules:
+    name: 'drupal_mustikas11-modules'
+    driver: local
+  sites:
+    name: 'drupal_mustikas11-sites'
+    driver: local
+  theme:
+    name: 'drupal_mustikas11-theme'
+    driver: local
+  profile:
+    name: 'drupal_mustikas11-profile'
+    driver: local
+
+networks:
+  ai_network:
+    external: true
+    name: main_ai_network

+ 83 - 0
third/drupal/mustikas11/migrate_mustikas11.sh

@@ -0,0 +1,83 @@
+#!/usr/bin/env bash
+# =============================================================================
+# mustikas Drupal 7 -> Drupal 11 migratsioon (ohmu dev)
+# =============================================================================
+# Jooksutab kogu migratsiooni algusest lõpuni. Käivita root õigustega:
+#   sudo bash migrate_mustikas11.sh
+#
+# NB! Töötab AINULT ohmu serveril. Production (hetzner) jääb puutumata.
+#     Andmebaas dr_mustikas on hetznerist sünkroonitud koopia (vt mustikas
+#     sync_from_hetzner.sh). Selle skripti jooksutamine EI muuda hetznerit.
+#
+# "Viimaste andmete ülekandmine" (lõppsünk):
+#   1. Jooksuta esmalt värske sünk hetznerist:
+#        sudo bash /opt/docker-compose/third/drupal/mustikas/sync_from_hetzner.sh
+#      (see värskendab ohmu dr_mustikas andmebaasi + D7 failid)
+#   2. Jooksuta see skript, et uus sisu D11-sse migreerida:
+#        sudo bash /opt/docker-compose/third/drupal/mustikas11/migrate_mustikas11.sh
+# =============================================================================
+set -euo pipefail
+
+C="drupal_mustikas11"
+DRUSH="php -d memory_limit=1024M /opt/drupal/vendor/drush/drush/drush.php"
+
+echo "=== $(date): Alustan D7->D11 migratsiooni ==="
+
+# ── 0. Pre-migratsiooni parandused (source DB andmevead) ──
+echo "[0/5] Pre-migratsiooni parandused (source DB) ..."
+docker exec "$C" sh -c "cd /opt/drupal && $DRUSH scr /tmp/fix_er_sort.php"
+docker exec "$C" sh -c "cd /opt/drupal && $DRUSH scr /tmp/fix_text_maxlength.php"
+echo "  parandused tehtud."
+
+# ── 1. Migratsiooni konfiguratsiooni loomine ──
+echo "[1/5] Migratsiooni konfiguratsioon ..."
+docker exec "$C" sh -c "cd /opt/drupal && $DRUSH migrate-upgrade --configure-only \
+  --legacy-db-url=mysql://root:ai_root_pass_2026@mariadb/dr_mustikas \
+  --legacy-root=https://mustikas.maastikuarhitekt.ee -y"
+echo "  konfiguratsioon loodud."
+
+# ── 2. Esmane import (dependencies) ──
+echo "[2/5] Esmane import (group migrate_drupal_7) ..."
+docker exec "$C" sh -c "cd /opt/drupal && $DRUSH migrate:import \
+  --group=migrate_drupal_7 --continue-on-failure -y" || true
+
+# ── 3. Puuduvad custom field storage'id ──
+echo "[3/5] Custom field storage'id ..."
+docker exec "$C" sh -c "cd /opt/drupal && $DRUSH scr /tmp/fix_fields.php"
+docker exec "$C" sh -c "cd /opt/drupal && $DRUSH scr /tmp/fix_fields2.php"
+
+# ── 4. Sisumigratsioonid (rollback + re-import, et parandused kehtiksid) ──
+echo "[4/5] Sisu migratsioon ..."
+for m in \
+  upgrade_d7_field \
+  upgrade_d7_field_instance \
+  upgrade_d7_node_complete_kanne \
+  upgrade_d7_node_complete_emal_liige \
+  upgrade_d7_node_complete_projekt \
+  upgrade_d7_node_complete_book \
+  upgrade_d7_node_complete_page \
+  upgrade_d7_node_complete_php \
+  upgrade_d7_node_complete_filedepot_folder \
+  upgrade_d7_url_alias \
+  upgrade_d7_user \
+  upgrade_d7_file \
+  upgrade_d7_menu \
+  upgrade_d7_menu_links; do
+  docker exec "$C" sh -c "cd /opt/drupal && $DRUSH migrate:rollback $m -y" || true
+done
+docker exec "$C" sh -c "cd /opt/drupal && $DRUSH scr /tmp/fix_fields.php"
+docker exec "$C" sh -c "cd /opt/drupal && $DRUSH scr /tmp/fix_fields2.php"
+docker exec "$C" sh -c "cd /opt/drupal && $DRUSH migrate:import \
+  --group=migrate_drupal_7 --continue-on-failure -y" || true
+
+# ── 5. Puhver + kokkuvõte ──
+echo "[5/5] Puhvri tühjendamine + kokkuvõte ..."
+docker exec "$C" sh -c "cd /opt/drupal && $DRUSH cache:rebuild" || true
+
+echo ""
+echo "=== $(date): Migratsioon valmis ==="
+echo "Kontroll:"
+echo "  docker exec mariadb mariadb -u root -pai_root_pass_2026 -N -e \\"
+echo "    'SELECT COUNT(*) FROM dr_mustikas11.node_field_data;'"
+echo "  (peaks olema 8277)"
+echo "  https://ohmu.tail20e23.ts.net:8010/"