it-swarm.dev

Gewusst wie: Einfaches Verschieben einer WordPress-Installation von der Entwicklung in der Produktion?

Ich entwickle auf einer Box und verwende eine zweite für die Produktion. Im Moment lösche ich einfach die Datenbank und suche einen Ersatz für die URL-Änderungen. Kopieren Sie dann die Dateien und importieren Sie das neue SQL.

Gibt es dafür bessere Möglichkeiten?

197
Ryan Gibbons

@ Insanity5902 : Die Bereitstellung einer WordPress-Site von einer Box auf eine andere ist seit dem ersten Tag, an dem ich mit WordPress arbeite, ein PITA. (Um ehrlich zu sein, es war 2 Jahre lang eine PITA mit Drupal, bevor ich mit WordPress angefangen habe, also liegt das Problem sicherlich nicht ausschließlich bei WordPress.)

Es störte mich, dass ich jedes Mal, wenn ich eine Site verschieben musste, so viel doppelte Mühe aufwenden musste, und es verhinderte, dass ich so oft Tests durchführte, wie ich es mir gewünscht hätte. Vor ungefähr 4-6 Monaten habe ich angefangen, an einem Plugin zu arbeiten, um das Webhost-Migrationsproblem zu lösen, und ich habe meine Ideen im WP Tavern-Forum erwähnt.

Nun, schnell vorwärts bis heute und ich habe es so ziemlich zum Laufen gebracht und ich rufe es bequemerweise "WP Migrate Webhosts" an. Obwohl das Plugin immer noch sehr viel Beta (wahrscheinlich sogar Alpha) ist, denke ich, dass ich bereit bin, die Leute anfangen zu lassen, damit zu bumsen.

Der vorgesehene Anwendungsfall ist:

  1. zunächst übernimmt der Entwickler das Hochladen aller geänderten Theme- und Plugin-Dateien über FTP.
  2. anschließend wird die Entwicklungs-MySQL-Datenbank vollständig und endgültig auf den Testserver hochgeladen
  3. then führt das Plugin aus, um alle Verweise von der vorherigen auf die neue Domain zu migrieren. (Mein Plugin versucht nicht, das Zusammenführen neuer Datenbankfelder oder Tabellen mit Live-Daten zu lösen. DASS ist ein viel größeres Problem, dessen Lösung ich nicht genau weiß. )

Sie können das Plugin herunterladen von meiner Website und in Ihr Plugin-Verzeichnis entpacken (wenn Sie nicht wissen, wie das geht, ist dieses Plugin nichts für Sie, da es jemanden erfordert, der weiß, was er tut, um es zu verwenden. ) Ich werde dieses Plugin online lassen, bis ich es auf WordPress.org veröffentliche. Danach solltest du dort danach suchen.

Um es zu verwenden, gehen Sie in Ihrem wp-config.php anders vor, als es normalerweise der Fall ist, indem Sie die vier (4) definierten DB_NAME, DB_USER, DB_PASSWORD und DB_Host auskommentieren und stattdessen die Standardeinstellungen für Webhosts Registrierung und anschließend Informationen über jeden Webhost selbst registrieren . So könnte dieses Segment von wp-config.php aussehen (beachten Sie, dass im ersten Abschnitt der nicht benötigte Code auskommentiert ist und dass ich meine hosts-Datei auf meinem lokalen Computer mit nicht routingfähigen .dev-Domänen der obersten Ebene eingerichtet habe, um die tägliche Entwicklung zu ermöglichen einfacher. Auf dem Mac VirtualHostX macht dies ein Kinderspiel):

// ** MySQL settings - You can get this info from your web Host ** //
/** The name of the database for WordPress */
//define('DB_NAME', 'wp30');

/** MySQL database username */
//define('DB_USER', 'wp30_anon');

/** MySQL database password */
//define('DB_PASSWORD', '12345');

/** MySQL hostname */
//define('DB_Host', '127.0.0.1:3306');

