Verwenden von WP-CLI mit Mina

Im ersten Teil dieser Serie konnten wir mit Mina WordPress bereitstellen. Wir haben gelernt, dass Mina eine Shell-Skriptdatei erstellt und dann WordPress zum Ausführen auf den Server drückt. Da alle Befehle in einer einzigen SSH-Verbindung ausgeführt werden, ist Mina sehr schnell. 

Auf diese Weise können wir Aufgaben schreiben, um die WordPress-Steuerung zu automatisieren. Wir können normale WordPress-Aufgaben wie das Erstellen von Benutzern, das Installieren von Plugins, das Sichern unserer Daten usw. in eine Folge von Shell-Befehlen umwandeln. Dann kombinieren wir diese Shell-Befehle in der Mina-Task. 

Aber wie können wir die Shell-Befehle erstellen, um diese Aufgaben auszuführen? WP-CLI ist die Antwort. Es hilft, WordPress über die Befehlszeile zu steuern. Sie müssen sich nicht beim WordPress-Dashboard anmelden, um Verwaltungsaufgaben auszuführen. WP-CLI enthält eine Reihe von Befehlen, die den Admin-Aufgaben von WordPress entsprechen. Sobald wir die WP-CLI-Befehle für eine spezielle Aufgabe kennen, müssen wir diese Befehle nur in eine Mina-Aufgabe einfügen. 

Was muss ich wissen??

  • Sie benötigen entweder ein Mac OS oder ein Linux OS, um auf ein Terminal zugreifen zu können. Wenn Sie mit Windows arbeiten, ist dies immer noch möglich, aber es wird in diesem Tutorial nicht behandelt. 
  • Sie sollten über grundlegende Kenntnisse der Shell-Befehle und des Terminals verfügen. Wenn Sie die Terminal- oder iTerm-App zuvor geöffnet haben, sollte das Lernprogramm für Sie sehr einfach sein.
  • Sie benötigen SSH-Zugriff auf Ihren Remote-Computer.

Ein kurzer Blick auf WP-CLI

Ein sehr schnelles Beispiel, damit Sie wissen können, was wir mit WP-CLI haben. Wenn Sie mit der Entwicklung einer WordPress-Site beginnen, müssen Sie zu Testzwecken Dummy-Posts oder Dummy-Benutzerkonten erstellen. 

Wenn Sie dies (sobald Sie wp-cli installiert haben) auf Ihrem Terminal eingeben, werden Sie ohne unnötigen Aufwand 100 Dummy-Posts erstellen.

php wp-cli.phar post generiert --count 100

Sehen Sie, wie viel Zeit Sie sparen wird? Aber müssen wir diese Dinge wirklich über die Befehlszeile ausführen?? 

Zeit zu sparen ist schön, aber keine Notwendigkeit.

Hier ist ein sehr guter Grund, dies zu tun: Sicherheit. Einige Aktionen aus dem WordPress-Dashboard erfordern Schreibrechte für die WP-Inhalt Mappe. Beispiel: Plugins hochladen, Designs hochladen, WordPress upgraden usw. Je mehr Erlaubnis wir der Öffentlichkeit gewähren, desto größer ist die Gefahr, die wir unserer Site aussetzen. 


Stellen wir uns vor, dass ein Angreifer Zugriff auf unser WordPress-Dashboard erhält. Der Angreifer kann schädliche Skripte als Plugin hochladen. Sie können dies verhindern, indem Sie die Schreibberechtigung für alle Ordner oder Dateien von WordPress außer dem deaktivieren WP-Inhalt / Uploads Mappe. Daher kann niemand ein Plugin oder Design auf den Webserver hochladen. 

Im ersten Teil dieses Tutorials lernen wir, das Schreibrecht an Apache weiterzugeben WP-Inhalt / Uploads Mappe. Wir haben das Eignerschiff von geändert WP-Inhalt / Uploads an den Webserver-Benutzer. Auf diese Weise kann der Webserver in den Upload-Ordner schreiben. Daher kann WordPress Bilder hochladen und in unser schreiben Uploads Mappe. 

