Entwickeln, Testen und Freigeben

10

Wie entwickeln, testen und implementieren Sie Ihre Wordpress-Websites?

Es ist immer ein kleines Problem, das ich finde, besonders wenn es um Datenbanken geht - hauptsächlich aufgrund der Tatsache, dass für eine Test-Site eine ganz neue Datenbank bereitgestellt werden muss, die manchmal genau gleich sein kann, außer dass alle Links zu geändert werden URL der Test-Site anstelle der Live-Site.

Ebenso müssen alle Uploads, die Benutzer seit dem letzten Mal hochgeladen haben, als Sie einen Fehler beheben oder etwas Neues entwickeln mussten, auf die Testseite kopiert werden.

Wie machen es andere? Ertragen Sie es einfach mit dem Faff? Verwenden Sie clevere Versionskontrollsysteme, die helfen?

Vielen Dank

Thomas Clayson
quelle
Wenn Sie ein System erstellen , das sich um das Ändern Ihrer Hosts-Datei dreht , müssen Sie sich nie mit Ihrer Test-DB herumschlagen. ( wordpress.stackexchange.com/a/10943/9142 )
Alexander Bird

Antworten:

12

Es gibt ein bisschen persönliche Philosophie, die in einen Bereitstellungsworkflow einfließt. Es ist keine einfache Frage, die Sie direkt beantworten können, ohne Ihre Erfahrung mit Servern und Versionskontrolle, Ihr Betriebssystem, Hosting, Kundenerfahrung und Technologiekultur usw. zu kennen.

  1. Hier ist eine ähnliche Frage , die viele Erklärungen hat.
  2. Informationen zur Bereitstellung von Inhalten finden Sie im RAMP-Plugin von Crowd Favorite .
  3. WP Hackers ist ein großartiger Thread, um gute Informationen zu Bereitstellungen zu finden.

Persönlich stelle ich sicher, dass ich absolute URLs in meinen Themen niemals fest codiere. Verwenden Sie bloginfo () oder codieren Sie relative URLs. Ich verwende viele Bedingungen in meiner Datei wp-config.php. Hier ist eine Vanille-Version meiner wp-config-Änderungen.

switch($_SERVER['SERVER_NAME']){
    case 'dev.yourdomain.com':
        $db_host = '';
        $db_pass = '';
        //define debugging
        break;
    case 'stage.yourdomain.com':
        $db_host = '';
        $db_pass = '';
        break;
    default: //Live
        $db_host = '';
        $db_pass = '';
}
define('DB_PASSWORD', $db_pass);
define('DB_HOST', $db_host);

//You could also set this as a variable above
define('WP_HOME', 'http://'.$_SERVER['SERVER_NAME']));
define('WP_SITEURL', 'http://'.$_SERVER['SERVER_NAME']));

Ich arbeite an vielen Seiten, die dem folgen

  • lokal (persönliches Hacken :) auf meinem Laptop-Webserver)>
  • dev (Testen auf Client-Server)>
  • Bühne (stabile Quelle für QA - Bearbeitung von Inhalten)>
  • Produktion (Live-Site)

Zuletzt würde ich vorschlagen, dass Sie ein Versionierungstool verwenden, um Ihre Bereitstellungen wie GIT oder SVN zu unterstützen. Dies vereinfacht den Prozess erheblich und bewahrt die Quellintegrität zwischen den Umgebungen. Das Festschreiben an Ihren lokalen Standort kann problemlos über die Befehlszeile auf der Bühne und in der Produktion aktualisiert werden. Am besten definieren Sie während der Ermittlung, welche Versionskontrolle Sie und der Client von Anfang an verwenden, wenn Entwickler an dem Projekt arbeiten. Ich persönlich benutze GIT für meine Versionskontrolle. Wenn ein Client jedoch SVN verwendet, mache ich eine Mischung aus beiden auf meinem lokalen Konto, damit ich ein Repo für mich selbst pflege und mich gleichzeitig zu seinem Repo verpflichte.

Wir haben selten Probleme bei der Migration von einer Umgebung in eine andere. Wir suchen / ersetzen in der Datenbank, um die URL für eingebettete Medien usw. entsprechend zu ändern.

Brian Fegter
quelle
Das ist sehr nützlich! :) Vielen Dank. Duplizieren Sie die Datenbank jedes Mal, wenn Sie sie auf einem der verschiedenen Server bereitstellen, von der Live-Site? Sie geben an, dass Sie zur Qualitätssicherung und Inhaltsbearbeitung auf einem Staging-Server (stage.domain.com) bereitstellen. Was passiert, wenn sich die Datenbank ändert, während Sie den Stage Server auf der Live-Site ausführen? dh Sie oder Ihr Kunde melden sich bei Stage an und aktualisieren einige Inhalte, aber gleichzeitig veröffentlicht ein Mitwirkender einen neuen Artikel auf der Live-Site? Führen Sie die Inhaltsänderungen auf der Live-Site nur WIEDER durch? Wie gehen Sie mit Änderungen der Datenbankstruktur um?
Thomas Clayson
Entschuldigung für alle Fragen! : p Ich bin sehr dankbar für Ihre Zeit und Hilfe.
Thomas Clayson
Bei einem neuen Funktionsumfang können Sie von prod> stage abrufen. Fügen Sie den Inhalt für die neue Funktion hinzu und drücken Sie dann "Bühne zurück"> "Produkt". Von dort aus ist stage eine High-Fidelity-Kopie von prod und Sie können stage> dev ziehen. Es kommt nicht oft vor, dass wir die DB von der Bühne zurückziehen. Der Großteil des Austauschs mit der DB findet von Phase zu Phase statt, es sei denn, ein Feature ändert die Datenbankarchitektur.
Brian Fegter
Wenn Sie Stage für die Bereitstellung von Inhalten verwenden möchten und niemals Prod berühren möchten, können Sie das RAMP-Plugin überprüfen, das ich zuvor veröffentlicht habe.
Brian Fegter
+1 alles oben Genannte, mit der Maßgabe, dass einige irritierende Plugins darauf bestehen, URLs in serialisierten Arrays zu speichern, was das Verschieben von Dingen von der Datenbank einer Umgebung in eine andere durcheinander bringen kann. Das Problem ist, dass serialisierte Arrays Zeichenfolgenlängen speichern und bei Änderung der Länge abgebrochen werden. Daher würde ich empfehlen, die Domain-Namen der Umgebung möglichst gleich zu halten, z. B. dev.example.com, tst.example.com, www.example.com usw.
webaware