require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/wp-webhosts.php');
register_webhost_defaults(array(
 'database'  => 'example_db',
 'user'      => 'example_user',
 'password'  => '12345',
 'Host'      => 'localhost',
 'sitepath'  => '',        // '' if WordPress is installed in the root
));
register_webhost('dev',array(
 'name'      => 'Example Local Development',
 'Host'      => '127.0.0.1:3306',
 'domain'    => 'example.dev',
 'rootdir'   => '/Users/mikeschinkel/Sites/example/trunk',
));
register_webhost('test',array(
 'name'      => 'Example Test Server',
 'rootdir'   => '/home/example/public_html/test',
 'domain'    => 'test.example.com',
));
register_webhost('stage',array(
 'name'      => 'Example Staging Server',
 'rootdir'   => '/home/example/public_html/stage',
 'domain'    => 'stage.example.com',
));
register_webhost('live',array(
 'name'      => 'Example Live Site',
 'rootdir'   => '/home/example/public_html/',
 'password'  => '%asd59kar12*fr',
 'domain'    => 'www.example.com',
));
require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/set-webhost.php');

Hoffentlich ist dies (meistens) selbsterklärend. Ich habe versucht, den Code so sauber wie möglich zu machen, aber leider werden diese beiden kryptischen require_once()-Zeilen vor und nach dem Block des Webhost-Registrierungscode benötigt, da es für mich keine Möglichkeit gab, "hook" WordPress vor wp-config.php zu erstellen namens.

Sobald Sie Ihren wp-config.php aktualisiert haben, können Sie einfach die URL-Verknüpfung wp-migrate-webhosts verwenden, um wie folgt zum Administratorbildschirm zu gelangen:

http://example.com/wp-migrate-webhosts

Mit dem obigen Befehl gelangen Sie zu einem Administratorbildschirm wie dem folgenden, der einiges an Beschreibungstext enthält und es Ihnen ermöglicht, VON alle anderen Webhost-Domänen mit einem einzigen Klick zu migrieren, nachdem Sie die zu migrierenden Domänen ausgewählt haben from (NOTE: In diesem Beispiel wird gezeigt, wie DOWN von Test-/Stage-/Live-Servern zur lokalen Entwicklung gewechselt wird. Sie können jedoch sicher sein, dass die Migration von TO möglich ist. Jede Domain, in der sie sich gerade befindet. Dies bedeutet auch Das Plugin eignet sich hervorragend, um eine vorhandene Live-Site zu übernehmen und eine lokale Entwicklungsumgebung schnell zum Laufen zu bringen! ):

 enter image description here 

Wenn nicht klar ist, dass "Migration" in diesem Kontext bedeutet, dass alle Verweise in der aktuellen Datenbank so aktualisiert werden, dass sie für den aktuell definierten Webhost geeignet sind (und "aktuell" ist Sniffed) durch Überprüfen von $_SERVER['SERVER_NAME'].)

Das Coole an dem Plugin ist, dass es einige grundlegende Migrationen implementiert, aber jeder kann es einbinden und seine eigenen Migrationen durchführen . Wenn Sie beispielsweise ein Galerie-Plugin hinzufügen, das vollständige Pfade zu Bildern in der Datenbank gespeichert hat, können Sie die Aktion migrate_webhosts einbinden, die an den Webhost "von" und den Webhost "bis" übergeben wird. Webhost jeweils als ein Array von Metadaten, und Sie können alles ausführen, was Sie in der Datenbank tun müssen, indem Sie SQL oder andere anwendbare WordPress-API-Funktionen für die Migration verwenden. Ja, jeder von uns könnte dies ohne das Plugin tun, aber ohne das Plugin stellte ich fest, dass das Schreiben des gesamten benötigten Codes mehr Aufwand war, als es wert war. Mit dem Plugin ist es einfach einfacher, diese winzigen Hooks zu schreiben und hinter sich zu bringen.

