Zkušenosti s upgradem Drupalu 5 na Drupal 6

Drupal 6 je k dispozici již několik měsíců a vzhledem k dostupnosti všech hlavních modulů (CCK, Views…) pro jeho šestou verzi jsem usoudil, že je nejvyšší čas začít s upgradem těch mých webů, které ještě pohání Drupal 5. Tímto článkem bych se tedy chtěl rozdělit o své zkušenosti z migrace a nabídnout jakýsi jízdní řád, který by vám přechod ušetřil.

Reklama

Před tím, než převedu na Drupal 6 českou podobu Maxiorla, vyzkoušel jsem si to na menší anglické mutaci www.maxiorel.com. Používá prakticky stejné moduly jako Maxiorel.cz, jen design je mírně upravený. Drupal 6 samozřejmě již delší dobu používám, běží na něm například www.anastacia.cz a od počátku jej využívají www.backuphowto.info a www.photohowto.info. Maxiorel.com však představoval první větší web, kde jsem si migraci na Drupal 6 vyzkoušel na ostro a za provozu.

Upgrade Status a dostupnost modulů

Předtím, než vůbec začnete o upgradu z Drupalu 5 na Drupal 6 uvažovat, doporučuji instalaci modulu Upgrade Status, se kterým snadno zjistíte, zda jsou aktuálně použité moduly již dostupné ve verzích pro novější vývojovou řadu Drupalu.

[inline:upgradestatus.png]

Kliknutím na jednotlivé odkazy/moduly si zobrazíte jejich webovou stránku na Drupal.org. Upgrade Status také rozlišuje, zda je nová verze modulu k dispozici ve finální nebo vývojové podobě. Jak můžete vidět z obrázku, ne všechny moduly byly v době upgradu pro Drupal 6 dostupné. Protože nešlo o kritické moduly, na kterých by web stál, jednoduše jsem je oželel.

Zálohujte

Předtím, než se pustíte do upgradu, je třeba provést zálohu. To ostatně platí i pro instalaci jakýchkoli bezpečnostních aktualizací. Pro hosting většiny svých drupalovských webů používám HostGator, který má mimochodem nově zpracovaný skin pro cPanel, díky kterému je obsluha webhostingu naprosto jednoduchá záležitost. Je zde i zálohovací nástroj pro vybranou databázi (nechtěl jsem dělat kompletní zálohu všech webů). Soubory jsem pro jednoduchost stáhl přes FTP.

Příprava nových souborů

Máte-li pomalejší FTP upload, připravte si celou adresářovou strukturu nové instalace Drupalu u sebe na disku (pak ji zabalíte, nahrajete jeden soubor a ten přes administrační panel na webu rozbalíte). Je to dobré také pro přehlednost. Všechny nové verze modulů pak překopírujte do složky /sites/all/modules. Soubor /sites/default/default.settings.php překopírujte na settings.php ve stejné složce, otevřete jej v editoru a upravte připojovací řetězec k databázi. Tento řádek můžete překopírovat ze stávající instalace Drupalu.

Kopie souborů na web

Nyní se na svém webu přihlaste jako administrátor a web přepněte do režimu Offline. Je důležité, abyste se přihlásili skutečně jako administrátor (uživatel s ID=1), nikoli jen jako člověk, který má oprávnění administrátora. Odstraňte soubory staré instalace Drupalu. Dejte pozor na to, abyste nesmazali složku se soubory (většinou /files) a svoje témata (měla by být v /sites/all/themes, pokud ne, pak je sem z /themes přesuňte). Vše ostatní by mělo být možné smazat. Poté sem překopírujte novou strukturu Drupalu.

Spuštění aktualizace databázové struktury

Hned, jakmile překopírujete data, zadejte do prohlížeče adresu svého webu následovanou update.php. V průvodci spusťte aktualizační proces. Pozor, nebuďte překvapeni, v Drupalu 6 je mírně odlišný od pětkové verze. Po jeho dokončení budou návštěvníci vidět informaci zadanou v nastavení Offline režimu. nakopírování nových souborů a spuštění update.php by tedy mělo být co nejrychlejší, proto jsem doporučoval nahrát jeden archiv, který na webu rychle rozbalíte.

Další fází je aktualizace šablony vzhledu. Ve složce s tématem je nutné vytvořit soubor themename.info, který obsahuje důležité informace pro definici tématu. Čtenáři druhého vydání mé knihy o Drupalu v ní najdou popis tohoto souboru, ostatní si jej mohou zkopírovat například z tématu Garland, které je součástí Drupalu 6, a přejmenovat a překopírovat jej a provést v něm potřebné úpravy tak, aby se soubor vztahoval k použitému tématu vzhledu. O něco lehčí to mají ti, kdo se spokojili pouze s nějakým standardním tématem. Drupalovské jsou součástí instalace, ta další lze stáhnout z Drupal.org v aktualizované verzi.

Možné problémy

Může se stát, že po doplnění souboru .info dojde k zobrazení několika chyb. Je to tím, že Drupal 6 v mnoha případech aktualizuje svoje API a je tedy upravit některé speciální funkce, které ve svém tématu používáte, případně upravit pouze soubor template.php. V mém případě byl problém s funkcí phptemplate_menu_item() - vyřešil jsem to jednoduše jejím odstraněním a použitím jiného způsobu vypsání menu v šabloně tématu. Nezapomeňte definovat regiony pro výpis bloků v souboru .info.

