I den första delen av denna serie kunde vi använda Mina för att distribuera WordPress. Vi lärde oss att Mina skapar en skalskriptfil och sedan trycker WordPress till servern för att köra. Eftersom alla kommandon körs i en enda SSH-anslutning, Mina är mycket snabb.
Med hjälp av detta kan vi skriva uppgifter för att automatisera WordPress-kontrollen. Vi kan göra vanliga WordPress-uppgifter som att skapa användare, installera en plugin, säkerhetskopiera våra data och så vidare i en sekvens av skalkommandon. Sedan kombinerar vi dessa skalkommandon i Mina-uppgiften.
Men hur kan vi skapa skalkommandon för att utföra dessa uppgifter? WP-CLI är svaret. Det hjälper till att styra WordPress via kommandoraden. Du behöver inte logga in på WordPress instrumentpanel för att kunna göra administrativa uppgifter. WP-CLI ger oss en uppsättning kommandon som motsvarar WordPress admin-uppgifter. När vi väl vet WP-CLI-kommandon för en speciell uppgift behöver vi bara sätta dessa kommandon i en Mina-uppgift.
Ett mycket snabbt exempel så att du kan ha en uppgift om vad vi har med WP-CLI. När du börjar utveckla en WordPress-webbplats måste du skapa dummy-inlägg eller dummy användarkonton för teständamål.
Skrivning av detta (när du har installerat wp-cli) på din terminal skapar 100 dummy inlägg utan minimal ansträngning.
php wp-cli.phar post generera - antal 100
Se hur mycket tid kommer det att spara dig? Men behöver vi verkligen köra dessa saker via kommandoraden?
Att spara tid är bra, men inte ett behov.
Här är en mycket bra anledning att göra detta: säkerhet. Vissa åtgärder från WordPress-instrumentpanelen kräver skrivbehörighet till wp-innehåll
mapp. Exempel: ladda upp plugins, ladda upp teman, uppgradera WordPress och så vidare. Ju mer tillstånd vi ger till allmänheten, ju mer fara vi exponerar för vår webbplats.
Låt oss föreställa oss att en angripare får tillgång till vår WordPress-kontrollpanel. Attackeren kommer att kunna ladda upp skadliga skript som ett plugin. Ett sätt att förhindra detta är att inaktivera skrivbehörighet till någon mapp eller fil med WordPress utom den wp-content / uppladdningar
mapp. Därför kan ingen ladda upp ett plugin eller ett tema till webbservern.
I första delen av denna handledning lär vi oss att ge skrivbehörighet till Apache på wp-content / uppladdningar
mapp. Vi bytte ägare fartyg av wp-content / uppladdningar
till webbservernvändaren. På så sätt kan webbservern skriva till uppladdningsmappen; Därför kan WordPress ladda upp bilder och skriva in i vårt uppladdningar
mapp.
Alla åtgärder som kräver skrivning till WordPress-mappen (förutom uppladdningar
mapp) ska ske via kommandoraden. Med andra ord lägger vi till filen manuellt från vår lokala maskin, begår och distribuerar till server med Mina. Med denna inställning blir vår WordPress-katalog en skrivskyddad ruta (förutom för uppladdningar
mapp som används för att lagra våra medier).
Media Upload-funktionen i WordPress har redan ett säkerhetslager för att förhindra att PHP-filer laddas upp. Om du vill gå vidare kan du konfigurera att inte köra PHP-filer inuti uppladdningar
mapp, men det är idén och kommer inte att vara omslag i den här handledningen. Vi kommer att fokusera mer på kommandoradsåtgärder med WP-CLI.
När vi har tagit bort skrivtillstånd kommer automatisk uppdatering inte längre att fungera, och du kan inte helt enkelt uppdatera programmet från WordPress-instrumentpanelen. Eftersom vi har lyckats med vår WordPress-kod med Git, bör vi göra uppdateringen manuellt.
Vi kan ladda ner WordPress zip / tar-filen, komprimera den, skriva över den aktuella WordPress-filen. Därefter förbinder vi den nya koden, skjuter till vårt förråd och gör en utplacering med Mina.
En uppgift i Mina är bara en vanlig Rake-uppgift med a kö
metod som köpte skalkommandon för att köra på servern senare. För alla kommandon som vi vill köra på servern kan vi använda kö
metod som följer.
beskriv "Beskriv denna uppgift"
uppgift: provkö "ls # deploy_to / current" kö "touch /tmp/test.log" avsluta
De desc
block är valfritt men det är trevligt att ha. Om du skriver mina
utan någon parameter, desc
Informationen kommer att skrivas ut på skärmen för din referens.
$ mina mina - Snabba serverutplacering och automationsverktyg Alternativ: -h, --hjälp Visa hjälp -V, --version Visa programversion -v, --verbose Visa kommandon när de händer -S, --imulera Kör i simulering läge -t, --trace Visa backtraces när fel uppstår -f FILE Använd FILE som implementeringskonfiguration Grundläggande användning: mina hjälp # Visa hjälp. mina init # Skapar en sample config-fil. mina uppgifter # Visa alla uppgifter. Server-uppgifter: mina clean_cache # Ren nginx-cache mina db_export # Exportera WordPress-databas till delad / backup mina deploy # Används den nuvarande versionen till servern. mina rollback # Återgå till tidigare version mina run [command] # Kör ett kommando i servern. mina setup # Sätter upp en webbplats. mina toggle_plugin [plugin] # Byt ut ett plugin mina toggle_theme [tema] # Aktivera tema mina wp_version # Visa nuvarande WordPress-version Alla Rake-alternativ är också tillgängliga som "mina" -alternativ. Se "rake - help" för mer information.
För alla kommandon som vi vill köra på lokal maskin, kan vi använda grav accent ( ')
karaktär.
uppgift: prov sätter 'pwd' sätter 'ls -la' slutet
Låt oss testa det med mina prov
för att se vad den skriver ut på din lokala maskin.
Så i princip byggs en Mina-uppgift genom att skapa ett block av uppgift: task_name do // ... end
Uppgiften kan åberopas med mina uppgiftsnamn
. Om vi behöver överföra argument till uppgiften kan vi använda den här syntaxen:
uppgift: task_name,: arg,: another_arg do | cmd, args | sätter args [: arg] sätter args [: another_arg] end
Konsolen []
är bara Ruby sättet att komma åt en hash. Du kan tänka på det som PHP associativ array. Vi heter argumentet, sedan inuti uppgiftskroppen, kan vi enkelt komma åt dess värde med args [: argument_name]
. I det här exemplet är argumentnamn : arg
och : another_arg
Uppgiften kan åberopas med denna syntax: mina uppgiftsnamn [param1, param2]
. Fler argument kan läggas till och vi kommer att vidarebefordra mer parameter till det som mina uppgiftsnamn [param1, param2, param3, param4]
.
Du kan föreställa dig att arbetsnamn
är en metod
namn och vi ringer en metod och går igenom sitt argument. Om parametern har ett mellanslag ska vi sätta in hela parametern med ett citat.
Låt försöka över uppgiften nu. Det skriver bara ut vad vi passerar in i det.
$ mina uppgiftsnamn [värde1, "värde 2 med lite utrymme"]
value1
värde 2 med lite utrymme
Om du använde zsh-skal, måste du flyga [och] med backslash:
$ mina uppgiftsnamn \ [värde1, "värde 2 med lite utrymme" \]
En annan sak att notera är in_directory
metod av Mina. Det är mycket troligt att du måste CD
till en katalog och kör ett par kommandon. I stället för att manuellt köaCD
kommando, vi kan använda den praktiska in_directory
metod. Det kommer att köra kommandot i katalogen vi anger.
uppgift: prov gör in_directory "# deploy_to / current" kö "pwd"
änden
Okej nog för teori. Låt oss börja den roliga delen: Vi installerar wp-cli och installerar sedan några uppgifter.
Allt vi behöver är att ladda ner PHAR-filen i WP-CLI. Det är en enda fil som kan köras till PHP-motorn. Istället för att ha en massa PHP-filer kan du komprimera dem till en enda fil som kan köras av PHP.
Det är ett mycket enkelt sätt att distribuera PHP-paket. Precis som på Windows, laddar du ner en programvara i en enda .EXE-fil och kör den. Att göra detta, CD
kör in i din WordPress-kod på den lokala maskinen, kör det här kommandot:
curl -L https://raw.github.com/wp-cli/builds/gh-pages/phar/wp-cli.phar> wp-cli.phar chmod + x wp-cli.phar
Låt oss verifiera att det fungerar. Kör på din lokala maskin wp-cli.phar - info
och du bör få följande utmatning.
./wp-cli.phar - info
PHP binär: / usr / bin / php
PHP-version: 5.4.24
php.ini används: /etc/php.ini
WP-CLI root dir: phar: //wp-cli.phar
WP-CLI global config:
WP-CLI-projektkonfiguration:
WP-CLI-version: 0.14.1
Nu är wp-cli i samma katalog med din WordPress, låt oss begå det och
tryck till ditt förråd och gör en utplacering.
git lägg till wp-cli.phar git commit -m "Lägg till wpcli" git push origin master mina deploy
Vid denna tidpunkt är wp-cli i vår WordPress-katalog på servern. Låt oss göra lite magi med det: skriva Mina uppgift med wp-cli.
I det här avsnittet kommer jag att visa dig hur du gör några grundläggande uppgifter med wp-cli och hur du lägger dem in i Mina så att du kan få en smak av hur saker ser ut och gå skriv din egen uppgift för att matcha ditt arbetsflöde och din behöver. Första saker först: Hej världen.
Det allra första, mycket enkla kommandot för wp-cli är att visa aktuell WordPress-version. Låt skapa en mer Mina uppgift. Lägg till detta på din config / deploy.rb
fil:
desc: "Visa nuvarande WordPress version" uppgift: wp_version =>: miljö gör kö% [echo "-----> Hej världen. Jag är i den här versionen nu:"] kö "cd # deploy_to / current &&. /wp-cli.phar kärnversion "slutet
Nu försök att köra den:
$ mina wp_version -----> Hej världen. Jag är i denna version nu: 3.8.1 Förfluten tid: 0,00 sekunder
Vi hämtar ett plugin för hand, extraherar det, lägger till det i förvaret, begår det, lägger sedan in och kör en annan mina uppgift för att aktivera ett plugin.
Här är koden vi behöver för den här uppgiften
desc "Toggle a plugin" uppgift: toggle_plugin,: arg1 do | cmd, plugin | kö% [echo "----> Aktivera tema # theme"] in_directory "# deploy_to / current" gör köen% [./wp-cli.phar plugin toggle # plugin] slutet
Vi kö ett echo-kommando för att mata ut lite text. Kommandot att aktivera ett plugin från wp-cli är plugin växla plugin_name
.
Till exempel, säg att vi vill installera Mathjax Latex-plugin, och vi har redan lagt in det wp-content / plugins
.
Vi kan installera så här:
git lägg till wp-innehåll / plugins / mathjax-latex git commit -m "Lägg till mathjax plugin" git push origin master mina deploy
Nu är plugin installerat. Aktivering kan göras via WordPress instrumentpanel. Men eftersom vi har vår Mina-uppgift, så försök det:
$ mina toggle_plugin \ ["mathjax-latex" \] # Ska utdata ----> Växla plugin mathjax-latex Framgång: Plugin 'mathjax-latex' aktiverad.
Uppdatering av ett plugin är bara samma procedur. Du laddar ner pluginet och kopierar det till wp-content / plugins / [plugin-behov-till-uppdatering]
, begå och omplacera.
Arbetsflödet är precis som hur vi gör med plugin, bara ett annat wp-cli-kommando för att aktivera temat. Vi behöver bara lägga till temat i Git, commit, push, deploy.
Ta en titt på följande exempel där vi installerar detta tema. Vi har redan laddat ner och lagt den in i wp-innehåll / teman / natsume.
git lägg till wp-innehåll / teman / natsume git commit -m "Lägg till mathjax plugin" git push origin master mina deploy
Återigen kan temat aktiveras på WordPress admin-användargränssnitt. Men låt oss göra en Mina-uppgift så att vi kan aktivera det när vi distribuerar det, från kommandoraden.
Här är uppgiften:
desc "Aktivera tema"
uppgift: toggle_theme,: theme do | cmd, args |
tema = args [: tema]
kö% [echo "----> Aktivera tema # tema"]
in_directory "# deploy_to / current" gör
kö% [./wp-cli.phar tema aktivera # tema]
slutet
slutet
För att aktivera ett tema, kör vår uppgift:
$ mina toggle_theme \ ["natsume" \]
Denna uppgift kommer att dumpa WordPress-databasen till en gzip-fil i delad / backup
mapp. Om säkerhetskopieringsmappen inte existerar kommer vi att skapa den, då kallar vi kommandot wp-cli db för att dumpa databasen till en fil.
Filnamnet kommer att vara en kombination av datum och tid när vi exporterar i detta format "[år] [månad] [dag] _ [timme] [minut] [andra] .sql.gz".
Låt oss komponera vår Mina uppgift.
desc "Exportera WordPress-databas till delad / backup" uppgift: db_export gör # skapa backup-katalog om det inte går ut backup_to = "# deploy_to / shared / backup" kö% [[-d # backup_to] || mkdir -p # backup_to] in_directory "# deploy_to / current" gör tid = Time.new file = "# time.year # time.month # time.day _ # time.hour # time.min # time.sec .sql.gz "kö% [echo" ----> Säkerhetskopiera databasen till # file "] kö% [./wp-cli.phar db export - | gzip> # backup_to / # file] slutet slutet
[-d namn]
är en syntax för att kontrollera mappens existens. Om inte, använder vi mkdir för att skapa den.
Sedan använder vi Time object of Ruby för att extrahera datum och tid och sammanfoga tillsammans för att skapa vårt filnamn.
När du vill säkerhetskopiera, skriver du från din lokala maskin:
$ mina db_export
Enkel och elegant. Ett kommando och du har allt.
Ofta när du ändrar domänen måste du konfigurera den igen i wp-config.php, eller uppdatera domänen manuellt i databasen. Hur som helst är det mycket arbete.
Låt oss bara lösa den här gången. Kommandot att uppdatera ett alternativ är: Uppdatering av wp-cli [option_key] [option_value]
. Enligt WordPress-dokumentationen finns domänen i två alternativ: Hem
och SITEURL
.
update_option ( 'SITEURL', 'http: //example.com'); update_option ( 'hem', 'http: //example.com');
Så här är vår uppgift:
desc "Ändra domän till ny"
uppgift: update_domain,: domain do | cmd, args |
domain = args [: domain]
sätter domän
in_directory "# deploy_to / current" gör
kö% [./ wp-cli.phar alternativuppdatering hem # domain]
kö% [./ wp-cli.phar alternativuppdatering siteurl # domain]
slutet
slutet
Uppkalla det från kommandoraden:
$ mina update_domain \ ["http://log.axcoto.com" \]
En mycket praktisk funktion hos wp-cli är efter generation. Under testtiden kan du hitta dig själv manuellt och skapa många dummy-inlägg. Kommandot att skapa post med wp-cli är wp-cli post generera - count = kvantitet
. Som alltid kan du läsa syntaxen själv på wp-cli-webbplatsen.
Vi kommer att skapa ett uppgiftssamtal gen_dummy_post
med en parameter är antalet inlägg. För att få innehåll av inlägg, använder vi curl för att få en lorem ipsum text via Loripsum API. cURL är ett kommandoradsverktyg som vanligtvis är förinstallerat på Linux / Mac OS som låter dig skicka HTTP-förfrågan.
Du kan tänka på det som en webbläsare, men kör på kommandoraden. Så istället för att skriva en adress i din webbläsare och se produktionen i din webbläsare, ger du cURL en webbadress och returnerar webbplatsens innehåll.
Låt oss försöka under kommandot:
$ curl http://loripsum.net/api/5Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ab hans oratorer, efter hans imperatorer, är de offentliga principerna yttersta. Cupiditates non Epicuri divisione 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 anulum, quo delectabatur, in maria abiecerat. Nondum autem explanatum satis, erat, quid maxime natura vellet. Förbättrad autodisplay, eo quicquid accessit, nimium est; Tum ille: Ain tandem? Säkert, ut dixi, vitiose. Kvantum Aristoxeni ingenium konsumerar videmus i musicis? Varför är det möjligt för dig att äta? Utanför det är du välkommen, du vet vad du vill, vilket är det populäraste fama gloriosumet.
Ställning minus proband quam esse aliquem beatum nec satis beatum? Primum cur ista res digna odio est nisi quod est turpis? Utinam quidem dicerent alium alio beatiorem! Iam ruinas videres. Beatum, inquit. Deinde disputat, quod cuiusque generis animantium statui deceat extremum. Nihil enim iam habes, quod ad corpus referas;
Quod ea non occurrentia fingunt, vincunt Aristonem; Icke-sempre, inquam; Quid de Platone aut de Democrito loquar? Quem Tiberina descensio festo illo dö tanto gaudio affecit, quanto L. Inte enim ipsa genuit hominem, sed acceptera en naturlig inchoatum. Scaevolam M. Recte, inquit, intellegis. Uterque enim summo bono fruitur, id är voluptate. Det finns enbart en förklaring om reliquorum som inte är en förutsättning för detta, men det är inte nödvändigtvis nödvändigt. Mihi quidem Antiochum, quem audis, satis belle videris attendere.
Namnlösa: Namn på volymen, du är välkommen, kan du ha det med dig? Nonne igitur tibi videntur, inquit, mala?
Så när du kör det, returneras fem stycken lorem ipsum. Du kan ändra numret efter / api
för att få mer stycke.
Vi vet att vi har innehåll, vi kommer att mata in det i wp-cli för att skapa inlägg. Syntaxen för att göra det är:
curl http://loripsum.net/api/5 | wp post generera --post_content - count = 10
Lägg märke till chracter |
, det betyder att vi pipar innehållet i nästa kommad. Vi vet att vi har syntaxen, vi kan börja komponera uppgiften
desc "Generera random post" uppgift: gen_dummy_post,: howmany do | cmd, args | howmany = args [: howmany] sätter hur mycket in_directory "# deploy_to / current" gör kö% [curl http://loripsum.net/api/5 | ./wp-cli.phar post generera --count = # howmany --post_content] änden
När du visste syntaxen i Mina-uppgiften kan du läsa mer om WP-CLI-kommandot för att skriva din egen uppgift, t.ex. skapa användare, generera dummy-användare för testning ...
Om du vill luta mer om wp-cli kan du besöka dessa länkar:
Vi har nu en tillräckligt bra förståelse för hur man skriver Mina uppgifter, hur man använder kraften i wp-cli. Med kombinationen dessa två verktyg, hoppas du kommer att distribuera mycket snabbt, och din WordPress-installation kommer att vara säkrare än tidigare och minska tiden för administrationsuppgifter.
Begränsa inte dig själv. Informationen i denna handledning är väldigt kort, lägg till fler saker i dina arbetsfiler och meddela vad du kommit på.
Om du har något problem, vänligen lämna en kommentar, jag gillar att hjälpa och prata. Glad WordPress-automation!