Möglicherweise schlagen meine Migrationen auch in Edge-Fällen fehl, die ich nicht getestet habe, und können Sie mir möglicherweise dabei helfen, das Plug-in zu verbessern? Jeder, der möchte, kann mir eine E-Mail über mein Google Mail-Konto senden (mein Alias ​​ist "mikeschinkel").

Außerdem wurde das Plugin so konzipiert, dass es benutzerdefinierte Webhost-Metadaten zusätzlich zu den erkannten Metadaten wie database, user, password, Host, domain usw. akzeptiert. Ein perfektes Beispiel ist möglicherweise googlemaps_apikey, in dem Sie die verschiedenen API-Schlüssel für jede Domain speichern können dass das Google Map-Plugin korrekt funktionieren muss (wer unter Ihnen, der ein Google Maps-Plugin verwendet hat, hat noch keine App auf einem Live-Server bereitgestellt und hat vergessen, den Code in den richtigen API-Schlüssel zu ändern? Komm schon, sei ehrlich ... :) Mit diesem Plugin, einem googlemaps_apikey -Element in Ihrem register_webhost () -Array und einem kleinen benutzerdefinierten migrate_webhosts -Hook können Sie dieses Problem effektiv beheben!

Nun, das war es auch schon. Ich starte dieses Plugin hier in WordPress Answer's Exchange, weil die Frage von @ Insanity5902 es ausgelöst hat. Lassen Sie mich wissen, ob es hilfreich ist, hier gegebenenfalls oder per E-Mail, wenn nicht.

P.S. Wenn Sie sich für die Verwendung dieser Option entscheiden, denken Sie daran, dass es sich um eine Alpha/Beta-Version handelt. Dies bedeutet, dass Sie sich auf kleinere Operationen einstellen müssen, wenn Sie sie ab und zu verwenden möchten.

P.P.S. Was sind meine Ziele dabei? Ich liebe es zu sehen, wie dies in den WordPress-Kern migriert wird, damit jeder Zugriff darauf hat. Aber bevor das überhaupt in Betracht gezogen werden kann, müssen viele Menschen daran interessiert sein, es zu verwenden, um sicherzustellen, dass es tatsächlich mehr Probleme löst, als es möglicherweise verursachen könnte. Wenn Ihnen die Idee gefällt, können Sie sie auf jeden Fall nutzen und mir dabei helfen, Schwung für eine mögliche hoffnungsvolle Aufnahme in den WordPress-Kern zu gewinnen.

121
MikeSchinkel

Wenn möglich, setze ich WP_HOME und WP_SITEURL in wp-config.php. In Kombination mit einem Datenbank-Dump und -Import ist dies die einfachste aller mir bekannten Lösungen.

http://codex.wordpress.org/Changing_The_Site_URL#Edit_wp-config.php

35

Mein Lieblings-Hack; Fügen Sie Ihrem /etc/hosts eine Einstellung hinzu, damit die Produktionsdomäne direkt auf Ihrem Computer auf Ihre Entwicklungsbox verweist. Um die Bereitstellung für die Produktion durchzuführen, müssen Sie alle Dateien synchronisieren und die Datenbank verschieben.

Die Risiken dieser Strategie liegen auf der Hand. Sie könnten Ihre Entwicklungsumgebung mit Ihrer Produktionsumgebung verwechseln.

Es ist immer noch eine einfache Lösung.

27
Wietse Venema

Ich wollte etwas Ähnliches, als ich vor ein paar Monaten zu WP migrierte, also schrieb ich ein ziemlich einfaches Shell-Skript, das rsync und mysqldump über ssh verwendet:

http://snarfed.org/sync_wordpress

Es ist nicht anspruchsvoll oder webbasiert, aber ich bin zufrieden damit.

9
ryan

WP Engine ist ein neuer Dienst, der "One-Click-Staging" bietet:

