Nella prima parte di questa serie, siamo stati in grado di utilizzare Mina per distribuire WordPress. Abbiamo appreso che Mina crea un file script di shell, quindi spinge WordPress sul server per l'esecuzione. Poiché tutti i comandi vengono eseguiti in una singola connessione SSH, Mina è molto veloce.
Utilizzando questo, possiamo scrivere attività per automatizzare il controllo di WordPress. Possiamo trasformare normali attività WordPress come la creazione di utenti, l'installazione di plug-in, il backup dei nostri dati e così via in una sequenza di comandi della shell. Quindi combiniamo questi comandi di shell nell'attività di Mina.
Ma come possiamo creare i comandi della shell per eseguire queste attività? WP-CLI è la risposta. Aiuta a controllare WordPress tramite la riga di comando. Non è necessario accedere al dashboard di WordPress per eseguire attività di amministrazione. WP-CLI ci fornisce una serie di comandi corrispondenti alle attività di amministrazione di WordPress. Una volta che conosciamo i comandi WP-CLI per un compito speciale, abbiamo solo bisogno di mettere questi comandi in un compito Mina.
Un esempio molto rapido in modo che tu possa avere un compito su ciò che abbiamo con WP-CLI. Quando si inizia a sviluppare un sito WordPress, è necessario creare post fittizi o account utente fittizi a scopo di test.
Digitando questo (una volta installato wp-cli) sul tuo terminale, creerai 100 post fittizi senza il minimo sforzo.
php wp-cli.phar post genera --count 100
Vedi quanto tempo ti salverà? Ma abbiamo davvero bisogno di eseguire queste cose tramite la linea di comando?
Risparmiare tempo è bello, ma non necessario.
Ecco una buona ragione per farlo: sicurezza. Alcune azioni dal dashboard di WordPress richiedono il permesso di scrittura per wp-content
cartella. Esempio: caricamento di plug-in, caricamento di temi, aggiornamento di WordPress e così via. Più permesso concediamo al pubblico, maggiore è il pericolo che stiamo esponendo al nostro sito.
Immaginiamo che un utente malintenzionato abbia accesso al nostro dashboard WordPress. L'autore dell'attacco sarà in grado di caricare script dannosi come plug-in. Un modo per evitare ciò è disabilitare il permesso di scrittura su qualsiasi cartella o file di WordPress eccetto il wp-content / uploads
cartella. Pertanto, nessuno può caricare un plugin o un tema sul server web.
Nella prima parte di questo tutorial, impariamo a dare il privilegio di scrittura ad Apache wp-content / uploads
cartella. Abbiamo cambiato la proprietà del proprietario di wp-content / uploads
per l'utente del web server. In questo modo, il server Web può scrivere nella cartella uploads; pertanto, WordPress può caricare immagini e scrivere nel nostro uploads
cartella.
Qualsiasi azione che richiede la scrittura nella cartella WordPress (tranne il file uploads
cartella) dovrebbe essere fatto tramite la riga di comando. In altre parole, aggiungeremo il file manualmente dalla nostra macchina locale, effettueremo il commit e la distribuzione sul server con Mina. Con questa configurazione, la nostra directory WordPress diventa una casella di sola lettura (ad eccezione di uploads
cartella che viene utilizzata per memorizzare i nostri media).
La funzionalità di caricamento dei media di WordPress ha già un livello di sicurezza per impedire il caricamento di file PHP. Se vuoi andare oltre, puoi configurare per non eseguire file PHP all'interno uploads
cartella, ma questa è l'idea e non sarà la copertina di questo tutorial. Ci concentreremo di più sull'azione a riga di comando con WP-CLI.
Una volta rimosso il permesso di scrittura, l'aggiornamento automatico non funzionerà più e non potrai semplicemente aggiornare l'applicazione dal dashboard di WordPress. Poiché abbiamo gestito il nostro codice WordPress con Git, dovremmo eseguire l'aggiornamento manualmente.
Possiamo scaricare il file zip / tar di WordPress, decomprimerlo, sovrascrivere il file WordPress corrente. Successivamente, eseguiamo il commit del nuovo codice, spingiamo al nostro repository e facciamo una distribuzione con Mina.
Un compito in Mina è solo un normale compito di Rake con a coda
metodo che ha accodato i comandi della shell per l'esecuzione sul server in un secondo momento. Per qualsiasi comando che vogliamo eseguire sul server, possiamo usare il coda
metodo come segue.
desc "Descrivi questo compito"
task: sample fa queue "ls # deploy_to / current" queue "tocca /tmp/test.log" end
Il disc
il blocco è facoltativo ma è bello avere. Se si digita Mina
senza alcun parametro, il disc
le informazioni saranno stampate sullo schermo per il vostro riferimento.
$ mina mina - Implementazione server e strumento di automazione veramente veloci Opzioni: -h, --help Mostra help -V, --version Mostra la versione del programma -v, --verbose Mostra i comandi mentre accadono -S, --simula Esegui in simulazione mode -t, --trace Mostra backtraces quando si verificano errori -f FILE Usa FILE come configurazione di deploy Uso di base: mina help # Mostra help. mina init # Crea un file di configurazione di esempio. mina tasks # Mostra tutte le attività. Attività del server: mina clean_cache # Pulizia cache nginx mina db_export # Esporta database WordPress su condivisione / backup mina deploy # Distribuisce la versione corrente al server. mina rollback # Rollback alla versione precedente mina run [comando] # Esegue un comando nel server. mina setup # Imposta un sito. mina toggle_plugin [plugin] # Attiva / disattiva un plugin mina toggle_theme [theme] # Attiva il tema mina wp_version # Mostra la versione corrente di WordPress Tutte le opzioni di Rake sono anche disponibili come opzioni 'mina'. Vedi 'rake --help' per maggiori informazioni.
Per qualsiasi comando che vogliamo eseguire sul computer locale, possiamo usare il apice inverso ( ')
personaggio.
compito: sample fa puts 'pwd' mette 'ls -la' fine
Proviamoci con campione di mina
per vedere cosa stampa sul tuo computer locale.
Quindi, fondamentalmente un compito Mina viene creato creando un blocco di task: task_name do // ... end
L'attività può essere invocata con mina nome_attività
. Se abbiamo bisogno di passare argomento nell'attività, allora possiamo usare questa sintassi:
task: nome_attività,: arg,: another_arg do | cmd, args | puts args [: arg] mette args [: another_arg] end
La staffa []
è solo il modo Ruby per accedere a un hash. Puoi pensarlo come un array associativo PHP. Diamo un nome all'argomento, quindi all'interno del corpo del compito, possiamo facilmente accedere al suo valore con args [: argument_name]
. In questo esempio, argument_name è : arg
e : another_arg
L'attività può essere richiamata con questa sintassi: mina taskname [param1, param2]
. Ulteriori argomenti possono essere aggiunti e passeremo più parametri ad esempio mina taskname [param1, param2, param3, param4]
.
Puoi immaginare che il taskname
è un metodo
nome e stiamo chiamando un metodo e passando il suo argomento. Se il parametro ha uno spazio, dovremmo racchiudere l'intero parametro con una citazione.
Lascia provare sopra l'attività ora. Stampa tutto ciò che ci passa sopra.
$ mina nome_attività [valore1, "valore 2 con un po 'di spazio"]
valore1
valore 2 con un po 'di spazio
Se hai usato la shell di zsh, devi sfuggire [e] con il backslash:
$ mina nome_attività \ [valore1, "valore 2 con un po 'di spazio" \]
Un'altra cosa da notare è il in_directory
metodo di Mina. È molto probabile che ne avrai bisogno CD
in una directory ed eseguire un paio di comandi. Invece di fare la fila manualmenteCD
comando, possiamo usare il pratico in_directory
metodo. Avvia il comando all'interno della directory che indichiamo.
task: sample do in_directory "# deploy_to / current" do queue "pwd"
fine fine
Ok, abbastanza per la teoria. Iniziamo la parte divertente: installeremo wp-cli, quindi configureremo alcune attività.
Tutto ciò di cui abbiamo bisogno è scaricare il file PHAR di WP-CLI. È un singolo file che è eseguibile per il motore PHP. Invece di avere un mucchio di file PHP, puoi comprimerli in un singolo file eseguibile da PHP.
È un modo molto semplice per distribuire pacchetti PHP. Proprio come su Windows, puoi scaricare un software in un unico file .EXE ed eseguirlo. Per fare questo, CD
nel tuo codice WordPress sul computer locale, esegui questo comando:
curl -L https://raw.github.com/wp-cli/builds/gh-pages/phar/wp-cli.phar> wp-cli.phar chmod + x wp-cli.phar
Cerchiamo che funzioni. Sul tuo computer locale, corri wp-cli.phar --info
e dovresti ottenere il seguente risultato.
./wp-cli.phar --info
Binario PHP: / usr / bin / php
Versione PHP: 5.4.24
php.ini usato: /etc/php.ini
Dir root WP-CLI: phar: //wp-cli.phar
Configurazione globale WP-CLI:
Configurazione del progetto WP-CLI:
Versione WP-CLI: 0.14.1
Ora, wp-cli è nella stessa directory con il tuo WordPress, lo commettiamo e
spingere al repository e fare una distribuzione.
git aggiungi wp-cli.phar git commit -m "Aggiungi wpcli" git push origine master mina deploy
A questo punto, wp-cli è nella nostra directory WordPress sul server. Facciamo un po 'di magia con esso: scrivendo il compito di Mina con wp-cli.
In questa sezione, ti mostrerò come eseguire alcune attività di base con wp-cli e come metterle in Mina in modo da avere un assaggio di come sia la cosa e andare a scrivere il tuo compito in modo che corrisponda al tuo flusso di lavoro e al tuo bisogno. Per prima cosa: Hello World.
Il primo, molto semplice comando di wp-cli è di mostrare la versione corrente di WordPress. Lascia creare un altro compito Mina. Aggiungi questo al tuo config / deploy.rb
file:
desc "Mostra l'attuale versione di WordPress" task: wp_version =>: environment do queue% [echo "-----> Ciao mondo. Sono ora in questa versione:"] queue "cd # deploy_to / current &&. /wp-cli.phar core version "end
Ora, prova ad eseguirlo:
$ mina wp_version -----> Ciao mondo. Sono a questa versione ora: 3.8.1 Tempo trascorso: 0.00 secondi
Scaricheremo un plug-in a mano, lo estraiamo, lo aggiungiamo al repository, lo impegniamo, quindi distribuiamo ed eseguiamo un'altra operazione mina per attivare un plugin.
Ecco il codice di cui abbiamo bisogno per questo compito
desc task "Toggle a plugin": toggle_plugin,: arg1 do | cmd, plugin | queue% [echo "----> Attiva tema # tema"] in_directory "# deploy_to / current" fai coda% [./ wp-cli.phar plug-in toggle # plugin] end end
Mettiamo in coda un comando echo per produrre del testo. Il comando per attivare un plugin da wp-cli è plug-in toggle plugin_name
.
Ad esempio, diciamo che vogliamo installare il plugin Mathjax Latex e lo abbiamo già inserito wp-content / plugins
.
Possiamo installare in questo modo:
git aggiungi wp-content / plugins / mathjax-latex git commit -m "Aggiungi plugin mathjax" git push origine master mina deploy
Ora il plugin è installato. L'attivazione può essere effettuata tramite la dashboard di WordPress. Ma visto che abbiamo il nostro compito Mina, provalo:
$ mina toggle_plugin \ ["mathjax-latex" \] # Dovrebbe essere in uscita ----> Attiva / disattiva plugin mathjax-latex Success: Plugin 'mathjax-latex' attivato.
L'aggiornamento di un plugin è la stessa procedura. Scarichi il plugin, copialo su wp-content / plugins / [plug-bisogno-di-update]
, commettere e ri-distribuire.
Il flusso di lavoro è proprio come facciamo con il plugin, solo un diverso comando wp-cli per attivare il tema. Abbiamo solo bisogno di aggiungere il tema in Git, commit, push, deploy.
Dai un'occhiata al seguente esempio in cui installeremo questo tema. Abbiamo già scaricato e inserito in wp-content / themes / natsume.
git aggiungi wp-content / themes / natsume git commit -m "Aggiungi plug-in mathjax" git push origine master mina deploy
Ancora una volta, l'attivazione del tema può essere eseguita sull'interfaccia utente di amministrazione di WordPress. Ma facciamo un compito Mina in modo che possiamo attivarlo una volta che lo distribuiamo, dalla riga di comando.
Ecco il compito:
desc "Attiva tema"
compito: toggle_theme,: theme do | cmd, args |
theme = args [: tema]
queue% [echo "----> Attiva il tema # tema"]
in_directory "do deploy_to / current" do
coda% [./ wp-cli.phar theme activate # theme]
fine
fine
Per attivare un tema, esegui il nostro compito:
$ mina toggle_theme \ ["natsume" \]
Questa attività eseguirà il dump del database di WordPress in un file gzip in condiviso / backup
cartella. Se la cartella di backup non esiste ancora, la creeremo, quindi chiameremo il comando wp-cli db per scaricare il database in un file.
Il nome del file sarà la combinazione di data e ora quando esportiamo in questo formato "[anno] [mese] [giorno] _ [ora] [minuto] [secondo] .sql.gz".
Componiamo il nostro compito Mina.
desc "Esporta database WordPress in condivisione / backup": db_export do # crea directory di backup se non è exit backup_to = "# deploy_to / shared / backup" queue% [[-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 "coda% [echo" ----> Esegui backup del database in # file "] coda% [./ wp-cli.phar esportazione db - | gzip> # backup_to / # file] end-end
[-d nome]
è una sintassi per verificare l'esistenza della cartella. Altrimenti, usiamo mkdir per crearlo.
Quindi, utilizziamo l'oggetto Tempo di Ruby per estrarre data e ora e concatenare insieme per creare il nostro nome file.
Quando si desidera eseguire il backup, dal proprio computer locale, digitare:
$ mina db_export
Semplice ed elegante. Un comando e tu hai tutto.
Molto spesso, quando cambi il dominio, devi riconfigurarlo in wp-config.php o aggiornare manualmente il dominio nel database. Ad ogni modo, è molto lavoro.
Risolviamo questa volta una volta. Il comando per aggiornare un'opzione è: aggiornamento opzione wp-cli [opzione_key] [valore_opzione]
. Secondo la documentazione di WordPress, il dominio è in due opzioni: casa
e indirizzo del sito
.
update_option ( 'siteurl', 'http: //example.com'); update_option ( 'casa', 'http: //example.com');
Quindi, ecco il nostro compito:
desc "Cambia dominio in uno nuovo"
task: update_domain,: domain do | cmd, args |
domain = args [: dominio]
mette il dominio
in_directory "do deploy_to / current" do
coda% [./ wp-cli.phar aggiornamento opzione home # dominio]
coda% [./ wp-cli.phar aggiornamento opzione siteurl # dominio]
fine
fine
Richiamalo dalla riga di comando:
$ mina update_domain \ ["http://log.axcoto.com" \]
Una funzionalità molto utile di wp-cli è post generazione. Durante il tempo di test, puoi trovare manualmente la creazione di molti post fittizi. Il comando per creare post con wp-cli è wp-cli post genera --count = quantità
. Come sempre, puoi leggere la sintassi sul sito web wp-cli.
Creeremo una chiamata di attività gen_dummy_post
con un parametro è il numero di post. Per ottenere il contenuto del post, useremo curl per ottenere un testo di lorem ipsum tramite il Loripsum API. cURL è uno strumento a riga di comando che di solito è preinstallato su Linux / Mac OS che consente di inviare una richiesta HTTP.
Puoi pensarlo come un browser, ma eseguirlo sulla riga di comando. Quindi, invece di digitare un indirizzo nel tuo browser e vedere l'output sul tuo browser, fornisci a cURL un indirizzo web e restituisce il contenuto del sito web.
Proviamo sotto il comando:
$ curl http://loripsum.net/api/5Lorem ipsum dolor sit amet, consectetur adipiscing elit. Con i suoi oratori, i suoi imperatores ac rerum publicarum principes extiterunt. Cupiditates non epicuri divisione finiebat, sed sua satietate. Venit ad extremum; Duo Reges: constructio interrete. Rispondere al totidem verbis. Quis Aristidem non mortuum diligit? Quid Zenone?
Nihil acciderat ei, quod nollet, nisi quod anulum, quo delectabatur, in mari abiecerat. Nondum autem explanatum satis, erat, quid maxime natura vellet. Quod autem satis est, eo quicquid accessit, nimium est; Tum ille: Ain tandem? Sed ille, ut dixi, vitiose. Quantum Aristoxeni ingenium consumptum videmus in musicis? Quid enim possumus hoc agere divinius? Ut enim consuetudo loquitur, id solum dicitur honestum, quod est populari fama gloriosum.
Sed quid minus probandum 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, domanda. Deinde disputat, quod cuiusque generis animantium statui decima extremum. Nihil enim iam habes, quod ad corpus referas;
Quod ea non occurrentia fingunt, vincunt Aristonem; Non sempre, richiesta; Quid de Platone aut de Democrito loquar? Quem Tiberina descensio festo illo muore tanto afflitto, quanto L. Non enim ipsa genuit hominem, sed acceptit a natura inchoatum. Scaevolam M. Recte, inquis, intellegis. Uterque enim summo bono fruitur, id est voluptate. Sic esclusis sententiis reliquorum cum praeterea nulla esse possit, haec antiquorum valeat necesse est. Sed fortuna fortis; Mihi quidem Antiochum, quem audis, satis belle videris attendere.
Nam si propter voluptatem, quae est ista laus, quae possit e macello peti? Nonne igitur tibi videntur, inquis, mala?
Quindi quando lo esegui, vengono restituiti cinque paragrafi di lorem ipsum. Puoi cambiare il numero dopo / api
per ottenere più paragrafi.
Sappiamo di avere contenuto, lo inseriremo in wp-cli per creare post. La sintassi per farlo è:
curl http://loripsum.net/api/5 | wp post generate --post_content --count = 10
Notare il carattere |
, significa che stiamo convogliando il contenuto nella prossima commando. Sappiamo di avere la sintassi, possiamo iniziare a comporre il compito
desc "Genera post casuale" task: gen_dummy_post,: quanti fanno | cmd, args | howmany = args [: howmany] mette quache in_directory "# deploy_to / current" fa la coda% [curl http://loripsum.net/api/5 | ./wp-cli.phar post genera --count = # howmany --post_content] end end
Una volta conosciuta la sintassi dell'attività di Mina, puoi leggere ulteriori informazioni sul comando WP-CLI per scrivere la tua attività come creare utenti, generare utenti fittizi per testare ...
Se vuoi saperne di più su wp-cli, puoi visitare questi link:
Ora abbiamo una comprensione abbastanza buona di come scrivere i compiti di Mina, come utilizzare la potenza di wp-cli. Con la combinazione di questi due strumenti, spero che ti schiererai molto velocemente e che l'installazione di WordPress sarà più sicura di prima e ridurrà il tempo per le attività di amministrazione.
Non limitarti. Le informazioni contenute in questo tutorial sono molto brevi, per favore aggiungi più cose ai tuoi file di attività e facci sapere cosa hai commentato.
Se hai qualche problema, per favore lascia un commento, mi piace aiutare e parlare. Buona automazione WordPress!