Folosind WP-CLI cu Mina

În prima parte a acestei serii am reușit să folosim Mina pentru a implementa WordPress. Am aflat că Mina creează un fișier de script shell, apoi împinge WordPress pe server pentru a rula. Deoarece toate comenzile sunt executate într-o singură conexiune SSH, Mina este foarte rapidă. 

Folosind acest lucru, putem scrie sarcini pentru a automatiza controlul WordPress. Putem transforma sarcinile normale WordPress, cum ar fi crearea de utilizatori, instalarea unor pluginuri, copierea de rezervă a datelor noastre și așa mai departe într-o secvență de comenzi shell. Apoi combinăm aceste comenzi în sarcina Mina. 

Dar cum putem crea comenzile shell pentru a efectua acele sarcini? WP-CLI este răspunsul. Ajută la controlul WordPress prin linia de comandă. Nu este nevoie să vă conectați la tabloul de bord WordPress pentru a efectua activități de administrare. WP-CLI ne dă un set de comenzi care corespund sarcinilor de administrare ale programului WordPress. Odată ce cunoaștem comenzile WP-CLI pentru o sarcină specială, trebuie doar să punem aceste comenzi într-o sarcină Mina. 

Ce trebuie să știu în avans?

  • Veți avea nevoie de un sistem de operare Mac OS sau Linux pentru a avea acces la un terminal. Dacă sunteți pe Windows, este încă posibil, dar nu va fi acoperit în acest tutorial. 
  • Ar trebui să aveți o înțelegere foarte de bază a comenzilor shell și a terminalului. Atâta timp cât ați deschis aplicația Terminal sau iTerm înainte, tutorialul ar trebui să fie foarte ușor pentru dvs..
  • Trebuie să aveți acces SSH la mașina dvs. de la distanță.

O privire rapidă la WP-CLI

Un exemplu foarte rapid, astfel încât să puteți avea o sarcină a ceea ce avem cu WP-CLI. Când începeți să dezvoltați un site WordPress, trebuie să creați mesaje false sau conturi de utilizator manuale pentru scopul de testare. 

Tastarea acestui lucru (odată ce ați instalat wp-cli) pe terminalul dvs. vă va crea 100 de posturi manechin fără efort minim.

php wp-cli.phar post genera - suma 100

Vedeți cât timp vă va salva? Dar trebuie într-adevăr să executăm aceste lucruri prin intermediul liniei de comandă? 

Timpul de economisire este frumos, dar nu este nevoie.

Iată un motiv foarte bun pentru a face acest lucru: Securitate. Unele acțiuni din tabloul de bord din WordPress necesită permisiunea de scriere la wp-content pliant. Exemplu: încărcarea pluginurilor, încărcarea de teme, actualizarea WordPress și așa mai departe. Cu cât acordăm mai multă permisiune publicului, cu atât mai mult cu cât ne expunem la site-ul nostru. 


Să ne imaginăm că un atacator obține acces la tabloul de bord WordPress. Atacatorul va putea să încarce scripturi malware ca plugin. O modalitate de a preveni acest lucru este de a dezactiva permisiunea de scriere pentru orice dosar sau fișier de WordPress cu excepția wp-content / încărcări pliant. Prin urmare, nimeni nu poate încărca un plugin sau o temă pe serverul web. 

În prima parte a acestui tutorial, învățăm să oferim privilegii de scriere pentru Apache wp-content / încărcări pliant. Am schimbat nava proprietarului wp-content / încărcări la utilizatorul serverului web. În acest fel, serverul web poate scrie în dosarul încărcărilor; prin urmare, WordPress poate încărca imagini și scrie în contul nostru încărcări pliant. 

Orice acțiune care necesită scriere în dosarul WordPress (cu excepția încărcări folder) ar trebui să fie făcut prin linia de comandă. Cu alte cuvinte, vom adăuga manual fișierul de la mașina noastră locală, vom comite și vom implementa pe server cu Mina. Cu această configurație, directorul nostru WordPress devine o casetă numai pentru citire (cu excepția încărcări dosar care este utilizat pentru stocarea mass-media noastre). 

Funcția de încărcare media a WordPress are deja un strat de securitate pentru a împiedica încărcarea fișierelor PHP. Dacă doriți să mergeți mai departe, puteți configura să nu rulați fișierele PHP înăuntru încărcări dar asta e ideea și nu va fi acoperită în acest tutorial. Ne vom concentra mai mult pe acțiunea liniei de comandă cu WP-CLI.