Jede Aktion, die in den WordPress-Ordner geschrieben werden muss (außer dem Uploads Ordner) sollte über die Befehlszeile erfolgen. Mit anderen Worten, wir werden die Datei manuell von unserem lokalen Computer hinzufügen, festschreiben und mit Mina auf dem Server bereitstellen. Mit diesem Setup wird unser WordPress-Verzeichnis zu einer schreibgeschützten Box (außer der Uploads Ordner, in dem unsere Medien gespeichert werden). 

Die Medien-Upload-Funktion von WordPress verfügt bereits über eine Sicherheitsschicht, um das Hochladen von PHP-Dateien zu verhindern. Wenn Sie weiter gehen möchten, können Sie die PHP-Dateien in config nicht ausführen Uploads Ordner, aber das ist die Idee und wird in diesem Tutorial nicht behandelt. Wir werden uns mehr auf die Befehlszeilenaktion mit WP-CLI konzentrieren.

Update WordPress ohne Schreibrechte

Sobald wir die Schreibberechtigung entfernt haben, funktioniert die automatische Aktualisierung nicht mehr und Sie können die Anwendung nicht einfach über das WordPress-Dashboard aktualisieren. Da wir unseren WordPress-Code mit Git verwaltet haben, sollten wir das Update manuell durchführen. 

Wir können die zip / tar-Datei von WordPress herunterladen, dekomprimieren und die aktuelle WordPress-Datei überschreiben. Als Nächstes legen wir den neuen Code fest, übertragen unser Repository und führen eine Implementierung mit Mina durch.

Ein Rückblick auf die Mina Task Theory

Eine Aufgabe in Mina ist nur eine normale Rake-Aufgabe mit einem Warteschlange Methode, die die Shell-Befehle in eine Warteschlange stellte, um sie später auf dem Server auszuführen. Für jeden Befehl, den wir auf dem Server ausführen möchten, können wir das verwenden Warteschlange Methode wie folgt.


desc "Beschreibe diese Aufgabe"
Task: Beispiel-Warteschlange "ls # deploy_to / aktuell" Warteschlange "Berühren Sie /tmp/test.log" Ende

Das desc Block ist optional, aber es ist schön zu haben. Wenn du schreibst mina ohne Parameter, die desc Informationen werden auf dem Bildschirm als Referenz ausgedruckt.

$ mina mina - Ein wirklich schnelles Server-Implementierungs- und Automatisierungstool Optionen: -h, --help Hilfe anzeigen -V, --version Programmversion anzeigen -v, --verbose Befehle anzeigen, wie sie auftreten -S, --simulate Run in simulation mode -t, --trace Rückverfolgung bei Fehlern anzeigen -f DATEI FILE als Bereitstellungskonfiguration verwenden. Grundlegende Verwendung: mina help # Hilfe anzeigen. mina init # Erstellt eine Beispielkonfigurationsdatei. mina Aufgaben # Alle Aufgaben anzeigen. Serveraufgaben: mina clean_cache # Bereinigung des Nginx-Caches mina db_export # WordPress-Datenbank nach Shared / Backup exportieren mina deploy # Stellt die aktuelle Version auf dem Server bereit. mina rollback # Rollback zur vorherigen Version mina run [Befehl] # Führt einen Befehl auf dem Server aus. mina setup # Richtet eine Site ein. mina toggle_plugin [plugin] # Ein Plugin umschalten mina toggle_theme [theme] # Theme aktivieren mina wp_version # Aktuelle WordPress-Version anzeigen Alle Optionen von Rake sind auch als "mina" -Optionen verfügbar. Weitere Informationen finden Sie unter "rake --help".