WPEngine verfügt über eine exklusive Funktion namens "Staging". So funktioniert es: Bevor Sie eine beängstigende Änderung an Ihrem Blog vornehmen, klicken Sie auf die Schaltfläche "Snapshot". Wir erstellen eine vollständige Kopie Ihres Blogs und richten sie in einem separaten, sicheren Bereich ein. Sie können mit allem spielen, was Sie wollen. Nichts lebt. Erst wenn Sie bereit sind, es in Betrieb zu nehmen, berühren Sie Ihre Hauptseite.

Sieht nach einer sehr einfachen Möglichkeit aus, schnell von der Entwicklung zur Produktion zu wechseln, insbesondere bei einer bereits aktiven Site.

8

Duplicator Plugin: Hier ist ein Plugin, an dem ich gearbeitet habe. Es befindet sich derzeit in der Beta-Phase, erledigt aber für die meisten Websites die Arbeit. Im Moment ist es auf kleinere WordPress-Installationen ausgerichtet. http://wordpress.org/extend/plugins/duplicator/

Ressourcen: Weitere Ressourcen für das Plugin finden Sie hier: http://lifeinthegrid.com/duplicator/

Community: Bitte teilen Sie uns Ihre Erfolge oder Probleme mit! Um die verschiedenen Threads einfacher verwalten zu können, posten Sie Probleme in den WordPress.org-Plugin-Foren. Bitte posten Sie keine Protokolldaten aus dem Plugin in den Online-Foren. Protokolldaten können an unsere Support-Site gesendet werden.

7
Cory

Sie könnten sich ein Produkt von iThemes ansehen, das BackUpBuddy heißt. Ich habe es nur zweimal benutzt, hatte jedes Mal ein oder zwei Probleme, aber insgesamt sieht es vielversprechend aus.

6
MikeK

Das sieht vielversprechend aus. Wir arbeiten an einigen Skripten, um einige der Daten zu migrieren, wp-Optionen zum Beispiel, Pfade in der Datenbank ändern, ein Kopieren über Medien.

Das Problem, das ich habe, ist, dass die Live-Site weiter wächst, während sich die andere in der Entwicklung befindet. Eine Website, an der wir arbeiten, hat 20 Posts pro Tag und über 3.000 Kommentare pro Tag. Das sind zu viele Daten, um sie mit phpmyadmin oder über die Befehlszeile zu übertragen. Das Verschieben der Daten verursacht aus irgendeinem Grund immer UTF-Probleme.

Auch jetzt, wo es so aussieht, als wären Menüoptionen in der DB gespeichert, habe ich noch mehr zu tun.

Ich checke meinen gesamten Code in SVN ein und stelle den Code per FTP vom Server (Beanstalk) bereit. Hierdurch werden jedoch keine Änderungen an der DB vorgenommen oder neue Plugins aktiviert.

Im Moment habe ich vor, eine Manifestdatei zu erstellen, während ich mich entwickle, um alle meine Änderungen an der Live-Site vorzunehmen.

Zum Beispiel würde die Datei lesbare Zeilen haben

Es würde Plugins zum Aktivieren, wp-Optionen zum Bewegen, Bilder zum Bewegen, Seiten zum Bewegen enthalten. Dann würde mein Plugin die Manifest-Datei erkennen und alle Änderungen an der Staging-Site vornehmen.

Sobald ich das getestet hatte und sicher war, dass ich alles bekommen hatte, konnte ich sicher sein, dass es in der Produktion funktionieren würde.

Dieses Plugin ist immer noch eine Idee, aber ich habe einen Code dafür geschrieben.

Wenn Sie nur die URL in Ihrer Datenbank ändern möchten, können Sie auch die folgende SQL verwenden.

ersetzen Sie einfach $old$ durch die alte Domain und $new$ durch die neue

update wp_postmeta set meta_value = replace(meta_value, '$old$' , '$new$') ;
update wp_posts set post_content = replace(post_content, '$old$' , '$new$') ;
update wp_options set option_value = replace(option_value, '$old$' , '$new$') ;
5
Andrew

