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:
- die Website auf dem Live-Host unter git setzen,
- Erstellen Sie ein neues Bare-Git-Repository auf dem Live-Host.
- Und dann verzweigen Sie vom nackten Repository zu Ihren lokalen Entwicklungs-Git-Repos.
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
:
# uploads are data, excluded from source tree
wp-content/uploads/
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:
- SSH-Zugang
- GIT
- Ein privates Verzeichnis, in das Sie Dateien und Unterverzeichnisse ablegen können (zB für Ihr nacktes Git Repo)
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):
Options -Indexes
# fix trailing slash for .git / make it disappear + .gitignore and similar files.
RedirectMatch 404 ^/\.git(.*)$
# mask 403 on .ht* as 404
<Files ~ "^\.ht">
Order Deny,Allow
Allow from all
Satisfy All
Redirect 404 /
</Files>
RewriteEngine On
RewriteBase /
# map everything into public and set environment var
# to tag the request being valid
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule ^(.*)$ /public/$1 [E=sitealias:set,L]
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:
RewriteEngine On
# mask as 404 if directly accessed
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule .* - [L,R=404]
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:
mysql: mysqldump --host=%s -u %s --password=%s %s| gzip > %s
git : git gc
git bundle
files: tar --force-local -czf %s %s
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.