Site kopiëren (Drupal)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Casus: 2010

Een site migreren, bijvoorbeeld van een ontwikkel- naar een productieomgeving, is vrij complex. Dat is omdat je niet zomaar in één keer de bestanden plus de database kunt overfietsen. Een paar scenario's:

  • Bestanden migreren, op de nieuwe locatie de website starten: De website zal doorgaans een foutmelding geven dat hij de database niet kan vinden. Als je in settings.php de juiste gegevens invoert, krijg je vervolgens een foutmelding, omdat de site niet de verwachte tabellen vindt. Wiedes, want die database is nog leeg. Jammer dat de site niet in zo'n geval een nieuwe database initiëert;
  • Bestanden migreren, database zelf migreren, website starten: In dit scenario wordt de database op de nieuwe locatie geactiveerd voordat de site gestart wordt, doorgaans middels PHPMyAdmin. Deze manier heb ik nog niet toegepast, maar het werkt waarschijnlijk wel. Het werk zit 'm in het im- en exporteren van de database: Dat is een secuur werkje;
  • Bestanden migreren, database migreren middels Drupal-module: Dit is het scenario dat ik meestal toepas: (1) Op de bronlocatie maak ik met behulp van de backup_migrate-module een copie van de database; (2) op doellocatie maak ik een werkende Drupal-installatie aan, want het is noodzakelijk dat Drupal zelf een database initiëert; (3) Ik migreer alle bestanden van bron- naar doellocatie; (4) Op doellocatie activeer ik de backup_migreer-module, en ik importeer de database. Deze procedure wordt in dit artikel behandelt.

Procedure

Actie Uitleg
Upgrade de bron-site Waarschijnlijk is dit het handigste moment om de bron-site bij te werken naar de nieuwste versie van Drupal. Additioneel heeft dat het voordeel dat de versies op doel- en bronlocatie gelijk zullen zijn. Aan de andere kant: Als het niet kapot is, hoef je het ook niet te repareren
Schakel CleanURLs uit op bronlocatie Op http://drupal.org/node/5590 staat uitgelegd hoe je clean URLs kunt aanpassen als het kwaad al is geschied.
Maak een backup van de database Maak met behulp van de Backup and Migrate-module een backup van de database op de bronlocatie. Laat deze backup op de server staan
Creëer een werkende Drupal-installatie op doellocatie Zorg dat op de doellocatie een werkende Drupal-installatie is. Je hebt namelijk een functionerende Drupal-database nodig
Backup settings.php Maak een backup van het settings.php-bestand van doellocatie naar je locale computer
Verwijder alle bestanden op de doellocatie? In de volgende stap worden alle bestanden van bron- naar doellocatie gecopiëerd, en de ervaring leert dat dat vaak niet in één keer goed gaat. Daarom is het handig om alle bestanden te verwijderen: Dan kun je de voortgang bijhouden.

Aan de andere kant: Een client als FileZilla lijkt doorgaans probleemloos te copiëren. In dat geval kun je deze stap overslaan.

Copiëer alle bestanden van bron- naar doellocatie Met Nautilus kun je direct van bron- naar doellocatie copiëren. Probleem is echter dat Nautilus (of misschien de FTP-infrastructuur) nogal foutgevoelig is. Waarschijnlijk handig om bestanden steeds in delen te copiëren.

FileZilla is een veel betrouwbaardere client voor copiëren van bestanden. Ook al kun je vermoedelijk niet rechtstreeks van bron- naar doellocatie copiëren.

Copiëer settings.php naar doellocatie Nu heb je nog steeds je 'oude' doellocatie-site. Welliswaar zijn veel bestanden ge-upload, maar je gebruikt nog steeds de oude database
Activeer de Backup and Migrate-module
Activeer de locaal opgeslagen database-copie ... Nu heb je de nieuwe site

Alternatief

Aan het begin van dit hoofdstuk was vermeld dat je niet zomaar de bestanden plus database kunt overfietsen. Toch zou het prettig zijn als het min-of-meer op die manier zou kunnen.

Op het moment dat je alle bestanden migreert, en de site aanroept op de nieuwe locatie, krijg je deze foutmelding. Dat moet handiger kunnen
De oplossing: Bestand sites/default/settings.php verwijderen. Blijkbaar bepaalt Drupal aan de hand van het bestaan van dat bestand, of het een bestaande of een nieuwe installatie betreft

Casus 2017