Ich persönlich spreche dieses Problem mit meinem Projekt auf Github namens Autopress an. Ich habe noch keine perfekte Lösung, aber ich komme näher, besonders mit dem wpstage-Plugin von den wpengine-Leuten.

5
Vid Luther

Zwei Google Summer of Code-Projekte mit einem ähnlichen Ziel:

4
Jan Fabry

Ab 2017 habe ich zwei Möglichkeiten gefunden, um die Übertragung einer WordPress-Datenbank von der Entwicklung in die Produktion zu bewältigen.

WP Migrate DB Pro/WP Sync DB

https://wordpress.org/plugins/wp-migrate-db/

Mit diesen WordPress-Plugins können Sie Datenbanktabellen zwischen WordPress-Installationen verschieben, abrufen und synchronisieren. Dies ist aus vielen Gründen viel besser als ein Suchen/Ersetzen, weil es:

  • Exportiert Ihre Datenbank als MySQL-Daten-Dump (ähnlich wie phpMyAdmin)
  • Findet und ersetzt URLs und Dateipfade
  • Verarbeitet serialisierte Daten
  • Ermöglicht das Speichern auf Ihrem Computer als SQL-Datei

Ich bin ein Fan davon, für meine Arbeit bezahlt zu werden. Ich empfehle Ihnen, Herrn Brad Touesnard zu unterstützen und eine Lizenzkopie des Originals zu kaufen. WP Die Synchronisierungsdatenbank ist ein Replikat und bleibt daher immer in der Unterstützung zurück. Mit diesem Plugin ist der Prozess denkbar einfach:

  1. Installieren/aktivieren Sie das Plugin auf Ihrem lokalen Host und Ihrer Produktionsumgebung
  2. Konfigurieren Sie einen Push-Transfer von Ihrem lokalen Host/Entwicklungsserver zu Ihrer Produktion
  3. Geben Sie Regeln für die zu übertragenden Tabellen ein und definieren Sie die durchzuführenden Such- und Ersetzungsregeln
  4. Das ist es!

Suchen und Ersetzen von Datenbanken für WordPress-Datenbanken mit InterconnectIT

https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Dieses kostenlose Tool ist kein Plugin, sondern wird in Ihrem Stammverzeichnis Ihrer WordPress-Produktionsinstallation installiert. Dies ist nicht so gut wie WP Migrate DB Pro, da einige manuelle Schritte erforderlich sind, aber es ist trotzdem eine großartige Option, die konsistent funktioniert. Bei diesem Ansatz sieht der Prozess folgendermaßen aus:

  1. Sichern Sie Ihre lokale Datenbank. Dies ist unbedingt erforderlich, da wir sie bald wieder importieren werden
  2. Fügen Sie das Skript einem Ordner in Ihrem Installationsstammverzeichnis hinzu
  3. Führen Sie das Suchen und Ersetzen in Ihrer Datenbank aus
  4. Exportieren Sie Ihre Datenbank und speichern Sie sie für Ihre Produktionsumgebung
  5. Importieren Sie Ihr Backup erneut aus Schritt 1, um Ihren lokalen Host wiederherzustellen
  6. Stellen Sie eine Verbindung zu Ihrer Produktionsdatenbank her und sichern Sie diese (wie immer, bevor Sie diese Dinge tun).
  7. Importieren Sie den Export, den wir NACH dem Ausführen der Such-/Ersetzungsroutine aus Schritt 4 durchgeführt haben

Sie können schneller vorgehen, es entstehen jedoch Ausfallzeiten für Ihren Produktionsstandort, die meiner Meinung nach inakzeptabel sind. Deshalb nennen wir es Produktion, oder?

3
Kevin Leary

Auch wenn es hier nicht an guten Lösungen mangelt, dachte ich im Sinne des Teilens, ich würde mein bash deploy-Skript zum Stapel hinzufügen: https://github.com/jplew/SyncDB