Für jeden Befehl, den wir auf einem lokalen Rechner ausführen möchten, können wir den Befehl verwenden Backtick (') Charakter.

task: sample do put 'pwd' setzt 'ls -la'

Testen wir es mit meine Probe um zu sehen, was auf Ihrem lokalen Rechner ausgedruckt wird.

Im Grunde wird eine Mina-Aufgabe erstellt, indem ein Block von erstellt wird task: task_name do //… ende
Die Task kann mit aufgerufen werden mina aufgabename. Wenn wir Argumente in die Task übergeben müssen, können wir diese Syntax verwenden:

task: task_name,: arg,: another_arg do | cmd, args | setzt args [: arg] setzt args [: another_arg] am Ende

Die Halterung [] ist nur die Ruby-Methode, um auf einen Hash zuzugreifen. Sie können sich wie ein assoziatives PHP-Array vorstellen. Wir benennen das Argument und können dann innerhalb des Task-Body leicht auf seinen Wert zugreifen Argumente [: argument_name]. In diesem Beispiel lautet Argumentname : arg und : ein anderer_arg

Die Task kann mit dieser Syntax aufgerufen werden: mina taskname [param1, param2]. Weitere Argumente können hinzugefügt werden, und wir werden weitere Parameter wie übergeben mina taskname [param1, param2, param3, param4].

Sie können sich das vorstellen Aufgabennname ist ein Methode name und wir rufen eine Methode auf und übergeben ihr Argument. Wenn der Parameter ein Leerzeichen enthält, sollten wir den gesamten Parameter in ein Zitat einschließen.

 Lass die obige Aufgabe jetzt versuchen. Es druckt einfach alles aus, was wir hineingehen.

$ mina Aufgabenname [Wert1, "Wert 2 mit etwas Platz"]]
Wert1
Wert 2 mit etwas Platz

Wenn Sie die zsh-Shell verwendet haben, müssen Sie [und] mit dem umgekehrten Schrägstrich entfernen:

$ mina Aufgabenname \ [Wert1, "Wert 2 mit etwas Platz" \]

Eine andere Sache ist zu beachten In_Verzeichnis Methode von Mina. Es ist sehr wahrscheinlich, dass Sie dies tun müssen CD in ein Verzeichnis und führen Sie ein paar Befehle aus. Anstatt manuell in die Warteschlange zu stellenCD Befehl können wir das Handy verwenden In_Verzeichnis Methode. Der Befehl wird innerhalb des angegebenen Verzeichnisses ausgeführt.

Task: Beispielverzeichnis in_Verzeichnis "# deploy_to / current" Warteschlange "pwd"
Ende Ende

Okay, genug für die Theorie. Beginnen wir mit dem lustigen Teil: Wir werden wp-cli installieren und dann einige Aufgaben einrichten.

Installieren Sie WP-CLI

Alles was wir brauchen, ist die PHAR-Datei von WP-CLI herunterzuladen. Es ist eine einzelne Datei, die für die PHP-Engine ausführbar ist. Anstatt mehrere PHP-Dateien zu haben, können Sie sie in einer einzigen Datei komprimieren, die von PHP ausführbar ist. 

Es ist eine sehr einfache Möglichkeit, PHP-Pakete zu verteilen. Genau wie unter Windows laden Sie eine Software in einer einzelnen .EXE-Datei herunter und führen sie aus. Um dies zu tun, CD Führen Sie in Ihrem WordPress-Code auf dem lokalen Computer den folgenden Befehl aus:

curl -L https://raw.github.com/wp-cli/builds/gh-pages/phar/wp-cli.phar> wp-cli.phar chmod + x wp-cli.phar

Vergewissern wir uns, dass es funktioniert. Führen Sie auf Ihrem lokalen Computer den Befehl aus wp-cli.phar --info und Sie sollten die folgende Ausgabe erhalten.


./wp-cli.phar --info
PHP-Binärdatei: / usr / bin / php
PHP-Version: 5.4.24
verwendete php.ini: /etc/php.ini
WP-CLI-Stammverzeichnis: phar: //wp-cli.phar
WP-CLI globale Konfiguration:
WP-CLI-Projektkonfiguration:
WP-CLI-Version: 0.14.1

Jetzt befindet sich wp-cli im selben Verzeichnis wie WordPress
Wechseln Sie zu Ihrem Repository und führen Sie eine Bereitstellung durch.


git add wp-cli.phar git commit -m "Add wpcli" git Push-Ursprungsmaster mina deploy

Zu diesem Zeitpunkt befindet sich wp-cli in unserem WordPress-Verzeichnis auf dem Server. Lassen Sie uns ein bisschen zaubern: Mina-Aufgabe mit wp-cli schreiben.

Mina-Aufgabe mit WP-CLI schreiben

In diesem Abschnitt werde ich Ihnen zeigen, wie Sie einige grundlegende Aufgaben mit wp-cli erledigen und wie Sie sie in Mina einsetzen, damit Sie einen Eindruck davon bekommen können, wie die Dinge aussehen, und schreiben Sie Ihre eigene Aufgabe, die zu Ihrem Workflow und Ihrem Workflow passt brauchen. Das Wichtigste zuerst: Hallo Welt.