Na Maxiorel.com jsem dále řešil drobné problémy s modulem TinyMCE a zobrazením obrázků pomocí CCK ImageField. Protože nejde o stabilní verzi, nepřekopírovaly se data ze starší verze a v Drupalu 6 byly najednou všechny články bez obrázků na titulce. Po pár zásazích se mi vše podařilo opravit a web tak byl mimo provoz asi jen hodinku. Určitě by vše šlo zvládnout mnohem rychleji, ale přiznávám, že oprava ImageField mi dala pěkně zabrat.

Jak jste na tom vy? Používáte Drupal 6? Pokud ano, tak stavíte na něm web od začátku, nebo jste už provedli upgrade ze starší verze?

Tagy: 

Reklama

Komentáře

Já jsem si myslel, že na titulce používáte k zobrazení obrázků k článkům modul Taxonomy images. V čem je CCK ImageField v tomto použití lepší?

Taxonomy images je k tomu, aby ke článku přiřadil nějaký obrázek v závislosti na kategorii, do které tento článek spadá.
CCK ImageField mi umožňuje ke každému článku připojit libovolně jiný obrázek - na Maxiorel.com to využívám například tak, že jako ikonku článku dám některý ze screenshotů programu, o kterém píšu.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

V čem je pro Vás Drupal6 výhodnější než Drupal5? S Drupalem 6 jsem se zabýval asi půl roku, udělal na něm pár webů, ale bohužel chyběly jak hlavní tak minoritní moduly. Celkově jsem nenašel žádnou výhodu kromě drag and drop přesunování menu.

Jednou z nevýhod D6, kterou se mi nepodalo předělat bylo při zakládání příspěvku pole pro ukládání do menu hned pod nadpisem, nad hlavním textem článku. Detail, ale otravný.

Do dnes nevidím u mnoha modulů verze pro D6.

A už se připravuje D7, nevím zda má smysl takhle krátký cyklus vydávání verzí...

Jednak ze samotného principu, že nová verze se snadněji udržuje a nechci mezi svými weby mít různé verze Drupalu. Ale Drupal 6 nabízí přátelštější rozhraní, podporu Views2 s možností komplikovanějších pohledů, lepší kešování (není pro to nutné instalovat doplňkové moduly).
S moduly je to horší, ostatně proto jsem nepřešel na Drupal 6 hned. Rychlé vydávání nových verzí Drupalu není asi až takový problém, spíš by se někdo měl zamyslet nad zpětnou kompatibilitou.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Ja osobne som skúšal upgradovať podľa tohto návodu a jediným výsledkom bola hromada chybových hlásení typu

Warning: Unknown column 'serialized' in 'field list' query: SELECT data, created, headers, expire, serialized FROM cache WHERE cid = 'variables' in C:\VertrigoServ\www\includes\database.mysql.inc on line 128

Warning: Unknown column 'serialized' in 'field list' query: UPDATE cache SET data = 'a:148:{s:13:\"filter_html_1\";i:1;s:18:\"node_options_forum\";a:1:{i:0;s:6:\"status\";}s:17:\"menu_primary_menu\";i:2;s:19:\"menu_secondary_menu\";i:2;s:15:\"install_profile\";s:7:\"default\";s:17:\"node_options_page\";a:1:{i:0;s:6:\"status\";}s:12:\"comment_page\";i:0;s:14:\"theme_settings\";a:1:{s:21:\"toggle_node_info_page\";b:0;}s:18:\"drupal_private_key\";s:64:\"51797013c3952be77398c3b50814af3c1df24dd4a4d4dfba65711e16aa6316a5\";s:9:\"cron_last\";i:1229762545;s:19:\"file_directory_temp\";s:15:\"c:\\windows\\temp\";s:19:\"file_directory_path\";s:5:\"files\";s:14:\"file_downloads\";s:1:\"1\";s:9:\"clean_url\";s:1:\"1\";s:21:\"date_default_timezone\";s:4:\"3600\"; in C:\VertrigoServ\www\includes\database.mysql.inc on line 128

Warning: Cannot modify header information - headers already sent by (output started at C:\VertrigoServ\www\includes\database.mysql.inc:128) in C:\VertrigoServ\www\includes\bootstrap.inc on line 610

Warning: Cannot modify header information - headers already sent by (output started at C:\VertrigoServ\www\includes\database.mysql.inc:128) in C:\VertrigoServ\www\includes\bootstrap.inc on line 611

Warning: Cannot modify header information - headers already sent by (output started at C:\VertrigoServ\www\includes\database.mysql.inc:128) in C:\VertrigoServ\www\includes\bootstrap.inc on line 612

Warning: Cannot modify header information - headers already sent by (output started at C:\VertrigoServ\www\includes\database.mysql.inc:128) in C:\VertrigoServ\www\includes\bootstrap.inc on line 613

Warning: Unknown column 'language' in 'where clause' query: SELECT src FROM url_alias WHERE dst = 'node' AND language IN('en', '') ORDER BY language DESC in C:\VertrigoServ\www\includes\database.mysql.inc on line 128

Vie mi niekto povedať čo sa stalo ?

Na 99 % je to nekompatibilní modul. Řešil jsem to stejné při upgradu Maxiorla na Drupal 6. Stačilo problémový modul smazat a spustit update.php - tentokrát již bez problémů.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

nevi´te jak se da drupal 6 "upgradovat" zpatky na verzi 5?

No, asi špatně nebo vůbec :-) Zkusil bych šestku očesat, co to jde, překopírovat na ni pětku a zjistit, co to udělá. Myslím ale, že to nebude fungovat, kvůli odlišnostem v databázi.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Přidat komentář