SyncDB ist ein Bash-Bereitstellungsskript, mit dem sich die lokalen und Remote-Versionen einer Wordpress-Site mühelos synchronisieren lassen. Es ermöglicht Entwicklern, die in einer lokalen Umgebung (z. B. MAMP) arbeiten, Änderungen mit einem einzigen Terminalbefehl schnell auf oder von ihrem Produktionsserver zu "pushen" oder zu "ziehen".

Dieses Skript funktioniert gut mit Mark Jaquiths WP-Skeleton und nutzt mysqldump, git und rsync, um Ihre gesamte Site - Datenbank, Code und Medien - in zwei einfachen Schritten zu synchronisieren:

./syncdb
git Push hub master
3
JP Lew

Ich benutze http://wordpress.org/plugins/wp-clone-by-wp-academy/ . Es funktioniert gut!

Nur 3 Schritte:

  1. Installieren Sie das Plugin auf beiden Sites.
  2. Verwenden Sie das Plugin, um ein Backup auf der alten Site zu erstellen.
  3. Nehmen Sie die Backup-URL, die Sie erhalten, und fügen Sie sie in die Plugin-Seite der neuen Site ein. Dann können Sie loslegen und Ihre Migration ist in wenigen Sekunden abgeschlossen!

Alle URLs werden automatisch angepasst - einschließlich serialisierter Ersetzungen von Zeichenfolgen -, sodass kein Risiko besteht, Widget-Konfigurationen usw. zu verlieren.

Die einzigen Probleme, die ich hatte, waren bei einigen Websites mit größeren Datenbanken (~ 300 MB), die während des Imports der Site-Sicherung PHP Zeitüberschreitungen bei der Skriptausführung verursachten.

3
jmotes