1. Hallo Welt

Der allererste, sehr einfache Befehl von wp-cli ist die Anzeige der aktuellen WordPress-Version. Lassen Sie eine weitere Mina-Aufgabe erstellen. Hängen Sie dies an Ihre config / deploy.rb Datei:

desc "Zeige aktuelle WordPress-Version" Aufgabe: wp_version =>: Umgebung do queue% [echo "-----> Hallo Welt. Ich bin jetzt in dieser Version:"] queue "cd # deploy_to / current &&. /wp-cli.phar Kernversion "Ende

Versuchen Sie es jetzt auszuführen:

$ mina wp_version -----> Hallo Welt. Ich bin jetzt in dieser Version: 3.8.1 Verstrichene Zeit: 0,00 Sekunden

2. Ein Plugin installieren

Wir laden ein Plugin von Hand herunter, extrahieren es, fügen es zum Repository hinzu, legen es fest und setzen dann eine weitere Mina-Task ein, um ein Plugin zu aktivieren. 

Hier ist der Code, den wir für diese Aufgabe benötigen

desc "Toggle a plugin" Aufgabe: toggle_plugin,: arg1 do | cmd, plugin | queue% [echo "----> Aktivieren Sie das Theme # theme"] in_directory "# deploy_to / current" do queue% [./wp-cli.phar plugin umschalten # plugin] end end 

Wir stellen einen Echo-Befehl in die Warteschlange, um Text auszugeben. Der Befehl zum Aktivieren eines Plugins von wp-cli lautet plugin umschalten plugin_name

Angenommen, wir möchten das Mathjax Latex-Plugin installieren und haben es bereits eingefügt WP-Inhalt / Plugins

Wir können diesen Weg installieren:

git add wp-content / plugins / mathjax-latex git commit -m "Add mathjax plugin" git Push-Ursprungs-Master mina deploy 

Nun ist das Plugin installiert. Die Aktivierung kann über das WordPress-Dashboard erfolgen. Aber da wir unsere Mina-Aufgabe haben, lass es versuchen:

$ mina toggle_plugin \ ["mathjax-latex" \] # Sollte ausgeben ----> Plugin mathjax-latex umschalten Erfolg: Plugin 'mathjax-latex' aktiviert.

Das Aktualisieren eines Plugins ist genauso. Sie laden das Plugin herunter und kopieren es in wp-content / plugins / [plugin-need-to-update], begehen und erneut bereitstellen.

3. Ein Theme installieren


Der Arbeitsablauf ist genauso wie beim Plugin, nur ein anderer wp-cli-Befehl zum Aktivieren des Designs. Wir müssen das Design nur zu Git hinzufügen, festschreiben, pushen, implementieren.

Schauen Sie sich das folgende Beispiel an, in dem wir dieses Design installieren. Wir haben es bereits heruntergeladen und in wp-content / themes / natsume gespeichert.

git add wp-content / themes / natsume git commit -m "Mathjax-Plugin hinzufügen" git Push-Ursprungs-Master mina deploy 

Die Aktivierung des Themas kann auch auf der Admin-Benutzeroberfläche von WordPress erfolgen. Aber machen wir eine Mina-Aufgabe, damit wir sie aktivieren können, sobald wir sie von der Kommandozeile aus bereitstellen. 

Hier ist die Aufgabe:

desc "Theme aktivieren"
task: toggle_theme,: theme do | cmd, args |
theme = args [: theme]
Warteschlange% [echo "----> Theme # Theme aktivieren"]
in_directory "# deploy_to / current" tun
Warteschlange% [./wp-cli.phar Design aktivieren # Theme]
Ende
Ende

Um ein Thema zu aktivieren, führen Sie unsere Aufgabe aus:

$ mina toggle_theme \ ["natsume" \] 

4. Datenbanksicherung

Diese Aufgabe wird die WordPress-Datenbank in eine GZIP-Datei ausgeben shared / backup Mappe. Wenn der Sicherungsordner noch nicht vorhanden ist, erstellen wir ihn. Dann rufen wir den Befehl wp-cli db auf, um die Datenbank in eine Datei zu kopieren. 

Der Dateiname ist die Kombination aus Datum und Uhrzeit, wenn wir in diesem Format exportieren "[Jahr] [Monat] [Tag] _ [Stunde] [Minute] [Sekunde] .sql.gz". 

Lassen Sie uns unsere Mina-Aufgabe zusammenstellen.

desc Task "WordPress-Datenbank nach Shared / Backup exportieren": db_export # Backup-Verzeichnis erstellen, wenn es nicht beendet wird backup_to = "# deploy_to / shared / backup" Warteschlange% [[-d # backup_to] || mkdir -p # backup_to] in_directory "# deploy_to / current" do time = Time.new file = "# time.year # time.month # time.day _ # time.hour  # time.min # time.sec .sql.gz "Warteschlange% [echo" ----> Datenbank in # Datei sichern "] Warteschlange% [./wp-cli.phar db export - | gzip> # backup_to / # file] end end

[-d name] ist eine Syntax, um das Vorhandensein des Ordners zu überprüfen. Wenn nicht, verwenden wir mkdir, um es zu erstellen.
Dann verwenden wir das Time-Objekt von Ruby, um Datum und Uhrzeit zu extrahieren und zu verketten, um unseren Dateinamen zu erstellen.

Wenn Sie eine Sicherungskopie von Ihrem lokalen Computer erstellen möchten, geben Sie Folgendes ein:

$ mina db_export

Einfach und elegant. Ein Befehl und Sie haben alles.

5. Aktualisieren Sie die Domäne


Wenn Sie die Domäne ändern, müssen Sie sie häufig in wp-config.php neu konfigurieren oder die Domäne in der Datenbank manuell aktualisieren. So oder so, es ist viel Arbeit. 

Lass uns das einmal lösen. Der Befehl zum Aktualisieren einer Option lautet: wp-cli-Optionsaktualisierung [option_key] [option_value]. Gemäß der WordPress-Dokumentation gibt es zwei Möglichkeiten für die Domäne: Zuhause und Seiten-URL

update_option ('siteurl', 'http: //example.com'); update_option ("home", "http: //example.com");

Also hier ist unsere Aufgabe:

desc "Domain in eine neue wechseln"
task: update_domain,: Domäne do | cmd, args |
domain = args [: domain]
setzt Domäne
in_directory "# deploy_to / current" tun
Warteschlange% [./wp-cli.phar Option Update Home # Domäne]
Warteschlange% [./wp-cli.phar Option Update Siteurl # Domäne]
Ende
Ende

Rufen Sie es von der Kommandozeile aus auf:

$ mina update_domain \ ["http://log.axcoto.com" \]

6. Erzeugen Sie einen Dummy-Beitrag

Eine sehr nützliche Funktion von wp-cli ist die Nachgenerierung. Während der Testzeit können Sie viele Dummy-Beiträge manuell erstellen. Der Befehl zum Erstellen eines Beitrags mit wp-cli lautet wp-cli post generiert --count = Quantity. Die Syntax können Sie wie immer auf der wp-cli-Website nachlesen.

Wir erstellen einen Task-Aufruf gen_dummy_post Mit einem Parameter wird die Anzahl der Beiträge angegeben. Um Inhalt des Postens zu erhalten, verwenden wir curl, um einen Lorem ipsum-Text über zu erhalten das Loripsum API. cURL ist ein Befehlszeilentool, das normalerweise unter Linux / Mac OS vorinstalliert ist und das Senden von HTTP-Anforderungen ermöglicht.

Sie können sich wie ein Browser vorstellen, aber über die Befehlszeile ausführen. Anstatt eine Adresse in Ihren Browser einzugeben und die Ausgabe in Ihrem Browser anzuzeigen, geben Sie cURL eine Website-Adresse an und geben den Inhalt der Website zurück.

Versuchen wir es mit dem folgenden Befehl:

$ curl http://loripsum.net/api/5 

Lorem ipsum dolor sitzt amet, consectetur adipiscing elit. Ab seinem Oratores und seinem Imperatores Acerum Publicarum Principes Extiterunt. Cupiditates non Epicuri divisione finiebat, gesüßt sata. Venit ad extremum; Duo Reges: constructio interrete. Respondeat totidem verbis. Quis Aristidem nicht mortuum diligit? Quid Zeno?

Nihil acciderat ei, quod nollet, nisis quod anulum, quo delectabatur, in mari abiecerat. Nondum autem explainatum satis, erat, quid maxime natura vellet. Zufriedener Zugang, Nimium est; Tum ille: Ain Tandem? Sed ille, ut dixi, vitiose. Quantum Aristoxeni ingenium consumptum videmus in musicis? Quin enim possumus hoc agere divinius? Ut en con consuetudo loquitur, id solum dicitur honestum, ein beliebtes Volksfest in der Welt.

Sed quid minus probandum quam esse aliquem beatum nec satis beatum? Prima cur ista res digna odio est, nisi quod est turpis? Utinam Quidem verschiedene Alium Alio Beatiorem! Ich bin Ruinas Videres. Beatum, frag nach. Deinde disputat, quod cuiusque generis animantium statui deceat extremum. Nihil enim iam habes, quod ad corpus referas;

Quod ea non occurrentia fingunt, vinz Aristonem; Nicht semper, inquam; Quid de Platone aut de Democrito loquar? Qué Tiberina descensio festo illo die tanto gaudio affecit, Quantum L. Non enim ipsa genuit hominem, sed accepit a natura inchoatum. Scaevolam M. Recte, erkundigen Sie sich, Intellegis. Uterque enim summo bono fruitur, id est voluptate. Sic exclusis sententiis reliquorum cum praeterea nulla esse possité, caec antiquorum valeat neede est. Sed fortuna fortis; Mihi quidem Antiochum, quem audis, satis belle videris attendere.

Nam si propter voluptatem, qua est ista laus, mögliche e macello peti? Nonne igitur tibi videntur, forderung, mala?

Wenn Sie es ausführen, werden fünf Absätze von Lorem ipsum zurückgegeben. Sie können die Nummer danach ändern / api um mehr Absatz zu bekommen.

Wir wissen, haben Inhalt, wir werden ihn in wp-cli einführen, um einen Beitrag zu erstellen. Die Syntax dafür ist:

Locken http://loripsum.net/api/5 | WP Beitrag erzeugen --post_content --count = 10

Beachten Sie den Chracter |, es bedeutet, dass wir den Inhalt in den nächsten Commad weiterleiten. Wir wissen, haben die Syntax, wir können die Aufgabe erstellen

desc "Generate random post" Aufgabe: gen_dummy_post,: howmany do | cmd, args | howmany = args [: howmany] setzt howmany in_directory "# deploy_to / current" in die Warteschlange% [curl http://loripsum.net/api/5 | ./wp-cli.phar post generiert --count = # howmany --post_content] end end 

Sobald Sie die Syntax der Mina-Task kennen, können Sie mehr über WP-CLI-Befehle lesen, um eigene Aufgaben zu erstellen, z. B. Benutzer erstellen, Dummy-Benutzer zum Testen generieren.

Wenn Sie mehr über wp-cli erfahren möchten, besuchen Sie folgende Links:

  • http://www.slideshare.net/Japho/wp-melb-2014-0218
  • https://www.digitalocean.com/community/articles/how-to-use-wp-cli-to-manage-ihr-wordpress-site-from…
  • http://code.tutsplus.com/articles/using-wp-cli-for-fun-and-profit--wp-24496

Fazit

Wir haben jetzt ein gutes Verständnis dafür, wie man Mina-Aufgaben schreibt und wie man die Leistungsfähigkeit von wp-cli nutzen kann. Mit der Kombination dieser beiden Tools hoffen Sie, dass Sie sich sehr schnell implementieren lassen, und Ihre WordPress-Installation wird sicherer als zuvor sein und die Zeit für Verwaltungsaufgaben reduzieren. 

Beschränke dich nicht. Die Informationen in diesem Lernprogramm sind sehr kurz. Bitte fügen Sie Ihrer Taskdatei weitere Dinge hinzu und teilen Sie uns mit, was Sie in einem Kommentar geschrieben haben. 

Wenn Sie ein Problem haben, bitte hinterlassen Sie einen Kommentar, ich helfe gerne und rede. Fröhliche WordPress-Automatisierung!