Upgrade Drupalu verze 5 na 6

Příprava

  1. Zkontrolujte, zda Váš webhosting splňuje minimální požadavky.
  2. Zjistěte si, zda jsou k dispozici všechny Vámi používané moduly v požadované verzi (nejsnadněji instalací modulu Upgrade status).
    • Mohou nastat tyto situace:
      1. používaný modul může být již součástí jádra nové verze Drupalu
        • např. modul Update status (před upgradem je nutné jej odinstalovat)
      2. používaný modul může být již součástí jiného modulu
      3. některé moduly zatím nejsou kompatibilní s novou verzí Drupalu
        • např. modul Upgrade status (před upgradem je nutné jej odinstalovat)
  3. Stáhněte si nové verze modulů, které chcete po upgradu nadále používat, případně si převeďte vlastní moduly do nové verze.
    • Podívejte se na stránky modulů, zda tam nejsou důležité informace pro upgrade, případně si přečtěte instrukce v textových souborech modulů:
      • Image 5.x-1.9
        • u této verze je nutné před upgradem na Drupal 6.9 s Image 6.x-1.0-alpha4 ručně spustit níže uvedené SQL příkazy:
          CREATE TABLE image (`nid` INTEGER UNSIGNED NOT NULL, 
          `fid` INTEGER UNSIGNED NOT NULL, `image_size` VARCHAR(32) NOT NULL, 
          PRIMARY KEY (`nid`, `image_size`), INDEX image_fid(`fid`)) 
          /*!40100 DEFAULT CHARACTER SET utf8 */;
          INSERT INTO image SELECT DISTINCT f.nid, f.fid, f.filename
          FROM files f INNER JOIN node n ON f.nid = n.nid
          WHERE n.type='image' AND f.filename IN ('_original', 'thumbnail', 'preview')
          DELETE FROM file_revisions
          WHERE EXISTS (SELECT * FROM image WHERE image.fid = file_revisions.fid)
        • po převodu na Drupal 6.9 s Image 6.x-1.0-alpha4 tímto způsobem funguje hromadný image import obrázků (zobrazuje se výběr galerie), ale není možné vytvářet typ obsahu Image
      • Image 5.x-2.0-alpha3
        • po převodu na Drupal 6.9 s Image 6.x-1.0-alpha4 nefunguje hromadný image import (není vidět výběr galerie), ani vytváření typu obsahu Image
      • Image 5.x-2.x-dev (2009-Jan-23)
        • po převodu na Drupal 6.9 s Image 6.x-1.0-alpha4 nefunguje hromadný image import (není vidět výběr galerie), ani vytváření typu obsahu Image
      • Custom filter 5.x-1.2
        • po převodu na Drupal 6.9 s Custom filter 6.x-1.x-dev nefungují stávající a není možné importovat nové filtry
        • doporučuji odinstalovat a po upgradu na verzi 6 naistalovat, pak vše funguje
  4. Stáhněte nebo si převeďte používané téma do nové verze.
  5. Stáhněte si novou verzi Drupalu a přečtěte si instrukce v souboru UPGRADE.txt.

Převod