Ich verwende den Export-Befehl von Subversion, um die WordPress-Dateien (http://core.svn.wordpress.org/tags//) sowie alle Plugins im Repository (http://plugins.svn.wordpress.org//tags) zu installieren //), dann packe einfach das Theme und die benutzerdefinierten Plugins und installiere sie normal. Sobald dies alles ohne Inhalt funktioniert, exportiere ich die Test-DB und suche/ersetze nach der URL UND dem Dateipfad (für Medien gespeichert) und importiere sie in eine leere Datenbank. Dann schalte ich einfach die Datenbankinformationen in wp-config um .php. Im Allgemeinen dauert es ungefähr 10 - 20 Minuten.

3
John P Bloch

Normalerweise logge ich mich bei phpMyadmin ein, lade die Datenbank hoch und bearbeite den Inhalt von wp_options> siteurl und wp_options> home in der erwarteten Domain. Wenn Sie URLs in Ihren Posts und Seiteninhalten aktualisieren müssen, können Sie vor dem Hochladen eine Suche/Ersetzung für die URL und den Medien-/Upload-Pfad in der .SQL-Datei durchführen. Es ist ein schneller Job.

3
Alex Costa

Ich benutze das backupbuddy Plugin jetzt schon eine Weile. Sie können eine Sicherungskopie der Datenbank und aller Dateien erstellen, diese als Zip herunterladen oder direkt per FTP an einen anderen Server senden. Es findet und ersetzt auch die URL für Sie. Normalerweise brauche ich ungefähr 5 Minuten, um den gesamten Prozess durchzuarbeiten. Und da alle Dateien komprimiert sind, ist der Upload-/Download-Vorgang viel schneller. Und nein, ich arbeite nicht für sie, aber dieses Plugin hat diesen ganzen Prozess sehr viel einfacher gemacht.

1
gdaniel

Eine weitere kostenpflichtige Lösung: das Xtreme One Theme Framework Version 1.2 mit Xtreme Backup , mit dem Sie "die Einstellungen Ihrer Childthemes, Layouts oder Widgets mit all ihren Einstellungen/Inhalten als exportieren oder importieren können XML-Datei. "

1
Jan Fabry

da ich meine Sites in IIS ausführe (ich führe auch asp.net aus, daher benötige ich Windows), verwende ich WebPI von Msft, um eine neue Instanz zu installieren. Anschließend kopiere ich die Vorlage und verwende den Import/Export zum Übertragen die Daten.

Es ist nicht perfekt, aber das Ganze dauert weniger als eine Stunde.

Natürlich wäre es schön, eine Ein-Klick-Lösung zu haben, aber das fand ich am einfachsten für mich.

1
Sruly

RAMP ist ein neues Plugin für die Bereitstellung von Inhalten von Crowd Favourite, und es sieht wirklich gut aus. Es sind allerdings 250 Dollar, also habe ich es noch nicht ausprobiert. Könnte sich aber in der eingesparten Zeit auszahlen, also überlege ich es mir.

Der große Vorteil, den es gegenüber den meisten anderen erwähnten Methoden hat, ist, dass es Beiträge, Kommentare usw. intelligent zusammenführen kann. Wenn Sie beispielsweise einen Beitrag bereitstellen, werden auch die Tags für diesen Beitrag bereitgestellt, sofern sie noch nicht in der Produktion vorhanden sind.

1
Ian Dunn

Ein Mitarbeiter hat das gefunden. Interessantes Konzept, obwohl es nicht serverübergreifend funktioniert. Ich erkunde es immer noch, aber es sieht so aus, als könnte es für eine Inszenierungsinstanz großartig funktionieren

http://code.google.com/p/deploymint/

1
Ryan Gibbons

Dies war möglicherweise nicht der Fall, als Sie die Frage stellten, aber ich habe ein paar Monate lang einen Dienst namens Blogvault verwendet, und dies ist einwandfrei gelungen. Ich habe wahrscheinlich über 50 Migrationen durchgeführt (Domains, Sub-Domains und Web-Hosts überkreuzen), kein Problem und brauche überhaupt keine Zeit.

Es ist ein kostenpflichtiger Dienst (pro Domain/Monat), aber nicht so viel.

1
Larry

Dies ist der einfachste Weg aller Zeiten: https://themes.artbees.net/docs/website-migration/
Mit nur zwei Klicks. Einer zum Exportieren, einer zum Importieren.

Dies ist möglich, indem Sie das Migrations-Plug-in All in One WP verwenden. Der obige Link zeigt, wie man es benutzt.

1
Mohsenr1

Ein weiteres nützliches Tool für die Verwaltung von Servermigrationen für Websites ist die WordPress-CLI. Dieser Artikel bietet einen guten Überblick über die Funktionen. Der Abschnitt "Suchen und Ersetzen" ist jedoch hilfreich, um alle Verweise auf die alte/dev-Website-URL zu finden :

Erweiterte WordPress-Verwaltung mit WP-CLI

1
Rick Curran

Lass mich einen meiner Favoriten verraten :-)

// proven local<->live codefork (covers local network testing, i.e. from mobile devices):
$GLOBALS['is_local'] =  
    in_array( $_SERVER['REMOTE_ADDR'], array("127.0.0.1","::1")) || // simple localhost (IPv4 IPv6)
              $_SERVER['HTTP_Host'] == 'local.workblog'          || // call by local name (adjust)
       substr($_SERVER["REMOTE_ADDR"],0,8) == '192.168.';           // (mobile) device in local network

$table_prefix  = NULL; // ensure scope

