Eine Einführung in die Bereitstellung von WordPress mit Mina

Als PHP-Anwendung wird WordPress normalerweise auf eine sehr alte Weise implementiert: das Hochladen von Dateien über FTP.

Wir verfügen über einige Bereitstellungstools, die jedoch häufig Ruby-Fertigkeiten erfordern. Ein beliebtes, leistungsfähiges Werkzeug ist beispielsweise Capistrano, aber es ist auch sehr umfangreich mit vielen Ruby / Rails-Funktionen. Ich denke auch, dass es ein bisschen schwierig ist, Capistrano für einen PHP-Entwickler ohne Ruby-Kenntnisse zu installieren.

Welche Optionen haben wir als WordPress-Entwickler??

In diesem Tutorial werde ich Ihnen Mina vorstellen: Ein kleines, leichtes Werkzeug zielt auf eine schnelle Bereitstellung und Serverautomatisierung ab.

Warum brauchen wir eine automatisierte Bereitstellung??

Die automatisierte Bereitstellung erspart uns die Zeit, Wiederholungsaufgaben auszuführen, wenn wir unser WordPress-Projekt bereitstellen. Es hilft auch, Ausfallzeiten während der Bereitstellung zu minimieren und menschliche Fehler wie fehlende Dateien, Hochladen falscher Dateien usw. zu vermeiden.

Dieser Automatisierungsprozess kann von mehreren Entwicklern im Team gemeinsam genutzt werden, wodurch eine einzigartige Methode für die Bereitstellung im gesamten Team entsteht. Ein Unternehmen wäre beinahe bankrott gegangen, weil es keinen guten Bereitstellungsprozess gab. Eine automatisierte Bereitstellungsmethode ist normalerweise an ein Quellcodeverwaltungssystem gebunden: Git, SVN, Mercurial usw..

Im Rahmen dieses Tutorials werfen wir einen Blick auf Git. Wenn Sie ein Git-Repository hatten, können Sie es gerne verwenden. Ansonsten holen Sie sich ein kostenloses bei BitBucket oder GitLab. Mit diesen Services können Sie private Git-Repositorys erstellen.

Bevor wir weitergehen, stellen Sie sicher, dass wir die Anforderungen erfüllen:

  • eine SSH-Verbindung
  • ein Git-Repository
  • Oemission zum Bearbeiten und Ändern der Webserver-Konfiguration.

[Anmerkung] Ich gehe davon aus, dass Sie WordPress auf Apache ausführen und PHP als Apache PHP-Modul installieren. Wenn Sie PHP mit FPM oder CGI verwenden, seien Sie bitte flexibel, wenn Sie über unseren Webserver oder unseren PHP-Prozess sprechen. [/Hinweis]

Bereitstellung mit Git Hooks

Die allgemeine Idee ist, dass Git beim Push auf den Server eine URL aufruft, die ein PHP-Skript referenzieren kann, um die Bereitstellung durchzuführen, indem der neueste Code aus dem Repository abgerufen oder zusammengeführt wird.

Während dies perfekt funktioniert und sehr nützlich ist, deckt es ein Loch auf: Wir haben eine Geheimtür auf dem Server geöffnet. Wenn jemand diese URL kennt, kann er die Bereitstellung manuell auslösen. Eine weitere Gefahr besteht darin, dass wir Features für die Bereinigung, für das Rollback, für das Sperren (um sicherzustellen, dass nur ein einzelner Bereitstellungsprozess ausgeführt wird) und so weiter erstellen muss.

Wenn wir anfangen, diese Funktionen zu codieren, erfinden wir das Rad neu. Warum verwenden Sie kein vorhandenes Werkzeug??

Was ist Mina??

Mina ist ein Bereitstellungswerkzeug, das darauf abzielt, sehr schnell zu sein. Sie werden überrascht sein, wie schnell es ist, wenn Sie es versuchen. Laut Mina-Website:

Wirklich schnelles Deployer- und Server-Automatisierungstool. Wirklich verdammt schnell.

Einfach gesagt, hier 'wie man an Mina denkt: Anstatt sich beim Server anzumelden und eine Folge von Befehlen einzugeben, die bereitgestellt werden sollen. Mina generiert ein Shell-Skript, das aus diesen Befehlen besteht.

  1. Erstellen Sie ein neues Verzeichnis,
  2. Ziehe den neuesten Code in dieses Verzeichnis,
  3. Machen Sie symbolisch auf gemeinsame Ressourcen aufmerksam,
  4. Verweisen Sie auf das öffentliche Verzeichnis auf dieses neue Verzeichnis,
  5. Bereinigen Sie die alten Daten.

