Förra året (för tre dagar sen) så gjorde jag en flytt av min nya hemsida från testmiljön till produktionsmiljön. Alla som försökt flytta en WordPress-applikation vet hur klurigt det kan vara att få länkar och alla inställningar att följa med. Så för att själv inte glömma bort det och kanske även sprida lite ljus i världen så tänkte jag skriva ner vad som gjorde en flytt smidig, ganska smidig i alla fall.
Jag gjorde först två misslyckade försök där jag första gången sabbade alla länkar på hemsidan och andra gången, när jag försökte använda ett backup-program, så följde bara innehållet och sidorna med. Själva konfigurationen, exempelvis vilka sidor som ska visas i vilka menyer och mina manuella redigeringar i stylesheets, följde inte med.
Felen jag stötte på ledde mig dock till en artikel som jag vid tredje försöket provade. Jag gjorde vissa avsteg från artikeln men trots det, great success!
Scenario
Jag hade byggt upp en applikation i WordPress på länken http://test.example.com och jag ville nu flytta den till produktionsmiljön på adressen http://www.example.com.
Det innebär att jag vill flytta alla filer, teman, plugins, inställningar och innehåll från en applikation med egen databas till en ny applikation med ny databas.
Observera att detta tillvägagångssätt även fungerar om man har byggt upp en WordPress-applikation lokalt på sin dator och ska publicera den hos sin driftleverantör!
1. Skapa ny site
Detta innebär allt vad som krävs för att du ska kunna surfa till en standardinstallation av WordPress på din nya applikation http://www.example.com.
För mig innebär det att skapa en ny databas och därefter installera WordPress på rätt adress och peka ut den nya databasen.
Prova slutligen surfa till http://www.example.com och se att du får upp startsidan för WordPress.
2. Backup av databas
Jag använder mig av phpMyAdmin för att göra en export av alla tabeller och dess innehåll. Eftersom jag redan har en databas med konton och rättigheter uppsatt (från steg 1) så vill jag bara ta med tabeller och dess innehåll. Det är dock två inställningar som jag vill göra som kräver att jag använder mig av en anpassad export:
- Inställningen DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT krävs så att de befintliga tabellerna med innehållet från WordPressinstallationen ersätts av mina tabeller och mitt innehåll.
- UTF-8 ska användas så man slipper problem med svenska tecken.
Spara därefter export-skriptet på ett lämpligt ställe.
3. Flytta filer med FTP
Flytta alla filer i mappen wp-content från din gamla applikation och ersätt de filer som ligger i motsvarande mapp i din nya orginalinstallation av WordPress.
Observera att du ska inte flytta alla filer. Då följer exempelvis filen wp-config.php med och där ligger databasinställningarna!
4. Importera databasen
Det här steget skiljer sig från den ursprungliga artikeln. I artikeln så uppdaterar man URL :er i den gamla databasen först innan man gör importen i nya. Jag vill ju ha min testmiljö orörd efter flytten och därför så gör jag import före jag uppdaterar URL:er.
Öppna phpMyAdmin för den nya databasen och välj att göra en import. Välj filen du exporterade i steg 3 och kör.
Jag brukar verifiera att data importerades korrekt och det görs smidigast om man klickar på tabellen wp-options och tittar på översta raden som för mig visar att siteurl är den gamla applikationens adress http://test.example.com.
5. Uppdatera URL:er
Efter importen måste man gå igenom databasen och ersätta den gamla adressen http://test.example.com med http://www.example.com. Detta gör jag genom att använda verktyget Search-Replace-DB som är riktigt bra.
Man laddar helt enkelt upp mappen Search-Replace-DB med FTP till samma nivå som wp-config.php (rotkatalogen för applikationen). Därefter surfar man till adressen http://www.example.com/Search-Replace-DB, fyller i alla uppgifter och klickar på live run.
OBS!
Efter att upprepande gånger fått problem med att widgets försvinner efter databasuppdateringen (problemet med serialiserade värden i tabellen wp_options) så har jag modifierat mitt angreppssätt. Först kör jag Search-Replace-DB på alla tabeller UTOM ‘wp_options’. Därefter så uppdaterar jag ‘wp_options’ med hjälp av följande skript i phpMyAdmin:
UPDATE wp_options
SET option_value = replace(option_value, ‘http://test.example.com’, ‘http://www.example.com’)
WHERE option_name = ‘home’ OR option_name = ‘siteurl’;
Det enda som kan behövas uppdateras manuellt efteråt är om du i någon widget har absoluta sökvägar.
När uppdateringen är klar så kan man verifiera detta återigen genom att titta på värdet siteurl i tabellen wp-options via phpMyAdmin. Denna gång ska det såklart vara http://www.example.com.
Om allt stämmer så kom ihåg att ta bort mappen Search-Replace-DB med hjälp av knappen Delete me.
6. Rensa webbläsarens cache
Här behöver man inte rensa hela historiken utan det räcker med alternativet Empty browser cache som Google Chrome erbjuder.
7. Slutliga inställningar
Trots allt jobb så finns det några saker som måste åtgärdas i administratörsläge.
- Uppdatera eventuellt sökvägen för var mediaarkivet ligger under “Settings” > “Media”. Detta beror lite på hur driftmiljön ser ut, jag var tvungen att uppdatera denna sökväg så den pekade ut den nya applikationens katalog “/wp-content/uploads”.
- Eventuella direkta sökvägar till bilder eller andra uppladdade filer behöver uppdateras.
8. Njut av den nya sidan
När allt är klart så kan man luta sig tillbaka och klicka runt på sin flyttade applikation. Enjoy!