Actualizați WordPress fără permisiuni de scriere

Odată ce am eliminat permisiunea de scriere, actualizarea automată nu va mai funcționa și nu puteți actualiza pur și simplu aplicația din tabloul de bord WordPress. Deoarece am reușit codul nostru WordPress cu Git, ar trebui să facem actualizarea manuală. 

Putem descărca fișierul WordPress zip / tar, decomprimați-l, suprascriind fișierul WordPress curent. Apoi, noi comitem noul cod, împingem la depozitul nostru și facem o misiune cu Mina.

O analiză a teoriei Mina Task

O sarcină în Mina este doar o sarcină normală cu Rake coadă metodă care coada în comanda shell-ului să ruleze mai târziu pe server. Pentru orice comanda pe care dorim sa o executam pe server, putem folosi coadă după cum urmează.


desc "Descrieți această sarcină"
sarcină: eșantion de coadă "ls # deploy_to / curent" coadă "atingeți /tmp/test.log" sfârșit

desc bloc este opțional, dar este frumos de a avea. Dacă tastați Mina fără nici un parametru, desc informațiile vor fi tipărite pe ecran pentru referință.

$ mina mina - Instrument de implementare și automatizare a serverului foarte rapid Opțiuni: -h, --help Afișare ajutor -V, --versiune Afișare versiune program -v, --verbose Afișare comenzi în timp ce se întâmplă -S, - simulare Executare în simulare mode -t, --trace Arată backtraces când apar erori -f FILE Utilizați FILE ca configurație de implementare Utilizare de bază: ajutor mina # Afișați ajutor. mina init # Creează un exemplu de fișier de configurare. sarcinile mina # Arată toate sarcinile. Activități server: mina clean_cache # Curățare cache nginx mina db_export # Export de bază de date WordPress la partajare / copiere de rezervă mina deploy # Aplică versiunea curentă la server. mina rollback # Revin la versiunea anterioară mina run [command] # Rulează o comandă în server. mina setup # Stabilește un site. mina toggle_plugin [plugin] # Comutați un plugin mina toggle_theme [theme] # Activați tema mina wp_version # Arată versiunea curentă de WordPress Toate opțiunile Rake sunt de asemenea disponibile ca opțiuni 'mina'. Consultați "rake --help" pentru mai multe informații.