Mina lädt dieses Shell-Skript auf den Server hoch und führt es aus. Dieser Generierungsprozess wird auf Ihrem lokalen Computer ausgeführt.

Alle Mina-Tasks sind nur eine Folge von Shell-Befehlen. Da es sich nur um Shell-Befehle handelt, haben Sie keinen Zugriff auf einen fantastischen Ruby-Helfer wie in Capistrano oder Vlad.

Eine andere Möglichkeit, an Mina zu denken, ist folgende: Mina organisiert Ihre Shell-Befehle, die Sie auf einem entfernten Computer ausführen müssen, in Codeblöcken (die als Mina-Tasks bezeichnet werden)..

Schritt 1. Bereiten Sie das Server-Layout für Mina vor

Mina erfordert ein Verzeichnislayout für Ihre Website. Sie müssen das öffentliche Verzeichnis Ihres Webservers ändern. Nehmen Sie zur Vereinfachung an, dass Ihre aktuelle Serververzeichnisstruktur wie folgt ist.

 /var/www/ihredomain.com/ # Das öffentliche Verzeichnis, in dem sich WordPress befindet, | - index.php | - wp-admin | - wp-content | - wp-include | - wp-login.php | - wp-enable. php | -… .

yourdomain.com verweist auf /var/www/ihredomain.com/, und index.php Die Datei, die sich in diesem Verzeichnis befindet, wird ausgeführt und reagiert auf Ihre Anfrage. Mit Mina müssen Sie das Verzeichnislayout ein wenig ändern.

Mina erwartet diese Struktur:

 /var/www/ihredomain.com/ # Der deploy_to-Pfad | - Releases / # Enthält Releases, ein Unterverzeichnis pro Release | | 1 / # Jede WordPress-Bereitstellung befindet sich hier | 2 / # Jede WordPress-Bereitstellung befindet sich hier | 3 / # Jede WordPress-Bereitstellung befindet sich hier | -… | - shared / # Enthält Dateien, die von Releases gemeinsam genutzt werden: Protokolldatei, Konfiguration,… | | - logs / # Protokolldateien werden normalerweise hier gespeichert -… | - current / # Ein Symlink zum aktuellen Release in Releases. Dies ist ein neuer öffentlicher Ordner

Mina fügt drei Verzeichnisse hinzu:

  1. Veröffentlichungen: Jede Bereitstellung wird in separaten Verzeichnissen innerhalb dieses Ordners gespeichert, sodass wir Version 1, Version 2, Version 3 usw. verwalten können.
  2. geteilt: Enthält allgemeine Dateien / Ordner, die von mehreren Bereitstellungen gemeinsam genutzt werden. Ein Beispiel ist WP-Inhalt / Uploads. Bei jeder Bereitstellung wird ein neues Verzeichnis erstellt WP-Inhalt / Uploads das ist anders als vorher WP-Inhalt / Uploads Verzeichnis. Und der Inhalt ist weg. Daher verwenden wir ein gemeinsames Verzeichnis: freigegebene / WP-Inhalte / Uploads. Wir werden haben: /var/www/ihredomain.com/releases/7/wp-contents/uploads ist ein symbollink verweist auf /var/www/ihredomain.com/shared/wp-content/uploads.
  3. aktuell: zeigt auf die aktuelle Version. Beispiel: /var/www/ihredomain.com/current verweist auf /var/www/ihredomain.com/releases/7.

Laut Wikipedia:

Ein symbolischer Link (auch Symlink oder Softlink) ist ein spezieller Dateityp, der einen Verweis auf eine andere Datei oder ein anderes Verzeichnis in Form eines absoluten oder relativen Pfads enthält und die Auflösung des Pfadnamens beeinflusst. Symbolische Verbindungen waren bereits 1978 in Minicomputer-Betriebssystemen von DEC und RDOS von Data General vorhanden. Heute werden sie vom POSIX-Betriebssystemstandard unterstützt, den meisten Unix-ähnlichen Betriebssystemen wie FreeBSD, GNU / Linux und Mac OS X sowie Windows-Betriebssystemen wie Windows Vista, Windows 7 und in gewissem Maße auch unter Windows 2000 und Windows XP in Form von Shortcut-Dateien.