if ( $GLOBALS['is_local'] )  // LOCAL fork ------------------------
{
        ....
}
else  // STAGE/LIVE fork -------------------
{

... und dann arbeiten Sie sich von dort aus vor. DB_NAME, DB_USER ... table_prefix. Persönlich schalte ich ALTERNATE_WP_CRON auf lokal ein (um einige ärgerliche Warnungen zu vermeiden), WP_DEBUG auf beiden (wenn Sie kein Entwickler sind) oder nur auf live (wenn Sie es sind), eine andere ini_set('display_errors', '0'); für live könnte es auch tun gut, und zuletzt, wie oben erwähnt: WP_HOME und WP_SITEURL zur jeweiligen lokalen/aktuellen URL.

Das ist so ziemlich alles, nichts bleibt über dem klassischen WordPress 'Das ist alles, hör auf zu bearbeiten!' line ...

Der 192.168. Teil ermöglicht es Ihnen, einige lokale Tests (d. h. von Pads oder Telefonen) in Ihrem lokalen Netzwerk durchzuführen.

$ GLOBALS ['is_local'] kann sich auch bei der Theme-Entwicklung als nützlich erweisen, um zusätzliche Debug-Ausgaben usw. zu erhalten.

1
Frank Nocke

Nachdem ich dieser Antwort eine Weile gefolgt bin, habe ich mein eigenes kleines Plugin - Pitta Migration erstellt. Die Gründe dafür sind:

  1. Von allen hier getesteten Ideen ist die einfachste die Option WP_HOME und WP_SITEURL
  2. Ich benutze diese dann, um die zwei passenden wp_options URLs zu setzen - das deckt ab, wenn Plugins/Themes diese ignorieren
  3. Dies gibt mir 100% iges Vertrauen in das, was in meiner Datenbank geändert wird
  4. Dies funktioniert auch plattformübergreifend (all diese Bash-Skripte laufen unter Windows nicht gut)
  5. Es ist leicht zu verstehen, was das Plugin macht
  6. Über die beiden Konstanten hinaus gibt es keine Konfiguration. Führen Sie einen mysqldump- und einen mysql-Import in Ihre lokale Datenbank durch, und das Plug-in erkennt, dass sich die Konstante und die Tabelle unterscheiden, und aktualisiert sie entsprechend
  7. Kein Suchen und Ersetzen von Text
  8. Keine Chance, Ihre Datenbank zu knacken - ich verwende das WordPress-Datenbankobjekt, um zwei Aktualisierungen durchzuführen und nichts weiter
  9. Es spielt sich gut mit Dingen wie WordPress Skeleton , bei denen Sie alles in der Quellcodeverwaltung haben und eine lokale Konfiguration festlegen können
  10. Ich habe es in das WordPress-Plugins-Verzeichnis und auf Github gestellt, damit es kostenlos, vollständig OpenSource ist, für Sie einfach aufzuteilen und einfach zu installieren ist
  11. Sobald es installiert ist, können Sie es vergessen und es sollte "einfach funktionieren" - es gibt Ihnen einen kleinen Hinweis darauf, dass die Datenbank geändert wurde
  12. Es sollte mit jedem Backup/FTP/Restore-Prozess funktionieren
0
icc97

Wenn Sie versuchen, eine kontinuierliche Synchronisierung zu erreichen, empfehle ich, rsync zusammen mit einem benutzerdefinierten Cron-Job zu verwenden, um URLs oder standortspezifische Daten neu zu schreiben.

0
user92899

Der einfachste Weg ist meiner Meinung nach die manuelle Übertragung. Kopieren Sie einfach den Ordner wp-content und die Datei wp-config.php auf den neuen Host. Exportieren Sie die Datenbank vom alten Host und importieren Sie sie in eine neue Datenbank des neuen Hosts.

In der neuen Host-Datenbank gehen Sie zur wp-Optionstabelle und ändern dort die Site-URL und die Blog-URL in Neue Host-Adresse vom alten Host. wie von http: // localhost/wp bis http://example.com

Jetzt in der wp-config-Datei ändern Sie einfach die Informationen von Datenbank und Benutzer mit neuen Host-Informationen.

Loggen Sie sich jetzt in den neuen wp-admin ein und gehen Sie zu den Einstellungen und speichern Sie den Permalink.

Du bist fertig. Ich denke, das ist einfach, ohne Plugins zu verwenden.

Ich habe verschiedene Arten von Plugins ausprobiert und alle haben viele Arten von Problemen.

Ich bevorzuge diese einfache manuelle Übertragung, die meiner Meinung nach einfacher ist.

0