@ Insanity5902 : Die Bereitstellung einer WordPress-Site von einer Box zu einer anderen 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 nenne es bequemerweise " WP Migrate Webhosts ". 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:
- Zunächst übernimmt der Entwickler das Hochladen aller geänderten Theme- und Plugin-Dateien über FTP.
- Anschließend wird die Entwicklungs-MySQL-Datenbank vollständig und endgültig auf den Testserver hochgeladen
- Anschließend wird das Plugin ausgeführt, um alle Verweise von der vorherigen Domäne auf die neue zu migrieren. (Mein Plugin versucht nicht , das Zusammenführen neuer Datenbankfelder oder Tabellen mit Live-Daten zu lösen. Dies ist ein viel größeres Problem, dessen Lösung ich nicht genau weiß .)
Sie können das Plugin von meiner Website herunterladen 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 Bewahre dieses Plugin online auf, bis ich es auf WordPress.org veröffentliche. Danach solltest du dort danach suchen.
Um es zu nutzen nehmen Sie einen anderen Ansatz in Ihrem wp-config.php
diesem normalen durch die vier (4) definiert Auskommen DB_NAME
, DB_USER
, DB_PASSWORD
und DB_HOST
und stattdessen Registrierung die Standardeinstellungen für Webhoster und dann über die einzelnen Webhost Registrierung info selbst. So wp-config.php
könnte dieses Segment 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 routbaren .dev
Top-Level-Domains eingerichtet habe, um die tägliche Entwicklung zu vereinfachen. Auf dem Mac macht VirtualHostX dies zu einem 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 ich konnte zu machen , aber leider bedarf es diese beide kryptischen require_once()
Zeilen vor und nach dem Block des Registrierungscode Webhost , da es keine Möglichkeit gab , für mich „an Haken “ Wordpress vor wp-config.php
genannt wird.
Sobald Sie Ihr Konto aktualisiert haben, können wp-config.php
Sie einfach die URL-Verknüpfung verwenden wp-migrate-webhosts
, um wie folgt zum Administratorbildschirm zu gelangen:
http://example.com/wp-migrate-webhosts
Die oben werden Sie zu einem Admin - Bildschirm wie die folgenden nehmen , die ein gutes Stück von Beschreibungstext hat und ermöglicht es Ihnen , die Migration aus einer der anderen Webhost - Domains mit einem einzigen Klick nach den Domänen der Auswahl von (zu migrieren HINWEIS : Dieses Beispiel zeigt , geht aB von Test / Bühne / Live - Server für die lokale Entwicklung , aber seien sie versichert , es wandern kann TO jeder Domäne , in der es zu lokalisierenden passiert. das bedeutet auch das Plugin groß sein wird eine bestehende Live - Website für die Aufnahme und schnell eine lokale Entwicklungsumgebung arbeitet immer! ):
Wenn es nicht klar , „ Migration “ in diesem Zusammenhang alle Verweise in der aktuellen Datenbank zu aktualisieren bedeutet für die aktuell definierten Webhost angemessen zu sein (und „ Strom “ wird schnupperte durch Inspektion $_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 migrate_webhosts
Aktion, die vom Webhost und vom Webhost zum Webhost gesendet wird, als Array von Metadaten einbinden Ausführen aller erforderlichen Schritte in der Datenbank mithilfe von SQL oder anderen für die Migration relevanten WordPress-API-Funktionen. 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.
Sie können auch feststellen, dass meine Migrationen in Randfällen fehlschlagen, die ich nicht getestet habe, und Sie können mir möglicherweise dabei helfen, das Plugin 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 entwickelt , benutzer definieren Webhost Metadaten zusätzlich zu denen , zu akzeptieren , sie erkennt , wie database
, user
, password
, host
, domain
etc. Ein perfektes Beispiel könnte sein , googlemaps_apikey
wo Sie eine der verschiedenen API - Schlüssel für jede Domain , die Ihre Google Map Plugin - Anforderungen speichern um korrekt zu funktionieren (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 Ein googlemaps_apikey
Element in Ihrem register_webhost () -Array und ein kleiner benutzerdefinierter migrate_webhosts
Hook können Sie effektiv beseitigen!
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.
PS: Wenn Sie sich für diese 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.
PPS 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.