Yourdomain.com Jetzt muss auf zeigen /var/www/ihredomain.com/current anstatt /var/www/ihredomain.com. Der Webserver führt die Datei aus /var/www/ihredomain.com/current/index.php wenn du besuchst http://ihredomain.com. Wir müssen den Webserver (Apache, Nginx) neu konfigurieren, um darauf hinzuweisen Dokroot(oder öffentliches Verzeichnis) dazu aktuell Verzeichnis.

Ändern Sie DocumentRoot für Apache

Öffne dein /etc/httpd/conf/httpd.conf, finde das Dokument Root Zeile und ändern Sie es in.

 DocumentRoot /var/www/ihredomain.com/current

Dokumentstamm für Nginx ändern

Bearbeiten Sie Ihre /etc/nginx/nginx.conf und aktualisieren Sie Ihre Wurzel Definition.

 Server Servername log.axcoto.com www.log.axcoto.com; root /srv/http/domain/log.axcoto.com/current/; #…

Schritt 2. Mina installieren

Mina ist ein Ruby-Edelstein, daher müssen Sie Ruby installieren. Die Installation ist ziemlich einfach. Wenn Sie OS X oder Linux verwenden, besteht die Möglichkeit, dass Sie Ruby bereits installiert haben. Ansonsten können Sie den folgenden Tutorials folgen, um Ruby zu installieren:

  • http://net.tutsplus.com/tutorials/why-you-should-use-rvm/
  • http://net.tutsplus.com/tutorials/ruby/how-to-install-ruby-on-a-mac/

Sobald Sie Ruby haben, fahren Sie mit der Installation von gem fort. Renn einfach:

 $ gem mina installieren

Stellen Sie sicher, dass Mina ordnungsgemäß ausgeführt wird.

 $ mina -V

Sie sollten etwas ähnliches sehen.

 Mina, Version v0.3.0

WordPress-Bereitstellung mit Mina

PHP-Anwendungen werden weniger sicher, weil falsche Berechtigungen festgelegt werden.

Nehmen Sie zum Beispiel WordPress: Ich möchte ein Plugin hochladen oder ein Design hochladen, um es auszuprobieren. Zu diesem Zweck lade ich sie in das WordPress-Dashboard hoch. Wenn ich oder einer der Site-Administratoren das Administratorkennwort verliert, steigt jemand ein und kann eine PHP-Datei hochladen und als Plug-In ausführen und nicht nur meine Site hacken, sondern auch meinen gesamten Server.

Ein typisches Beispiel: Sie können eine Datei in / etc lesen, die Serverkonfiguration lernen und dann Shell-Befehle über PHP ausführen.

Ich denke, wir sollten eine WordPress-Instanz als schreibgeschützte Installation behandeln. Bei der Theme- und Plugin-Installation können Sie die Installation durchführen, indem Sie Dateien lokal hinzufügen und dann über Mina erneut bereitstellen. Die Bereitstellung mit Mina ist kostengünstig und sehr schnell. Auf meinem 512-MB-RAM-DigitalOcean-Server dauert die Bereitstellung weniger als 30 Sekunden.

Für von Benutzern hochgeladene Inhalte (z. B. Bilder und Audiodateien) werden diese mit einem Link außerhalb des Quellcode-Verzeichnisses verknüpft. Am besten können Sie den Server so konfigurieren, dass die Ausführung von PHP-Dateien in diesem von Benutzern hochgeladenen Inhaltsordner verhindert wird. Dies ist jedoch nicht Gegenstand dieses Tutorials.

Im Moment werden wir versuchen, Mina für die schnelle Bereitstellung und das Hinzufügen eines Designs oder eines Plugins zu verwenden. Dies tun wir lokal, sodass wir vermeiden können, dass der Webserver in diese Verzeichnisse schreiben darf.

Schritt 1. Mina mit WordPress einrichten

Wie zu Beginn des Lernprogramms angegeben, benötigen Sie ein Git-Repository für Ihre WordPress-Site. Lasst uns zusammenfassen, was wir hier brauchen:

Nehmen wir an, dass…

  1. Ihr WordPress-Projekt befindet sich in ~ / Site / wordpress.
  2. Ihr WordPress-Git-Repository lautet [email protected]/ihrName/wordpress
  3. Sie können über ssh auf Ihren Server zugreifen, indem Sie unter yourdomain.com einen Account mit Ihrem Namen aufrufen

Wenn Sie mit Git nicht vertraut sind, lesen Sie bitte die folgenden Tutorials:

  1. http://net.tutsplus.com/sessions/git-succinctly/
  2. http://net.tutsplus.com/tutorials/other/easy-version-control-with-git/
  3. http://net.tutsplus.com/tag/git/

Wenn Ihr WordPress-Quellcode kein Git-Repository ist, machen wir es jetzt; Andernfalls springen Sie zum nächsten Schritt.

 $ cd ~ / Site / wordpress $ git init $ git remote hinzufügen urit [email protected]: kureikain / wordpress.git $ git add. $ git Push-Ursprungsmaster

Führen Sie den folgenden Befehl aus, um Mina für Ihr Projekt einzurichten.

 $ mina init

Dadurch wird ein Ordner erstellt Konfig mit einer einzigen Datei deploy.rb darin.

 $ ls config wp-blog-header.php wp-load.php index.php wp-comments-post.php wp-login.php latest.tar.gz wp-config-sample.php wp-mail.php license.txt wp-settings wp-settings.php readme.html wp-cron.php wp-signup.php wp-activ.php wp-track wp-trackback.php wp-admin wp-links-opml.php $ ls config deploy.rb

Schritt 2. Konfigurieren Sie config / deploy.rb

Öffnen Sie nun im vorherigen Schritt die Datei config / deploy.rb und definieren Sie eine Konfiguration.

Diese deploy.rb-Datei enthält die Bereitstellungskonfiguration und eine Reihe von Mina-Aufgaben. Jede Aufgabe ist in sich eingeschlossen Aufgabe: Aufgabenname Block. Innerhalb jeder Aufgabe können wir eine andere Aufgabe aufrufen aufrufen Um einen Befehl auf dem Server auszuführen, geben Sie ihn mit an Warteschlange Befehl.

Eine Aufgabe kann beispielsweise so aussehen:

 Task: Rufen Sie Folgendes auf: maintenance_on Invoke: Starten Sie die Warteschlange 'rm -rf / tmp / cache' neu

Beginnen wir mit dem Editieren dieser deploy.rb-Datei.

Entfernen Sie nicht verwendete Zeilen

Kommentieren Sie diese Zeile aus, da wir sie nicht verwenden werden.

 "Mina / Bundler" anfordern "Mina / Schienen" anfordern

Konfigurieren Sie die Serverdefinition

Der Standardcode sieht folgendermaßen aus

 Set: Benutzer, 'Benutzername' Set: Domäne, 'Foobar.com' Set: deploy_to, '/var/www/foobar.com' Set: Repository, 'git: //…' Set: Zweig, 'Master'
  1. Domain ist Domain zum Domainnamen Ihrer WordPress-Site.
  2. deploy_to Hier möchten Sie Ihr WordPress-Projekt suchen.
  3. Repository ist Ihre Git-Repository-Adresse.
  4. Ast Ihr Bereitstellungszweig. Git unterstützt viele Zweige und einige Pfeffer möchten ein bereitstellen Zweig für Bereitstellungszwecke.

Aktualisieren wir es mit unserer Serverkonfiguration:

 set: domain, 'yourdomain.com' set: deploy_to, '/var/www/yourdomain.com' set: Repository, 'https: //[email protected]/kureikain/wordpress.git' set: branch, 'master 'set: user,' your_username '# Benutzername im Server auf SSH um.

Stellen Sie sicher, dass Sie das erreichen können Repository auf Ihrem Remote-Rechner.

Als nächstes werden wir das erledigen WP-Inhalt / Uploads Mappe. Dieser Ordner enthält vom Benutzer hochgeladene Inhalte. Bei jeder Bereitstellung handelt es sich um einen anderen Ordner als den, den wir derzeit verwenden, da sich der kürzlich bereitgestellte Code in einem anderen Ordner befindet Veröffentlichungen.

