Případová studie

Migrace portálu z Drupalu 7 na Drupal 11

Odborný portál o nanotechnologiích běží od roku 2015. Za tu dobu přestaly dostávat bezpečnostní opravy obě vrstvy, na kterých stál: Drupal 7 skončil bez podpory v lednu 2025, PHP 5.6 už na konci roku 2018. Web přitom fungoval dál — a právě proto si toho nikdo nevšiml.

Po migraci na Drupal 11 a PHP 8.4 zůstalo funkčních všech 199 adres a nechybí jediný soubor.

Náhled portálu nanokompozity.cz po migraci na Drupal 11
Otevřít nanokompozity.cz

Co bylo v sázce

Bezpečnost.

Software, který přestal dostávat bezpečnostní opravy, není jen starý. Chyby, které se v něm najdou, se veřejně popíšou — a nikdo je neopraví.

Adresy.

Na portál vedou odkazy z vyhledávačů i z cizích webů. Kdyby se po migraci změnily adresy článků, přišel by o pozice, které si deset let budoval, a návštěvník by místo textu našel chybovou stránku.

Obsah.

Deset let redakční práce: 121 obsahových stránek, 259 souborů a obrázků, vazby na autory a rubriky. Migrace, která něco z toho ztratí, se nedá vzít zpět.

Provoz.

Původní web musel fungovat až do chvíle přepnutí. Odstavit ho na týden nepřicházelo v úvahu.

Hosting bez příkazové řádky.

Na cílovém serveru nejde použít Composer, Drush ani vlastní příkazy. Celá migrace se proto musela připravit a vyzkoušet jinde a na hosting nasadit až hotová.

Jak to proběhlo

  1. Příprava

    Nejdřív jsem si postavil přesnou kopii cílového serveru u sebe — vývojové prostředí, ve kterém se dá zkoušet cokoli, aniž by se to dotklo běžícího webu. Na ní čistá instalace Drupalu 11 na PHP 8.4 a od začátku verzování, aby šel každý krok vrátit.

  2. Převod obsahu

    Přenesly se všechny stránky, soubory, rubriky, uživatelé i adresy. Zásadní bylo zachovat číselné identifikátory stránek — díky tomu fungují i staré odkazy ve tvaru /node/85, na které se za deset let dá odkazovat z míst, o kterých nikdo neví.

    Při té příležitosti se opravily i zbytky kódu, které se do obsahu dostaly ještě za Drupalu 7, a autorské kontakty se z volného textu převedly do samostatných polí, se kterými se dá dál pracovat.

  3. Vzhled

    Šablona z jádra Drupalu, všechny úpravy ve vlastní vrstvě vedle ní. Znamená to, že budoucí aktualizace šablony provedené změny nepřepíšou — a to je u webu, který má vydržet dalších deset let, důležitější než jakýkoli detail vzhledu.

    Ladění probíhalo v mnoha kolech, pokaždé s měřením na čtyřech šířkách obrazovky, od telefonu po velký monitor.

  4. Úklid obsahu

    Migrace je vhodná chvíle sáhnout i na obsah. Prázdné články se skryly místo smazání, aby je redakce mohla kdykoli doplnit. Třiašedesát odstavců s ručně psanými odrážkami se převedlo na skutečné seznamy — vypadají stejně, ale rozumí jim odečítače i vyhledávače. E-mailové šablony se přeložily do češtiny a kontaktní formulář dostal ochranu proti robotům.

  5. Nasazení

    Bez příkazové řádky na serveru, jen přes webové rozhraní. Po nasazení jsem prošel všech 199 adres jednu po druhé a u každé zkontroloval, že vede na tutéž stránku, že se text nerozpadl, že fungují odkazy a že se načetly obrázky. Ne vzorek — všechny. Pak přepnutí domény, přenos e-mailové schránky s téměř třemi gigabajty pošty, nastavení ověření odesílatele a certifikátu.

    Původní web zůstal zálohovaný jako pojistka pro případ zpětné kontroly.

Výsledek

Portál běží na Drupalu 11 a PHP 8.4, tedy na verzích, které dostávají bezpečnostní opravy. Všech 199 adres zůstalo funkčních i s obsahem, odkazy a obrázky. E-mailová schránka se přenesla bez ztráty jediné zprávy. Výpadek ostrého webu se počítal na minuty.

Celý postup i všechna rozhodnutí jsou zdokumentované, takže se web dá udržovat i bez mého vysvětlování.

Čísla

121převedených stránek
259převedených souborů
199 z 199zkontrolovaných adres
~2,8 GBpřenesené pošty
řádově minutyvýpadek ostrého webu
0ztracených dat

Běží váš web na verzi bez podpory?

Většina majitelů webů to neví, protože se to nijak neprojeví. Web funguje, objednávky chodí, všechno vypadá v pořádku. Zastaralá verze se projeví až ve chvíli, kdy je pozdě — únikem dat z formulářů, cizím obsahem, který se na webu objeví, nebo tím, že web odstaví hosting.

Drupal 7 skončil bez podpory v lednu 2025 a weby na něm dodnes běží. Totéž platí pro starší verze PHP, WordPressu a jeho pluginů.

Zjistit, na čem váš web stojí, je práce na pár minut. Pošlete mi adresu a napíšu vám, jaké verze pod ním běží, co z toho už nedostává bezpečnostní opravy a co s tím. Zdarma a nezávazně — stejně jako každá úvodní analýza.

Začněme nezávazně

Pošlete mi adresu webu. Zbytek zjistím sám.

Prověřit můj web (zdarma)