Celý postup nejprve vyzkoušejte nejlépe na kopii webu!

  1. Přihlaste se jako administrátor (uživatel s ID=1). Pokud se jako uživatel s ID=1 přihlásit nemůžete, nezavírejte prohlížeč do ukončení upgradu!
  2. Zkontrolujte logy, hlášení stavu a dostupné aktualizace – web by měl být "aktuální".
  3. Přepněte web do off-line módu (např. z logu zjistěte zda není nějaký uživatel přihlášen – neprovádí úpravy).
  4. Zazálohujte si existující web (soubory i databázi).
    • Určitě se Vám vyplatí zálohu souborů rozbalit a zkontrolovat, zda je úplná (např. pomocí Krusaderu a nástroje Synchronizovat adresáře). Exportu databáze budete muset věřit :)
  5. V admin/settings/performance vypněte optimalizaci přenosu dat CSS a JavaScript
  6. Přepněte téma na Garland (Bluemarine).
  7. Vytiskněte si aktuální stav modulů! enlightened
  8. Vypněte moduly, které nejsou součástí jádra (neodinstalovávejte je, ani je nemažte jinak přijdete o jejich nastavení).
  9. Pokud je to možné, odinstalujte všechny moduly, které ještě nejsou k dispozici v nové verzi, které jsou již integrovány do jádra Drupalu nebo jiných modulů, nebo ty které již dále nechcete používat:
    • update status
  10. Na webu smažte všechny soubory (databázi nemažte) kromě:
    • adresáře files (neměňte jeho umístění)
  11. Na web nakopírujte:
    • novou verzi Drupalu
      • vytvořte kopii souboru /sites/default/default.settings.php jako soubor s názvem /sites/default/settings.php
    • pro českou lokalizace Drupalu rozbalte archiv Czech translation do adresáře webu
    • používané moduly v nové verzi
    • novou nebo převedenou verzi tématu vzhledu
    • (na localhostu je potřeba nahraným souborům nastavit správné vlastníky a oprávnění)
  12. Porovnejte aktuální soubory se zálohovanými a upravte potřebné sekce:
    • .htaccess
    • robts.txt
    • (favicon.ico)
    • sites/default/settings.php
  13. Spusťte update.php skript (adresa-vaseho-webu/update.php).
    • pokud skript není možné spustit:
      • upravte v souboru settings.php proměnnou: $update_free_access = FALSE;
      • na: $update_free_access = TRUE;
      • spusťte update.php
      • po spuštění skriptu vraťte proměnnou do původního stavu
  14. Zkontrolujte hlášení stavu, logy, nastavení a funkčnost jádra webu.
  15. Povolte požadované moduly a spusťte opět update.php skript.
  16. Zkontrolujte oprávnění uživatelů.
  17. Zvolte požadované téma vzhledu.
  18. V admin/settings/performance můžete zapnout optimalizaci přenosu dat CSS a JavaScript
  19. Pro kompletní import lokalizace je vhodné odstranit a znovu přidat zvolený jazyk např. Czech.
  20. Z bezpečnostních důvodů můžete u všech souborů (kořen webu, modules, sites, themes atd.), které mají celý název psán velkými písmeny zakázat pomocí oprávnění k souboru jejich zobrazení přes webový prohlížeč.
  21. Volitelná nastavení:
    • naimportujte češtinu Drupalu (viz příloha lokalizace) a používaných modulů
    • přeindexace vyhledávání
    • kontrola aliasů (dávkové vygenerování aliasů u obsahu, který ještě žádný alias nemá)
  22. Zkontrolujte hlášení stavu, logy, nastavení a funkčnost celého webu.
  23. Přepněte web do on-line módu.
  24. Jestliže na testovací kopii webu proběhlo vše úspěšně, můžete výsledek zkopírovat na "ostrý" web (případně celý postup opakovat na "ostrém" webu).

Pro migraci dat je možné použít i placené služby např.:

  • cms2cms.com – automatická migrace dat mezi CMS systémy

Úspěšné převody Drupalu 5 na 6

  1. "problém" s modulem Image viz výše: Drupal 5.15 -> 6.9, Image 1.9 -> 1.0-alpha4, Comment Mail 1.1 -> 1.0-beta1, Countdown 1.1 -> 1.0, FCKeditor 2.1 -> 1.3-rc7, Pathauto 2.3 -> 1.0, Poormanscron 1.1 -> 1.0, Taxonomy breadcrumb 1.4 -> 1.0, Token 1.11 -> 1.11, SWF tools 2.2 -> 1.3, Captcha 3.2 -> 1.0-rc2
  2. Drupal 5.16 -> 6.10, Comment Mail 1.1 -> 1.0-beta1, FCKeditor 2.1 -> 1.3-rc7, IMCE 1.2 -> 1.2, Pathauto 2.3 -> 1.1, Site map 1.2 -> 1.0, Taxonomy breadcrumb 1.4 -> 1.0, Token 1.11 -> 1.11, Captcha 3.2 -> 1.0-rc2

Prevent file not found errors
After you upgrade your site you should check your site for bad links, to prevent the file not found errors. The http error number for these pages is 404. You can use a simple tool to check the links on your site. You will see errors in you Drupal Administrator logs as well as your web server error logs. Perform the following commands through the administrator menu on your site:

  • Enable contributed image module
    Administer >> Site building >> Modules
  • Set permissions so images can be written for userid running link check.
    Administer >> User management >> Access control
  • Enable the menu module
    Administer >> Site building >> Modules
  • Disable the logout menu
    Administer >> Site building >> Menus

From a command line on a computer connected to the Internet run wget with the following options:

The cookie this command is referring to is the cookie downloaded from your browser when you last logged into your Drupal site as an admin.

wget -r --delete-after --cookies=off --header='Cookie: PHPSESSID=xxx' http://example.com

-r to recursively crawl the site. --delete-after, --cookies=off tells the crawler not to use a cookie. --header=’Cookie: PHPSESSID=XXXX’ tells the Drupal site that session information will be passed in the http header. This should be repeated 2 more times; once for a regular userid, and once for an anonymous userid. After the link check is done check your Drupal admin logs and your webserver error logs. Look in your browser preferences to see what cookies you have for your url.