Wenn wir diesen neuen Ordner behalten, gehen alle alten Inhalte verloren. Daher müssen wir einen Symlink verwenden, um ihn an eine andere Stelle zu verweisen. Nach der Bereitstellung werden wir es aktualisieren, um darauf hinzuweisen, dass eine korrigiert wird.

Finden Sie diese Zeile:

 set: shared_paths, ['config / database.yml', 'log']

Und ändere es zu:

 set: shared_paths, ['wp-content / uploads']

shared_paths ist eine Sammlung allgemeiner Ressourcen (Datei / Ordner) zwischen den verschiedenen Releases, die sich je nach Release unterscheiden können. Wie Protokolldateien sollten vom Benutzer hochgeladene Inhalte in shared_paths abgelegt werden. Tun wir das nicht, verlieren wir mit jeder neuen Version die Daten.

Zum Beispiel: Wenn ein Benutzer eine Datei hochlädt, speichert WordPress sie in /var/www/ihredomain.com/current/wp-content/upload/2014/01/29/picture.png. Aber /var/www/ihredomain.com/current ist ein Symlink-Punkt zu /var/www/ihredomain.com/releases/4/ Das ist unsere aktuelle Version. Daher befindet sich die eigentliche Datei unter: /var/www/yourdomain.com/releases/4/wp-content/upload/2014/01/29/picture.png.

Nun, wenn Sie eine neue Version erstellt haben, aktuell wird auf zeigen /var/www/ihredomain.com/releases/5. Die Datei /var/www/ihredomain.com/current/wp-content/upload/2014/01/29/picture.png ist nicht mehr da, weil /var/www/ihredomain.com/releases/5/wp-content/uploads ist ein neuer Ordner ohne Inhalt.

Daher müssen wir es in shared_paths einfügen, und Mina erstellt einen symbolischen Link, um darauf zu zeigen /www/ihredomain.com/releases/5/wp-content/uploads zu /www/ihredomain.com/shared/wp-content/uploads.

Konfigurieren Sie unsere Setup-Aufgabe

Dies ist eine Aufgabe, die wir zum ersten Mal ausführen, um unsere Serverumgebung vorzubereiten. Die Standardeinstellung sieht folgendermaßen aus:

 Task: Setup =>: Umgebung in Warteschlange! % [mkdir -p "# deploy_to / shared / log"] Warteschlange! % [chmod g + rx, u + rwx "# deploy_to / shared / log"] Warteschlange! % [mkdir -p "# deploy_to / shared / config"] Warteschlange! % [chmod g + rx, u + rwx "# deploy_to / shared / config"] queue! % [touch "# deploy_to /shared/config/database.yml"] Warteschlange% [echo "-----> Stellen Sie sicher, dass Sie 'shared / config / database.yml'."] end bearbeiten

Ändern wir es in:

 Task: Setup =>: Umgebung in Warteschlange! % [mkdir -p "# deploy_to / shared / wp-content / uploads"] end

Unsere Setup-Aufgabe erstellt einfach eine WP-Inhalt / Uploads Verzeichnis.

Konfigurieren Sie unsere Bereitstellungsaufgabe

Die Standardaufgabe sieht folgendermaßen aus.

 task: deploy =>: environment do deploy do # Führe Dinge ein, die ein leeres Verzeichnis einrichten, in eine vollständig eingerichtete # Instanz deines Projekts. invoke: 'git: clone' invoke: 'deploy: link_shared_paths' invoke: 'bundle: install' invoke: 'schienen: db_migrate' invoke: 'schienen: assets_precompile': start do queue "touch # deploy_to / tmp / restart .txt "end end end

Wir brauchen nichts, was mit Rails zu tun hat. Da für die Bereitstellung von WordPress kein Neustart eines Webservers oder PHP-Prozesses erforderlich war, müssen Sie nur die Aufgabe git: clone und deploy: link_shared_paths aufrufen.

Lass sie ändern in:

 task: deploy =>: environment do deploy do # Führe Dinge ein, die ein leeres Verzeichnis einrichten, in eine vollständig eingerichtete # Instanz deines Projekts. invoke: 'git: clone' invoke: 'deploy: link_shared_paths' end end

Konfigurieren Sie unsere Rollback-Aufgabe

