Kataloog: /opt/docker-compose/third/drupal/mustikas11/
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.
| 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/ |
dr_mustikas11 (ohmu mariadb, utf8mb4_general_ci)dr_mustikas (ohmu mariadb)/var/lib/docker/volumes/drupal_mustikas-html/_data/sites/default/files → /d7-files (read-only)admin / AdminPass2026!, meil ardokubjas@gmail.com (VAJA VAHTADA tootmises)mail.odamus.com:587 (TLS, bounce@odamus.com) — e-kirjad töötavadsystem.site.mail = bounce@odamus.com (NB! peab ühtima SMTP auth kasutajaga, muidu SMTP server lükkab info@maastikuarhitekt.ee saatja tagasi)reverse_proxy = TRUE settings.php-s (Tailscale serve HTTPS jaoks)et (vaikimisi, nagu D7) + en. system.site.default_langcode = et.
NB! et-alias'd (/liikmed/tanel-breede) töötavad ilma prefiksita ainult siis,
kui default keel on et. Kui default oleks en, vajaksid nad /et/ prefiksit.Põhineb drupal:11 + paigaldatud:
drush/drushdrupal/migrate_plusdrupal/migrate_toolsdrupal/migrate_upgradedrupal/smtpdrupal/views_aggregatordrupal/views_data_exportEhitamine: docker compose build
| 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 (täispika hierarhilise teega) |
/filedepot |
dokumendid (page_filedepot) |
sama nimekiri, täispika teega |
/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.
# 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>"
| 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 | ✓ |
Juurdekontroll on viidud D7-ga vastavusse:
access content (View published content).
Selle tulemusena:
/ (Avaleht, node/5) -> 403 "Ligipääs keelatud" + juhendtekst + sisselogimisplokk külgribal/liikmed, /projektid, /kanded/*, /docs, /filedepot, /synnipaevad, kõik /node/* -> 403/contact -> 200 (kõigile)/user/login, /user/password -> 200; /user/register -> 403 (admin_only)standard.front_page) peamenüüst
(hook_menu_links_discovered_alter mustikas_export moodulis).anonymous_front_instruction), nähtav ainult anonüümsele
JA ainult avalehel (request_path /node/5), content regionis
(D7 node/3 PHP drupal_is_front_page() && !$user->uid analogg).
NB! request_path peab sisaldama nii <front> kui /node/5 ja /, sest
avalehele anonüümse juurdepääsu (403) korral on current path kas / või /node/5.
metro_user_login blokk piiratud ainult anonüümsele.tools_sidebar menüü peidetud anonüümsele.metro_block_4-7 (telefon, e-mail, lahtiolekuajad,
"Kirjuta meile" -> /contact) paigutatud footer_top regioni.Skriptid (kordustäitmiseks):
revoke_anon_access.php – eemaldab anonüümselt access contentadd_instruction_block.php – loob juhendteksti blokirestrict_instruction_front.php – piirab juhendteksti bloki ainult avalehelerestrict_login_block.php – metro_user_login anonüümselerestore_footer.php – footer blokid footer_toprestrict_tools_sidebar.php – tools_sidebar peidetud anonüümseleRollide kaardistus D7 -> D11 on 1:1 (kasutajate jaotus säilis):
| D7 roll | D11 roll | Õigused D11-s |
|---|---|---|
| anonymous | anonymous | contact form + filtered_html (access content EEMALDATUD) |
| authenticated | authenticated | access content, view files, comments, contact form |
| administrator | administrator | is_admin (kõik) |
| EMAL liikmemaksud | emal_liikmemaksud | contact form |
| EMAL juhatuse liige | emal_juhatuse_liige | access filedepot, contact form |
| EMAL süsteemi administraator | emal_susteemi_administraator | 41+ õigust (admin pages, users, taxonomy, content create/edit/delete) + access filedepot + administer filedepot + contact form |
| EMAL liige | emal_liige | contact form |
| EMAL projektid | emal_projektid | contact form |
| EMAL raamatupidamine | emal_raamatupidamine | contact form |
| filedepot | filedepot | access filedepot + administer filedepot |
| EMAL kutsekomisjon | emal_kutsekomisjon | access filedepot |
| Leht | Juurdepääs |
|---|---|
/liikmed, /projektid, /docs |
access content (kõik autenditud) |
/filedepot |
access filedepot õigus |
/kanded/liikmemaksud, /kanded/projektid, /kanded/tegevuskulud |
rollid admin, juhatus, süsteemi admin VÕI projekti juurdepääsu väljal olev kasutaja |
/kanded/liikmemaksud/saldod |
rollid admin, juhatus, raamatupidamine, süsteemi admin |
/kanded/projektid/saldod |
rollid admin, juhatus, raamatupidamine, süsteemi admin |
/kanded/koik-kanded |
access content (kõik autenditud) |
/liikmed/eksport |
rollid admin, süsteemi admin |
/liikmed/synnipaevad |
access content |
access filedepot, administer filedepot (mustikas_export.permissions.yml)mustikas_kanded_access + route access check
mustikas_export.kanded_access (src/Access/KandedAccessCheck.php)field_projekt_juurdepaas (projekti juurdepääsu õigused) D7-st D11-sse
(11 rida, projektid 13550/13563/13565/13791/13885/13906)/filedepot vaade piiratud access filedepot õigusegaaccess filedepot õigust (mitte ainult sisselogimist)Skriptid (kordustäitmiseks):
migrate_projekt_juurdepaas.php – projekti juurdepääsu andmete migratsioongrant_role_perms.php – rollipõhiste õiguste andmineapply_kanded_access4.php – kanded vaate access-ide seadistaminerestrict_export.php – CSV eksporti piiraminerestrict_filedepot.php – filedepot vaate piiraminefield_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.AdminPass2026!), SMTP on seadistatud, SSL on Tailscale serve kaudu.sudo bash /opt/docker-compose/third/drupal/mustikas/sync_from_hetzner.shsudo bash /opt/docker-compose/third/drupal/mustikas11/migrate_mustikas11.shfix_fields.php – loob puuduvad custom field storage'id (string/datetime)fix_fields2.php – loob datetime_range → daterange storage'idfix_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)migrate_filedepot.php – migreerib filedepot failid (file_managed + node__filedepot_folder_file)migrate_filedepot_hierarchy.php – loob field_folder_parent välja ja täidab D7 filedepot_categories.pid järgi kaustade hierarhiacustom_modules/mustikas_export/src/Plugin/views/field/FolderPath.php – Views väli "Kausta täispikk tee" (filedepot_folder_path)Need on ka /tmp/opencode/ kohalikus Dropboxis (kust sai scp).