Pentru orice comanda pe care dorim sa o executam pe masina locala, putem folosi backtick ( ') caracter.

sarcină: eșantionul pune "pwd" pune-ls-la "sfârșit

Hai să încercăm mina eșantion pentru a vedea ce imprimă pe mașina dvs. locală.

Deci, practic, o sarcină Mina este construită prin crearea unui bloc de sarcină: task_name do // ... end
Sarcina poate fi invocată mina task_name. Dacă trebuie să transmitem argumentul în sarcină, atunci putem folosi această sintaxă:

sarcină: task_name,: arg,: alt_arg do | cmd, args | pune argumente [: arg] pune args [: another_arg] end

Suportul [] este doar modul Ruby pentru a accesa un hash. Vă puteți gândi la ea ca la matricea asociativă PHP. Denumim argumentul, apoi în interiorul corpului de activitate, putem accesa cu ușurință valoarea sa args [: argument_name]. În acest exemplu, argument_name este : arg și : another_arg

Sarcina poate fi invocată cu această sintaxă: mina taskname [param1, param2]. Mai multe argumente pot fi adăugate și vom trece mai mulți parametri în ea, cum ar fi mina taskname [param1, param2, param3, param4].

Vă puteți imagina că taskname este a metodă nume și noi numim o metodă și trecem argumentul ei. Dacă parametrul are un spațiu, ar trebui să înfășurăm întregul parametru cu o cotare.

 Încercați să încercați sarcina de mai sus acum. Ea imprimă tot ce trecem în ea.

$ mina task_name [value1, "value 2 with some space"]
valoare1
valoarea 2 cu un anumit spațiu

Dacă ați folosit shell-ul zsh, trebuie să scăpați [și] cu backslash:

$ mina task_name \ [valoare1, "valoarea 2 cu un spațiu" \]

Un alt lucru de remarcat este in_directory metoda lui Mina. Este foarte probabil că va trebui să faceți asta CD într-un director și executați câteva comenzi. În loc să aștepți manualCD comanda, putem folosi la îndemână in_directory metodă. Acesta va rula comanda în interiorul directorului pe care îl indicăm.

sarcina: sample do in_directory "# deploy_to / current" do queue "pwd"
sfârșitul final

Bine, suficient pentru teorie. Să începem partea distractivă: Vom instala wp-cli, apoi vom seta câteva sarcini.

Instalați WP-CLI

Tot ce avem nevoie este să descărcați fișierul PHAR al WP-CLI. Este un singur fișier care este executabil pentru motorul PHP. În loc să aveți o grămadă de fișiere PHP, le puteți comprima într-un singur fișier executabil de către PHP. 

Este o modalitate foarte ușoară de a distribui pachete PHP. La fel ca pe Windows, descărcați un software într-un singur fișier .EXE și rulați-l. Pentru a face acest lucru, CD în codul dvs. WordPress pe mașina locală, executați această comandă:

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

Să verificăm că funcționează. Pe mașina locală, alerga wp-cli.phar - info și ar trebui să obțineți următoarea ieșire.


./wp-cli.phar --info
PHP binar: / usr / bin / php
Versiunea PHP: 5.4.24
php.ini folosit: /etc/php.ini
WP-CLI rădăcină dir: phar: //wp-cli.phar
Configurația globală WP-CLI:
Configurația proiectului WP-CLI:
Versiunea WP-CLI: 0.14.1

Acum, wp-cli este în același director cu WordPress, să-l angajăm și
împingeți în depozit și efectuați o desfășurare.


git adăugați wp-cli.phar git commit -m "Adăugați wpcli" git push origine master mina implementați

În acest moment, wp-cli este în directorul WordPress de pe server. Să facem ceva magie: scrieți sarcina Mina cu wp-cli.

Scrierea unui task Mina cu WP-CLI

În această secțiune, vă voi arăta cum să faceți niște sarcini de bază cu wp-cli, precum și cum să le puneți în Mina, astfel încât să puteți avea un gust cum arată lucrurile și să vă scrieți propria sarcină pentru a se potrivi fluxului de lucru și nevoie. Mai intai lucrurile: Hello World.

1. Bună ziua

Prima comandă foarte simplă a wp-cli este să afișezi versiunea actuală WordPress. Să creați încă o sarcină Mina. Adăugați acest lucru la dvs. config / deploy.rb fişier:

desc "Afișează versiunea curentă a WordPress" task: wp_version =>: environment do queue% [echo "-----> Bună ziua, acum sunt:"] cd # deploy_to / current &&. /wp-cli.phar versiunea de bază "sfârșit

Acum, încercați să o executați:

$ mina wp_version -----> Salut lume. Sunt acum la această versiune: 3.8.1 Timp scurs: 0.00 secunde

2. Instalarea unui Plugin

Vom descărca pluginul manual, extrageți-l, adăugați-l în repozitoriu, executați-l, apoi implementați și executați o altă sarcină pentru a activa un plugin. 

Iată codul de care avem nevoie pentru această sarcină

Descărcați sarcina unui plugin: toggle_plugin,: arg1 do | cmd, plugin | cache% [echo "----> Activa tema # theme"] in_directory "# deploy_to / curent" nu coincide cu pluginul [[/ wp-cli.phar plugin # plugin 

Coadă o comanda de ecou pentru a scoate un text. Comanda pentru activarea unui plugin din wp-cli este plug-in plugin plugin_name

De exemplu, spuneți că vrem să instalăm pluginul Mathjax Latex și l-am pus deja wp-content / plugins

Putem instala astfel:

git adăugați wp-content / plugins / mathjax-latex git comite -m "Adăugați pluginul mathjax" git push origine master mina deploy 

Pluginul este instalat acum. Activarea se poate face prin tabloul de bord WordPress. Dar din moment ce avem misiunea noastră Mina să încercăm:

$ mina toggle_plugin \ ["mathjax-latex" \] # Ar trebui să ieșire ----> Toggle plugin mathjax-latex Succes: Plugin 'mathjax-latex' activat.

Actualizarea unui plugin este aceeași procedură. Descărcați pluginul, copiați-l wp-content / plugins / [plugin-nevoie-to-update], comiterea și re-implementarea.

3. Instalarea unei teme


Fluxul de lucru este la fel ca modul în care facem cu plugin-ul, doar o altă comandă wp-cli pentru a activa tema. Trebuie doar să adăugăm tema în Git, să comităm, să împingem, să implementăm.

Uitați-vă la următorul exemplu în care vom instala această temă. Am descărcat deja și l-am pus în wp-content / themes / natsume.

git adăugați wp-content / temele / natsume git commit -m "Adăugați pluginul mathjax" git push origine master mina deploy 

Din nou, activarea temei poate fi făcută pe interfața de administrare WordPress admin. Dar să facem o sarcină Mina ca să o putem activa odată ce o implementăm, de la linia de comandă. 

Iată sarcina:

desc "Activare temă"
sarcină: toggle_theme,: theme do | cmd, args |
temă = argumente [: temă]
coadă% [ecou "----> Activați tema # theme"]
in_directory "# deploy_to / current" nu
coada% [./ wp-cli.phar activa # theme]
Sfârșit
Sfârșit

Pentru a activa o temă, executați sarcina noastră:

$ mina toggle_theme \ ["natsume" \] 

4. Backup de baze de date

Această sarcină va anula baza de date WordPress într - un fișier gzip în partajată / copie de rezervă pliant. Dacă dosarul de copiere de siguranță nu există încă, îl vom crea, apoi vom apela comanda wp-cli db pentru a anula baza de date într-un fișier. 

Numele fișierului va fi combinația dintre data și ora când vom exporta în acest format "[an] [lună] [zi] _ [oră] [minut] [secundă] .sql.gz". 

Să compunem sarcina noastră Mina.

desc "Exportați sarcina bazei de date WordPress pentru partajarea / copierea de rezervă: db_export nu # crea directorul de backup dacă nu este ieșire backup_to =" # deploy_to / shared / backup "queue% [[-d # backup_to] | mkdir -p # backup_to] in_directory "# deploy_to / curent" face timp = Time.new file = "# time.year # time.month # time.day _ #  # time.min # time.sec .sql.gz "coada% [echo" ----> Back up database to # file "] coadă% [./ wp-cli.phar db export - | gzip> # backup_to / # file] sfârșitul final

[-d nume] este o sintaxă pentru a verifica existența dosarului. Dacă nu, folosim mkdir pentru ao crea.
Apoi, folosim Obiectul de timp al lui Ruby pentru a extrage data și ora și concatenăm împreună pentru a crea numele fișierului.

Când doriți să creați copii de rezervă, de la mașina dvs. locală, tastați:

$ mina db_export

Simplu și elegant. O comandă și tu ai totul.

5. Update Domain


Foarte des, atunci când schimbați domeniul, trebuie să îl reconfigurați în wp-config.php sau să actualizați manual domeniul în baza de date. Oricum, e mult de lucru. 

Să rezolvăm o singură dată. Comanda pentru a actualiza o opțiune este: wp-cli actualizare opțiune [option_key] [option_value]. Conform documentației WordPress, domeniul are două opțiuni: Acasă și Adresa paginii

update_option ( 'siteurl', 'http: //example.com'); update_option ( 'acasă', 'http: //example.com');

Deci, aici este sarcina noastră:

desc "Schimbați domeniul la unul nou"
sarcină: update_domain,: domain do | cmd, args |
domeniu = args [: domain]
pune domeniu
in_directory "# deploy_to / current" nu
coada de așteptare% [./ wp-cli.phar actualizare opțiune acasă # domeniu]
coada de așteptare% [./ wp-cli.phar update siteurl # domain]
Sfârșit
Sfârșit

Invocați-l din linia de comandă:

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

6. Generați un post Dummy

O caracteristică foarte utilă a wp-cli este generarea postului. În timpul perioadei de testare, vă puteți găsi manual cum se creează o mulțime de posturi manechin. Comanda pentru a crea post cu wp-cli este wp-cli post genera --count = cantitate. Ca întotdeauna, puteți citi sintaxa pe site-ul web wp-cli.

Vom crea un apel de sarcină gen_dummy_post cu un parametru este numărul de postări. Pentru a obține conținut de post, vom folosi curl pentru a obține un text lorem ipsum via Loripsum API-ul. cURL este un instrument de linie de comandă care este de obicei preinstalat pe Linux / Mac OS, care vă permite să trimiteți o cerere HTTP.

Vă puteți gândi la acesta ca la un browser, dar rulați pe linia de comandă. Deci, în loc să tastați o adresă în browserul dvs. și să vedeți ieșirea din browser, dați cURL o adresă de site web și returnează conținutul site-ului.

Să încercăm comanda de mai jos:

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

Lorem ipsum dolor stați amet, consectetur adipiscing elit. Aborarea oratoreselor sale, și imperativul său rerum publicarum principes extiterunt. Cupidită fără diviziune de Epicuri finiebat, sed sua satietate. Venit ad extremum; Duo Reges: constructio interrete. Respondeat totidem verbis. Quis Aristidem non mortuum diligit? Quid Zeno?

Nihil acciderat ei, quod nollet, nisi quod nou, quo delectabatur, în mare abiecerat. Nondum au explicatum satisfac, erat, quid maxime natura vellet. Quod autem satis est est quocquid accessit, nimium est; Tum ille: Ain tandem? Sed ille, ut dixi, vitiose. Quantum Aristoxeni ingenium consumptum videmus în muzică? Quid enim possumus hoc veche divinius? În cazul în care vă aflați pe site-ul nostru, vă rugăm să ne contactați..

Sed quid minus probandum quam esse aliquem beatum nec satisfăcut? Primul pas este să reziste la distanțe, în ce privește turismul? Utinam quidem dicerent aliu alio beatiorem! Iam ruinas videres. Beatum, întrebați. Deinde disputat, care cuiusque generis animantium statui deceat extremum. Nihil enim iam habes, quod ad corpus referas;

Quod ea non occurrentia fingunt, vincunt Aristonem; Non semper, intreb; Quid de Platone aut de Democrito loquar? Quem Tiberina descentează festo ilo die tanto gaudio affecit, quanto L. Nu este un fel de genuit hominem, sed accepta a natura inchoatum. Scaevolam M. Recte, întrebați, intellegis. Uterul enim summo bono fruitur, id est voluptate. Sic exclude sentința reliquorum cum praeterea nulla este posibilă, haec antiquorum valeat necesită est. Sed fortuna fortis; Mihi quidem Antiochum, quem audis, satis belle videris attendere.

Vedeți volumul propunerii, care este disponibil, care este posibil? Nonne igitur tibi videntur, inqui, mala?

Atunci când o executați, cinci paragrafe din lorem ipsum sunt returnate. Poți schimba numărul după / api pentru a obține mai mult paragraf.

Știm că avem conținut, îl vom alimenta în wp-cli pentru a crea postarea. Sintaxa pentru a face asta este:

curl http://loripsum.net/api/5 | wp post genera --post_content --count = 10

Observă-l pe chracter |, înseamnă că ne confruntăm cu conținutul în următoarea ordine. Știm că avem sintaxa, putem începe să compunem sarcina

desc "Generați postarea aleatorie": gen_dummy_post,: howmany do | cmd, args | howmany = args [: howmany] pune howmany in_directory "# deploy_to / current" face coada% [curl http://loripsum.net/api/5 | ./wp-cli.phar post generați --count = # howmany --post_content] end end 

Odată ce ați cunoscut sintaxa sarcinii Mina, puteți citi mai multe despre comanda WP-CLI pentru a vă scrie propria sarcină, cum ar fi crearea de utilizatori, generarea de utilizatori falsi pentru testarea ...

Dacă doriți să vă sprijiniți mai mult despre wp-cli, puteți vizita aceste linkuri:

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

Concluzie

Acum avem o înțelegere suficient de bună despre cum să scriem sarcini Mina, cum să folosim puterea lui wp-cli. Cu combinația acestor două instrumente, sperăm că veți implementa foarte repede, iar instalarea dvs. WordPress va fi mai sigură decât înainte și va reduce timpul pentru activitățile de administrare. 

Nu te limita. Informațiile din acest tutorial sunt foarte scurte, vă rugăm să adăugați mai multe lucruri la fișierele de sarcini și să ne spuneți ce ați venit în comentariu. 

Dacă aveți o problemă, vă rugăm să lăsați un comentariu, îmi place să ajut și să vorbesc. Happy WordPress automatizare!

Cod