Leider hat Mina keine offizielle Methode für das Rollback, also habe ich eine Aufgabe für unseren eigenen Rollback-Prozess erstellt. Der Rollback-Task führt dazu, dass er die aktuelle Version entfernt und neu zeigt aktuell Symlink zur vorherigen Version. Hängen Sie diese Aufgabe an das Ende Ihrer deploy.rb an

 desc "Rollback zur vorherigen Version." Task: Rollback =>: Umgebungswarteschlange% [Echo "----> Start Rollback"] Warteschlange% [Wenn [$ (ls # deploy_to / release | wc -l) -gt 1]; dann echo "----> Zum vorherigen Release zurückkehren" && unlink # deploy_to / current && ln -s # deploy_to / Releases / "$ (ls # deploy_to / Releases | tail -2 | head -1 ) "# deploy_to / current && echo" Alte Releases entfernen "&& rm -rf # deploy_to / Releases /" $ (ls # deploy_to / Releases | tail -1) "&& echo" $ (ls #  deploy_to / Releases | tail -1) "> # deploy_to / last_version && echo" Fertig. Rollback auf v $ (cat # deploy_to / last_version) "; else echo "Keine Freigabe mehr für das Rollback"; fi] ende

Der obige Code sieht komplex aus, ist aber in der folgenden Version einzeilig. Ich werde es auflösen und eine Anmerkung über jeden Befehl setzen.

 # Prüfen Sie, ob wir mehr als 1 Releases haben, wenn [$ (ls /var/www/ihredomain.com/releases | wc -l) -gt 1] lautet, dann echo "----> Auf vorhergehendes Release umstellen" # Aktuelle Symlink-Verknüpfung entfernen /var/www/yourdomain.com/current # Verweisen Sie auf die vorherige Version: ln -s /var/www/yourdomain.com/releases/"$(ls /var/www/yourdomain.com/releases | tail -2 | head -1) "/var/www/yourdomain.com/current echo" Alte Versionen entfernen "# Aktuelle Version entfernen, die bereits rm -rf /var/www/yourdomain.com/releases/"$(ls / var / zurückgesetzt wird. www / yourdomain.com / Releases | tail -1) "# Aktuelle Version in der Datei" last_version "echo" $ (ls /var/www/yourdomain.com/releases | tail -1) "> /var/www/yourdomain.com protokollieren / last_version # Geben Sie einige Informationen an den Benutzer echo "Fertig. Rollback auf v $ (cat /var/www/yourdomain.com/last_version)" else # Wenn wir nicht mehr als 1 Freigaben haben, können wir kein Rollback ausführen. Echo "Keine Freigabe mehr für Rollback", z

An diesem Punkt konfigurieren wir den Server, bearbeiten die Setup-Aufgabe, stellen die Aufgabe und die Rollback-Aufgabe bereit. Beginnen Sie jetzt damit, Mina tatsächlich zu benutzen.

Bereitstellung mit Mina

In diesem Teil werde ich Ihnen zeigen, wie Sie Mina ausführen, um den Server einzurichten, auf dem Server bereitzustellen und ein Rollback durchzuführen. Mina ist ein Befehlszeilenprogramm. Sie müssen Zugriff auf ein Terminal haben. Jede Mina-Aufgabe wird vom Terminal aus aufgerufen.

Schritt 1. Vorbereiten

Wir führen dies nur bei der ersten Vorbereitung auf einen Server aus. SSH an Server und erstellen Sie die deploy_to Verzeichnis. Es ist /var/www/ihredomain.com in unserem Fall.

 $ ssh [email protected] # Führen Sie auf Ihrem Remote-Computer (nachdem Sie die Verbindung über SSH hergestellt haben) den Befehl $ sudo mkdir -p /var/www/yourdomain.com aus

Einmal laufen wir die chown Mit dem Befehl ändern wir den Besitzer von /var/www/ihredomain.com in user dein Name. Daher kann der Webserver nichts in dieses Verzeichnis schreiben. Unsere WordPress-Site wird auf diese Weise besser geschützt. Als nächstes auf Ihrem lokalen ausführen Mina-Setup. Es gab so etwas aus:

 $ mina setup -----> Einrichtung /var/www/yourdomain.com insgesamt 16 drwxr-xr-x 4 kurei-wurzel 4096 Jan 27 22:51. drwxr-xr-x 3 wurzel wurzel 4096 Jan 27 00: 16… drwxr-xr-x 2 kurei benutzer 4096 Jan 27 22:51 Veröffentlichungen drwxr-xr-x 2 kurei benutzer 4096 Jan 27 22:51 geteilt ----- > Fertig. Abgelaufene Zeit: 1,00 Sekunden

Wenn Sie bestätigen möchten, was Mina auf dem Server für uns erstellt hat, überprüfen Sie es auf dem Remote-Computer:

 $ cd /var/www/yourdomain.com $ ls veröffentlicht freigegebene freigegebene $ ls / WP-Inhalte

An diesem Punkt ist alles fast fertig. Denken Sie daran, dass das Upload-Verzeichnis vom Benutzer hochgeladene Inhalte speichert. Daher muss der Webserver darauf schreiben können. Wir müssen feststellen, auf welchem ​​Benutzer Ihr Apache / Nginx (oder PHP FPM-Prozess, abhängig von der Konfiguration Ihres Servers) ausgeführt wird, und den Besitzer des Upload-Ordners in diesen Ordner ändern, damit der Webserver in diesen Ordner schreiben kann. Wenn Sie Ihre Apache-Konfigurationsdatei oder Nginx-Konfigurationsdatei öffnen, können Sie normalerweise diesen Benutzer finden.

[Sourecode]
# Öffnen Sie für Apache /etc/httpd/conf/httpd.conf
Benutzer www Group www

# Öffnen Sie für Nginx die Datei /etc/nginx/nginx.conf

Benutzer http http; Arbeiter_Prozesse 2;
[/ Sourecode]

Nehmen wir an, dass Apache läuft www Nutzer.

[Sourecode] ssh [email protected] sudo chown -R www /var/www/yourdomain.com/wp-content/uploads [/ sourecode]

Schritt 2. Bereitstellen

Jedes Mal, wenn wir den Code bereitstellen möchten, verwenden wir diese Aufgabe.

Der Prozess ist:

  • Aktualisieren Sie den Code
  • beende die Änderung.
  • auf den Git-Server drücken.

Sobald Ihr Code auf dem Git-Server verfügbar war.

Lass uns bereitstellen

 $ mina bereitstellen

In wenigen Sekunden sollte es fertig sein. Hier ist eine Beispielausgabe des Bereitstellungsergebnisses:

 $ mina deploy -----> Erstellen eines temporären Erstellungspfads -----> Abrufen neuer Git-Commits -----> Verwenden von git-Zweig 'master' Cloning into '.' ... fertig. -----> Verwenden Sie dieses git commit kureikain (347d9b3):> Aktualisieren Sie die neue Konfiguration / Bereitstellung -----> Symlinking gemeinsam genutzter Pfade -----> Erstellen abgeschlossen -----> Verschieben des Builds nach Releases / 2 -----> Aktualisieren des aktuellen Symlinks -----> Starten -----> Fertig. Bereitgestellte Version 2 Verstrichene Zeit: 1,00 Sekunden

Schritt 3. Rollback

Wenn eine Version einen kritischen Fehler aufweist oder wir einfach den Code aus irgendeinem Grund auf die vorherige Version zurücksetzen möchten, tun wir dies:

 $ mina Rollback

Seine Ausgabe ähnelt

 ----> Rollback starten ----> Zum vorherigen Release zurückkehren Alte Releases entfernen Fertig. Rollback zu v2 Verbindung zu axcoto.com geschlossen. Abgelaufene Zeit: 0,00 Sekunden

Fazit

Sie haben gelernt, wie Sie Mina einsetzen können. Der Bereitstellungsprozess ist jetzt ziemlich schnell. Ihre Website wird keine Ausfallzeiten erfahren. Aber hören Sie nicht auf, besuchen Sie die Mina-Website und erfahren Sie mehr darüber. Ich habe ein Beispiel-WordPress-Projekt geteilt, das Mina auf GitHub verwendet.

Im nächsten Teil werden wir etwas über WP-CLI lernen. Insbesondere erfahren Sie, wie Sie es nutzen und gängige Verwaltungsaufgaben wie das Aktualisieren von WordPress, das Installieren von Designs, Plugins usw. über WP-CLI neben einer Mina-Aufgabe ausführen können. Wir werden auch prüfen, wie wir damit unsere WordPress-Installation sicherer machen.

Lassen Sie bis dahin einen Kommentar, was Sie tun, um Ihre WordPress-Bereitstellung zu einem Kinderspiel zu machen.