Momentan entwickle ich mein WordPress lokal, übergebe meinen Code mit GitHub und Git und stelle dann SSH auf meinen Server und aktualisiere meinen Code mit "git pull". Ist dies eine gute Option für die Code-Bereitstellung auf einer WordPress-Site (in diesem Fall habe ich natürlich Zugriff auf meinen Server auf Root-Ebene.) Ich kenne Dinge wie Capistrano, aber wäre das ein Übermaß für die Bereitstellung auf einer WordPress-Site? Wie kann ich Git / GitHub in diesem Fall optimal nutzen?
deployment
git
github
Matt
quelle
quelle
Antworten:
Ich benutze Git dafür und finde, dass es wirklich gut funktioniert. Ein paar Vorschläge:
.gitignore
Datei hinzu..gitignore
Datei hinzu, um zu verhindern, dass Ihre WordPress-Entwicklungseinstellungen Ihre Produktionseinstellungen überschreiben.Erwägen Sie, einen Git-
post-receive
Hook hinzuzufügen, um Ihre Updates automatisch in das Verzeichnis zu checken, in dem Sie WordPress über Ihren Webserver veröffentlichen (z/var/www
. B. ). Auf diese Weise können Sie nur die Dateien selbst auschecken und verhindern, dass Git-Metadaten in den Dokumentenstamm Ihres Webservers gelangen. Außerdem können Sie dem Hook nach dem Empfang Berechtigungsänderungen hinzufügen, damit Ihre Berechtigungen jedes Mal konsistent bleiben. Ein Beispiel ist unten enthalten:quelle
unset GIT_INDEX_FILE
einem Tippfehler?Ich kann die Einrichtung von Capistrano nur wärmstens empfehlen - es ist beim ersten Mal ein bisschen Vorarbeit, aber danach können Sie es problemlos für neue Setups verwenden.
Die Hauptvorteile sind
Ich füge eine Reihe von Capistrano-Skripten hinzu, um Ihnen zu zeigen, wie ich die Dinge einstelle.
Capfile
deploy.rb
und schließlich eine Beispiel-Umgebungsdatei (wenn Sie das mehrstufige Juwel verwenden, können Sie für jede Phase Ihrer Umgebung eine davon haben, z. B. lokal, inszeniert, produziert)
config / local.rb
Diese Dateien funktionieren möglicherweise nicht ohne Anpassungen, und Sie benötigen einige grundlegende Capistrano-Kenntnisse, helfen aber hoffentlich einigen Menschen.
Dies war das erste Tutorial, mit dem ich Capistrano und WordPress zum Laufen gebracht habe: http://theme.fm/2011/08/tutorial-deploying-wordpress-with-capistrano-2082/
quelle
git post-receive
Haken ist der Weg zu gehen!Ich habe tatsächlich eine WordCamp-Präsentation zu diesem Thema gemacht. Anstatt mich zu wiederholen, hier ist ein Screencast davon und hier ist ein sehr einfaches Bereitstellungsskript , um das zu begleiten, was ich besprochen habe.
Kurz gesagt, ich verwende GitHub, um das Repo zu hosten, und verwende einen Webhook, um Änderungen basierend auf der Git-Referenz zu implementieren. Dies ermöglicht Ihnen die Verwendung des Git-Verzweigungsmodells von Vincent Driessen und eröffnet Ihnen unbegrenzte Möglichkeiten für Webheads, Staging-Server, Testserver usw. mit automatisierter Bereitstellung. Ich beschreibe auch, wp-config.php unter Versionskontrolle zu halten und gleichzeitig separate Entwicklungs- / Produktionsversionen zu verwalten (durch Umbenennen der Dateien und Symlinking).
quelle
Ich weiß, dass diese Frage etwas älter ist, aber da ich sie hier nicht als Antwort gesehen habe, möchte ich Ihnen mitteilen, was ich normalerweise für Single-Site-Git-basierte Setups und Bereitstellungen mache und es funktioniert wirklich gut, auch mit mehreren Geräte, Standorte und mit mehreren Entwicklern (alle haben ihre eigenen lokalen Repos, in denen sie arbeiten, wie es für Git üblich ist).
Ich kann das folgende Setup wärmstens empfehlen:
Es wird auch in beschrieben (wenn Sie eine zweite Ressource benötigen, um Ihren Kopf darum zu wickeln):
Es funktioniert im Grunde (mit mindestens drei Repos) durch:
Wenn die Arbeit erledigt ist, drücken Sie gegen das Remote-Bare-Repo, von dem Sie geklont haben. Das Bare Repo hat Hooks, die mit dem Live-Repo synchronisiert werden können (in den oben genannten Codes Prime ).
Als Wordpress-spezifische Einstellungen im Repo habe ich folgendes
.gitignore
:Der Rest inkl. Die Plugin und Theme Konfiguration behalte ich unter Versions- / Konfigurationskontrolle. Auf diese Weise kann ich Änderungen einfach nachverfolgen und den Code überprüfen, bevor ich ihn live verwende. Ich kann mit meinen eigenen Änderungen auch einfacher gegen entfernte Bäume zusammenführen. Das ist besonders nützlich für den Wordpress-Kern, der auf Github verfügbar ist .
Dies funktioniert ziemlich gut für die meisten meiner Wordpress-Bedürfnisse. Das Bare Repo verhindert, dass Sie widersprüchliche Änderungen vornehmen. Es wird auch zuerst mit einer Remote-Kopie synchronisiert, bevor die Live-Site aktualisiert wird. Das bedeutet, dass die Aktualisierung der Live-Site normalerweise ziemlich schnell ist. Aufgrund der Hooks können Sie Wordpress-Update-Hooks auch nachträglich aufrufen.
Wenn Sie nicht experimentiert haben, wie viel dies mit Github-Hooks verbessert werden kann, brauche ich sie normalerweise nicht, da der Code der lokalen Versionskontrolle unterliegt, nicht Github.
Um ein solches System zum ersten Mal einzurichten, sollten Sie sich etwas Zeit nehmen, um zu prüfen, ob auf Ihrem Remote-Host alle Tools verfügbar sind:
Die erstmalige Inbetriebnahme sollte innerhalb von ein bis zwei Stunden inkl. die ganze Umgebung und Sie veröffentlichen zunächst Push.
Abhängig von Ihrem Host möchten Sie möglicherweise auch das
.git
Verzeichnis vor dem Webzugriff schützen. Hier ist ein Beispielcode.htaccess
, mit dem Wordpress sogar in einem Unterverzeichnis platziert wird, wodurch Platz im Repository bleibt, der nicht online veröffentlicht wurde (nützlich):Kurz gesagt, alles, was sich nicht im öffentlichen Verzeichnis befindet, ist nicht online. Innerhalb des öffentlichen Verzeichnisses kann sich beispielsweise die WordPress-Codebasis befinden, für die
.htaccess
Sie dann dort benötigen:Dies verhindert den direkten Zugang zur Öffentlichkeit . Einen Teil dieses .htaccess -foo finden Sie hier: Anforderungen an .htaccess sollten 404 anstelle von 403 zurückgeben . Für die Umgebungsvariablen müssen Sie testen, ob dies in Ihrer Umgebung funktioniert. Außerdem müssen Sie entscheiden, ob Sie dies unter Versionskontrolle stellen oder nicht.
Wenn Sie mehr Kontrolle über das Hosting haben, können Sie hier mehr Dinge tun (und anders / mehr optimiert). Die obigen Beispiele richten sich an typische Shared-Hosting-Umgebungen (die GIT bieten, einige Benutzer sagen, Sie können es einfach als Ihre eigene installieren Nun, normalerweise bitte ich meine Hoster, solche bereitzustellen, weil ich es bevorzuge, wenn sie darauf achten, dass ich sie dafür bezahle.
Negativ zu vermerken ist, dass einige der häufigsten Probleme auch in den anderen Antworten umrissen sind. Eine Sache, auf die ich nicht stolz bin, ist, dem Entwicklungshost eine Änderung an seiner Hostdatei zu geben, damit der Datenbankserver auf die Entwicklungskopie verweist. So können Sie eine Datenbankkonfiguration beibehalten. Nicht wirklich cool esp. wegen der Anmeldeinformationen.
Automatische Backups
Normalerweise kümmert es mich hier nicht sonderlich, sondern es werden tägliche Backups auf den entfernten Systemen ausgeführt, die inkrementell an einem anderen entfernten Ort gespeichert werden. Das ist einfach und billig und erlaubt Ihnen, sowohl die Wordpress-Installation als auch die Datei-Uploads, die Datenbank und das Git-Repo wiederherzustellen . Auch für meine Backup-Befehle bin ich vielleicht nicht ganz in Ordnung, aber diese funktionieren für mich:
Was ich hier vorschlage, ist, dass Sie die Prozesse rund um Ihre Wordpress-Installation von Wordpress fernhalten. Sie müssen auf einem bestimmten System ausgeführt werden, sodass Sie sie normalerweise nicht in der Anwendung haben (z. B. kann die Anwendung ausfallen , diese müssen jedoch weiterhin funktionieren).
Aktiviert für Teamwork
Ein weiterer Vorteil ist, dass Ihre Website bereits für Teamarbeit aktiviert ist. Dank des zusätzlichen Bare Repo können Sie nicht viel falsch machen und Sie können sogar entfernte Zweige mit Ihren Kollegen teilen, abgesehen von einem Master- oder Live-Zweig.
quelle