Migratie (WordPress): verschil tussen versies
(21 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
Regel 3: | Regel 3: | ||
''' Wat ik meestal zoek ''' | ''' Wat ik meestal zoek ''' | ||
− | + | # Bronlocatie: Maak een databasedump | |
− | + | # Bronlocatie: Zet de site in onderhoudsmodus | |
− | + | # Kopiëer alle bestanden naar de doellocatie | |
− | + | # Doellocatie: Importeer de database | |
− | + | # <code>wp-config.php</code>; Werk db-string bij | |
− | + | # Controleer <code>wp-config.php</code> op hard-coded site-URL's | |
− | + | # Indien mogelijk: Bekijk met ''MySQL Workbench'' of mysql-client in tabel <code>wp_options</code> wat precies de oude URL is | |
+ | # <code>wp search-replace oudeurl nieuweurl</code> | ||
+ | # Browser: Wis afgelopen uur - <code>Ctrl-Shift-Del</code> in Firefox | ||
+ | # Configureer ''force direct download'', Zet <code>define('FS_METHOD', 'direct');</code> in <code>wp-config.php</code> [[Update WordPress-installatie]] | ||
''' Extra ''' | ''' Extra ''' | ||
Regel 15: | Regel 18: | ||
* Instellingen UpdraftPlus bijwerken? | * Instellingen UpdraftPlus bijwerken? | ||
* https configureren? | * https configureren? | ||
+ | |||
+ | ''' Blijft-ie terugspringen naar de oude URL? ''' | ||
+ | |||
+ | * Controleer tabel <code>wp_options</code> - Is de URL correct aangepast? | ||
== Inventaris == | == Inventaris == | ||
Regel 64: | Regel 71: | ||
== Migratie van https naar http == | == Migratie van https naar http == | ||
− | Wanneer ik een site verhuis van productie- naar ontwikkelomgeving, houdt dat vaak ook een verhuizing van ''https'' naar ''http'' in. Het lijkt erop, dat de procedure precies hetzelfde is. | + | Wanneer ik een site verhuis van productie- naar ontwikkelomgeving, houdt dat vaak ook een verhuizing van ''https'' naar ''http'' in. Het lijkt erop, dat de procedure precies hetzelfde is. Zie ook [[SSL & WordPress]]. |
== Storingen db-import == | == Storingen db-import == | ||
Regel 172: | Regel 179: | ||
chmod -R o+rX * | chmod -R o+rX * | ||
</pre> | </pre> | ||
+ | |||
+ | == Casus: Rechten belemmeren migratie (mei 2021) == | ||
+ | |||
+ | Een migratie lukte niet: | ||
+ | |||
+ | Eerste probleem: ''rsync'' kon voortdurend mappen niet aanmaken, waaronder de meeste mappen onder ''wp-content/plugins'' | ||
+ | |||
+ | Tweede probleem: Sommige bestanden (wo. afbeeldingen die vermoedelijk via de site zijn geüpload) hadden als eigenaar en groep beiden ''www-data'' en die kon ik niet lezen (ik zit in groep ''www-admin''). | ||
+ | |||
+ | === Oorzaak === | ||
+ | |||
+ | De vermoedelijke oorzaak van het eerste probleem: | ||
+ | |||
+ | * Bron-locatie: Webserver is eigenaar, beheerder zit in ''groep''' - Webserver kan niet schrijven, beheerder wel | ||
+ | * Doel-locatie: Beheerder is eigenaar, webserver zit in ''groep'' - Beheerder kan niet schrijven → Inhoud van mappen wordt niet gekopiëerd. | ||
+ | |||
+ | Dit probleem kwam ik al eerder tegen: [[Rsync#Keep permissions - p-switch]]. | ||
+ | |||
+ | Achterliggende oorzaak van beide problemen: De manier waarop ik rechten heb geconfigureerd, wijkt te zeer af van hoe de rest van de wereld dit doet ([[Mappen, bestanden & rechten - 2020 (WordPress)]]). | ||
+ | |||
+ | === Oplossing - Quick & dirty === | ||
+ | |||
+ | Dit is een quick-and-dirty-oplossing, zodat ik verder kan: | ||
+ | |||
+ | # Bronlocatie: | ||
+ | ##<code>sudo chmod -R ug+rw .</code> | ||
+ | ##<code>sudo chgrp -R www-admin *</code> | ||
+ | # Doellocatie: Verwijder alle bestanden van een eventuele eerdere poging | ||
+ | # Opnieuw kopiëren. | ||
+ | |||
+ | Waarom dit quick-and-dirty is: De instellingen van rechten op de bronlocatie, klopt nu niet meer. Sois. Daar heb ik een script voor plus dat nu de site is gemigreerd, dit vermoedelijk niet meer boeit. | ||
+ | |||
+ | === Oplossing - Koninklijke weg === | ||
+ | |||
+ | Een oplossing die minstens zo grondig als tijdsrovend is: Op hoofdlijnen | ||
+ | |||
+ | * Maak op de bron-webserver een tijdelijke kopie van de site - Dit kan een lastig proces zijn | ||
+ | * Pas de rechten op deze kopie aan, zoals op de doellocatie | ||
+ | * Kopiëer vervolgens deze kopie naar de doellocatie. | ||
+ | |||
+ | == Casus: Migratie lukt niet vanwege caching (2023.01) == | ||
+ | |||
+ | Dit betreft de migratie van een site waar nogal veel aan caching wordt gedaan. Zelfs <code>wp search-replace</code> werkt niet. Eerst moeten een paar dingen worden uitgezet: | ||
+ | |||
+ | * Verwijder de inhoud van de map ''Must-use plugins'' | ||
+ | * ? | ||
== Zie ook == | == Zie ook == | ||
* [[Mappen, bestanden & rechten (WordPress)]] | * [[Mappen, bestanden & rechten (WordPress)]] | ||
+ | * [[Update WordPress-installatie]] - Force direct download | ||
== Bronnen == | == Bronnen == |
Huidige versie van 26 jan 2023 om 14:37
Hoe migreer je een bestaande WordPress-site naar een andere locatie? Bv. van ontwikkelomgeving naar productie-omgeving? Kan dit mbv. de CLI?
Wat ik meestal zoek
- Bronlocatie: Maak een databasedump
- Bronlocatie: Zet de site in onderhoudsmodus
- Kopiëer alle bestanden naar de doellocatie
- Doellocatie: Importeer de database
wp-config.php
; Werk db-string bij- Controleer
wp-config.php
op hard-coded site-URL's - Indien mogelijk: Bekijk met MySQL Workbench of mysql-client in tabel
wp_options
wat precies de oude URL is wp search-replace oudeurl nieuweurl
- Browser: Wis afgelopen uur -
Ctrl-Shift-Del
in Firefox - Configureer force direct download, Zet
define('FS_METHOD', 'direct');
inwp-config.php
Update WordPress-installatie
Extra
- Instellingen UpdraftPlus bijwerken?
- https configureren?
Blijft-ie terugspringen naar de oude URL?
- Controleer tabel
wp_options
- Is de URL correct aangepast?
Inventaris
- WordPress kent iets dat WXR-bestanden heet. Daar heb je oa. een plugin voor, en bijbehorende wp cli-commando's. Maar dit betreft vermoedelijk de migratie van content, en niet van complete sites. [1], [2]
- De Codex-hoofdpagina lijkt te suggereren dat je nooit vanuit WordPress zelf een db-backup kunt maken, maar dat je dat altijd extern moet doen [3]
- Het lijkt erop, dat dit voornamelijk handwerk is [4]
- Duplicator is een migratie-plugin. Ziet er indrukwekkend uit.
Migratie & CLI
Dit artikel laat zien dat gemakkelijk kan via bash. In het voorbeeld hieronder migreer ik example.com
van de ontwikkelomgeving (=mijn laptop) naar een VPS.
Bronlocatie
cd /var/www/example.com # db-export ########### # mysqldump <db_name> > export_bestand.sql # Kopiëer naar VPS ################## # # Inpakken is niet nodig: Het gaat snel genoeg. "in1" is een map voor binnenkomende bestanden # scp -r * vps12:in1
Doellocatie
- Domeinnaam aanmaken
- Database aanmaken
cd /var/www/example.com
mv ~in1/* .
mysql example_database < db_dump.sql
- Nieuwe database-credentials invoeren in
wp-config.php
- Search-&-replace - Test:
wp search-replace example.com newexample.com --dry-run
- Search-&-replace - Echt:
wp search-replace example.com newexample.com
- SQL-bestanden opruimen in
~/in1
enexample.com
- Maprechten bijwerken?
Gebruikerslocatie
Cash legen. Op Firefox kan dat met de toetscombinatie Ctrl-Shift-Del
.
Migratie van https naar http
Wanneer ik een site verhuis van productie- naar ontwikkelomgeving, houdt dat vaak ook een verhuizing van https naar http in. Het lijkt erop, dat de procedure precies hetzelfde is. Zie ook SSL & WordPress.
Storingen db-import
Oorzaak: Server-versie = 5.5, werstation-versie = 5.7. Zie Upgrade MySQL voor de oplossing.
Archiefbestand in gebruik nemen - Een lijstje
Dit betreft een situatie waarin ik een backup van een site kreeg als een archiefbestand, inclusief een backup van de databae.
- Db-connection string aanpassen in wp-config.php
- Variabelen WP_HOME en WP_SITEURL aanpassen in wp-config.php:
define('WP_HOME','http://example.com'); define('WP_SITEURL','http://example.com');
- Inloggen in admin-account
- .htaccess-bestanden aanpassen?
- Browsercache legen ivm. eventuele redirects!!!
Een lijstje dat ik van iemand kreeg:
- database inladen
- aanpassen van wp-config file naar je lokale database
- database strings aanpassen naar je lokale url
- inloggen
- permalinks Resetten. Kwestie van gewoon een keer de permalinks instellingen opslaan.
- daarna zou je de taal van wordpress kunnen aanpassen.
... Wordt vervolgd.
Casus: Archiefbestand in gebruik nemen (maart 2017)
- Bestanden & database verplaatst
- wp-config.php: db-string, wp_home & wp_siteurl aangepast
- Ingelogd in wp-admin
- Permalinks paar keer ververst (Settings » Permalinks) - Ze stonden al goed
- Browsercache geleegd - Dit bleek cruciaal te zijn
- Site bezocht - Klaar.
Casus: Archiefbestand in gebruik nemen (april 2017)
- Bestanden & database verplaatst
- wp-config.php: Database-string aangepast
- wp-config.php: wp_home & wp_siteurl toegevoegd: Ze stonden er nog niet in, maar de site redirecte wel steeds naar de oorspronkelijke locatie
- Bestandsrechten fixen map backup-guard ivm. foutmelding
SGExceptionForbidden: Permission denied. Directory is not writable: /var/www/example.com/wp-content/uploads/backup-guard/
- Inloggen in wp-admin
Casus: Site klonen & redirects (okt. 2017)
Betreft klonen van een site van test1.example.com naar test2.example.com. Er was een probleem met redirecting: Hij bleef naar de oude site terugkeren:
- Bestanden & database geklooned
- In wp-config.php database-string aangepast
wp search-replace test1.example.com test2.example.com
- Site bleef redirecten van test2.example.com naar test1.example.com- Browsercache geleegd (gewoon alles van het afgelopen uur verwijderd) - Probleem opgelost.
Casus: MySQL-fouten (okt. 2017)
Het bleek dat de ontwikkelomgeving een nieuwere versie van MySQL heeft, dan de externe testversie. Oplossing:
cd /var/www/example.com # db-export & aanpassen ####################### # # * Dankzij "cd"-commando hierboven, belandt sql-dump in root van installatie - Da's handig! # * Mysqldump gebruiken in compatibiliteitsmodus # * Dump aanpassen: Find & replace: "TYPE=InnoDB" vervangen door "Engine=InnoDB" # mysqldump --compatible=mysql4 <db_name> > export_bestand.sql
Casus: Site schakelt steeds naar https (nov. 2017)
Een site is geklooned naar http://example.com. Als ik 'm oproep, springt-ie gelijk naar https://example.com (dus met de -s- van secure). Ook http://example.com/wp-admin doet hetzelfde.
Oplossing: Op database-niveau in tabel wp_options de waardes voor siteurl en home aanpassen. Klaar.
Casus: Migratie https naar http (mei 2018)
Dit betreft een migratie van een productie- naar een ontwikkelomgeving, waarbij de productie https was, en de ontwikkelomgeving http.
Acties:
- Bestanden gemigreerd naar de ontwikkelomgeving
- Database geïmporteerd
wp search-replace https://example.com http://example.dvb
- ...Klaar!
Casus: js_composer ontbreekt na migratie (sep. 2018)
Oorzaak: Binnen de ontwikkelomgeving is gebruiker strompf de eigenaar van alles, maar op de externe omgeving is dit een ander account. Resultaat: Map js_composer was niet leesbaar voor de webserver.
Oplossing:
cd plugins chmod o+rwX js_composer cd js_composer chmod -R o+rX *
Casus: Rechten belemmeren migratie (mei 2021)
Een migratie lukte niet:
Eerste probleem: rsync kon voortdurend mappen niet aanmaken, waaronder de meeste mappen onder wp-content/plugins
Tweede probleem: Sommige bestanden (wo. afbeeldingen die vermoedelijk via de site zijn geüpload) hadden als eigenaar en groep beiden www-data en die kon ik niet lezen (ik zit in groep www-admin).
Oorzaak
De vermoedelijke oorzaak van het eerste probleem:
- Bron-locatie: Webserver is eigenaar, beheerder zit in groep' - Webserver kan niet schrijven, beheerder wel
- Doel-locatie: Beheerder is eigenaar, webserver zit in groep - Beheerder kan niet schrijven → Inhoud van mappen wordt niet gekopiëerd.
Dit probleem kwam ik al eerder tegen: Rsync#Keep permissions - p-switch.
Achterliggende oorzaak van beide problemen: De manier waarop ik rechten heb geconfigureerd, wijkt te zeer af van hoe de rest van de wereld dit doet (Mappen, bestanden & rechten - 2020 (WordPress)).
Oplossing - Quick & dirty
Dit is een quick-and-dirty-oplossing, zodat ik verder kan:
- Bronlocatie:
sudo chmod -R ug+rw .
sudo chgrp -R www-admin *
- Doellocatie: Verwijder alle bestanden van een eventuele eerdere poging
- Opnieuw kopiëren.
Waarom dit quick-and-dirty is: De instellingen van rechten op de bronlocatie, klopt nu niet meer. Sois. Daar heb ik een script voor plus dat nu de site is gemigreerd, dit vermoedelijk niet meer boeit.
Oplossing - Koninklijke weg
Een oplossing die minstens zo grondig als tijdsrovend is: Op hoofdlijnen
- Maak op de bron-webserver een tijdelijke kopie van de site - Dit kan een lastig proces zijn
- Pas de rechten op deze kopie aan, zoals op de doellocatie
- Kopiëer vervolgens deze kopie naar de doellocatie.
Casus: Migratie lukt niet vanwege caching (2023.01)
Dit betreft de migratie van een site waar nogal veel aan caching wordt gedaan. Zelfs wp search-replace
werkt niet. Eerst moeten een paar dingen worden uitgezet:
- Verwijder de inhoud van de map Must-use plugins
- ?
Zie ook
- Mappen, bestanden & rechten (WordPress)
- Update WordPress-installatie - Force direct download
Bronnen
- https://codex.wordpress.org/Moving_WordPress
- https://developer.wordpress.org/cli/commands/export/
- https://developer.wordpress.org/cli/commands/import/
- https://halfelf.org/2014/migrating-with-wp-cli/
- https://codex.wordpress.org/Changing_The_Site_URL
Https » http