En la primera parte de esta serie, pudimos usar Mina para implementar WordPress. Nos dimos cuenta de que Mina crea un archivo de script de shell y luego ejecuta WordPress en el servidor para que se ejecute. Dado que todos los comandos se ejecutan en una sola conexión SSH, Mina es muy rápida.
Utilizando esto, podemos escribir tareas para automatizar el control de WordPress. Podemos convertir las tareas normales de WordPress, como crear usuarios, instalar complementos, hacer una copia de seguridad de nuestros datos, etc. en una secuencia de comandos de shell. Luego combinamos estos comandos de shell en la tarea de Mina.
Pero, ¿cómo podemos crear los comandos de shell para realizar esas tareas? WP-CLI es la respuesta. Ayuda a controlar WordPress a través de la línea de comandos. No es necesario iniciar sesión en el panel de WordPress para realizar tareas de administración. WP-CLI nos brinda un conjunto de comandos que se corresponde con las tareas de administración de WordPress. Una vez que conocemos los comandos de WP-CLI para una tarea especial, solo necesitamos poner estos comandos en una tarea de Mina.
Un ejemplo muy rápido para que pueda tener una tarea de lo que tenemos con WP-CLI. Al comenzar a desarrollar un sitio de WordPress, debe crear publicaciones ficticias o cuentas de usuarios ficticias para realizar pruebas..
Escribir esto (una vez que hayas instalado wp-cli) en tu terminal te creará 100 publicaciones ficticias sin el menor esfuerzo.
php wp-cli.phar publicar generar --count 100
¿Ves cuánto tiempo te ahorrará? Pero, ¿realmente necesitamos ejecutar estas cosas a través de la línea de comandos??
Ahorrar tiempo es bueno, pero no es una necesidad.
Aquí hay una muy buena razón para hacer esto: seguridad. Algunas acciones del tablero de WordPress requieren permiso de escritura para el wp-contenido
carpeta. Ejemplo: cargar complementos, cargar temas, actualizar WordPress, etc. Cuanto más permiso otorgamos al público, más peligro estamos exponiendo a nuestro sitio.
Imaginemos que un atacante obtiene acceso a nuestro panel de WordPress. El atacante podrá cargar scripts maliciosos como un complemento. Una forma de evitar esto es deshabilitar el permiso de escritura en cualquier carpeta o archivo de WordPress, excepto el wp-contenido / subidas
carpeta. Por lo tanto, nadie puede cargar un complemento o tema en el servidor web.
En la primera parte de este tutorial, aprendemos a otorgar privilegios de escritura a Apache en wp-contenido / subidas
carpeta. Cambiamos la nave propietaria de wp-contenido / subidas
al usuario del servidor web. De esa manera, el servidor web puede escribir en la carpeta de subidas; Por lo tanto, WordPress puede subir fotos y escribir en nuestro subidas
carpeta.
Cualquier acción que requiera escribir en la carpeta de WordPress (excepto la subidas
carpeta) debe hacerse a través de la línea de comandos. En otras palabras, agregaremos el archivo manualmente desde nuestra máquina local, confirmaremos e implementaremos en el servidor con Mina. Con esta configuración, nuestro directorio de WordPress se convierte en un cuadro de sólo lectura (a excepción de la subidas
carpeta que se utiliza para almacenar nuestros medios de comunicación).
La función de carga de medios de WordPress ya tiene una capa de seguridad para evitar la carga de archivos PHP. Si desea ir más lejos, puede configurar para no ejecutar archivos PHP dentro de subidas
carpeta, pero esa es la idea y no se cubrirá en este tutorial. Nos centraremos más en la acción de la línea de comandos con WP-CLI.
Una vez que eliminamos el permiso de escritura, la actualización automática ya no funcionará, y usted no puede simplemente actualizar la aplicación desde el tablero de WordPress. Ya que hemos administrado nuestro código de WordPress con Git, debemos hacer la actualización manualmente..
Podemos descargar el archivo zip / tar de WordPress, descomprimirlo y sobrescribir el archivo de WordPress actual. A continuación, confirmamos el nuevo código, lo empujamos a nuestro repositorio y hacemos un despliegue con Mina.
Una tarea en Mina es solo una tarea normal de Rake con una cola
Método que puso en cola los comandos de shell para ejecutarse en el servidor más adelante. Para cualquier comando que queramos ejecutar en el servidor, podemos usar el cola
método como el siguiente.
desc "Describe esta tarea"
tarea: muestra de cola "ls # deploy_to / current" queue "touch /tmp/test.log" fin
los desc
El bloque es opcional pero es bueno tenerlo. Si escribes mina
sin ningún parámetro, el desc
La información se imprimirá en pantalla para su referencia..
$ mina mina - Herramienta de implementación y automatización del servidor realmente rápida Opciones: -h, --help Mostrar ayuda -V, --version Mostrar versión del programa -v, --verbose Mostrar comandos a medida que ocurren -S, --simulate Ejecutar en simulación mode -t, --trace Muestra los trazas de retroceso cuando ocurren errores -f ARCHIVO Use ARCHIVO como la configuración de implementación Uso básico: ayuda de la mina # Mostrar ayuda. mina init # Crea un archivo de configuración de muestra. Minas tareas # Mostrar todas las tareas. Tareas del servidor: mina clean_cache # Limpiar caché nginx mina db_export # Exportar la base de datos de WordPress a un servidor compartido / de copia de seguridad de copia # Implementa la versión actual en el servidor. mina rollback # Rollback a la versión anterior mina run [comando] # Ejecuta un comando en el servidor. Configuración de mina # Configura un sitio. mina toggle_plugin [plugin] # Alternar un plugin mina toggle_theme [tema] # Activar tema mina wp_version # Mostrar la versión actual de WordPress Todas las opciones de Rake también están disponibles como opciones 'mina'. Ver 'rake --help' para más información..
Para cualquier comando que queramos ejecutar en una máquina local, podemos usar el comando comilla (')
personaje.
tarea: muestra do pone 'pwd' pone 'ls -la' final
Vamos a probarlo con muestra de mina
para ver lo que se imprime en su máquina local.
Entonces, básicamente una tarea de Mina se construye creando un bloque de tarea: task_name do //… end
La tarea puede ser invocada con mina task_name
. Si necesitamos pasar un argumento a la tarea, entonces podemos usar esta sintaxis:
task: task_name,: arg,: another_arg do | cmd, args | pone args [: arg] pone args [: another_arg] final
El soporte []
Es solo la forma Ruby de acceder a un hash. Se puede pensar en ello como una matriz asociativa PHP. Nombramos el argumento, luego, dentro del cuerpo de la tarea, podemos acceder fácilmente a su valor con args [: nombre_degumento]
. En este ejemplo, argumento_name es : arg
y : another_arg
La tarea se puede invocar con esta sintaxis: nombre de tarea mina [param1, param2]
. Se pueden agregar más argumentos y le pasaremos más parámetros, como mina taskname [param1, param2, param3, param4]
.
Puedes imaginar que el nombre de la tarea
es un método
Nombre y estamos llamando a un método y pasando su argumento. Si el parámetro tiene un espacio, deberíamos envolver todo el parámetro con una cita.
Vamos a intentar por encima de la tarea ahora. Simplemente imprime todo lo que pasamos en él..
$ mina task_name [value1, "value 2 with some space"]
valor1
valor 2 con algo de espacio
Si usó el shell zsh, necesita escapar [y] con la barra invertida:
$ mina task_name \ [value1, "value 2 with some space" \]
Otra cosa a tener en cuenta es la in_directory
Método de Mina. Es muy probable que necesites discos compactos
en un directorio y ejecute un par de comandos. En lugar de hacer colas manualmentediscos compactos
comando, podemos usar el práctico in_directory
método. Ejecutará el comando dentro del directorio que indiquemos..
tarea: muestra do en el directorio "# deploy_to / current" do queue "pwd"
final fin
Bueno, suficiente para la teoría. Comencemos la parte divertida: instalaremos wp-cli, luego configuraremos algunas tareas.
Todo lo que necesitamos es descargar el archivo PHAR de WP-CLI. Es un archivo único que es ejecutable al motor PHP. En lugar de tener un montón de archivos PHP, puede comprimirlos en un solo archivo ejecutable por PHP.
Es una forma muy fácil de distribuir paquetes PHP. Al igual que en Windows, usted descarga un software en un solo archivo .EXE y lo ejecuta. Para hacer esto, discos compactos
en su código de WordPress en la máquina local, ejecute este comando:
curl -L https://raw.github.com/wp-cli/builds/gh-pages/phar/wp-cli.phar> wp-cli.phar chmod + x wp-cli.phar
Vamos a verificar que funcione. En su máquina local, ejecute wp-cli.phar --info
y deberías obtener la siguiente salida.
./wp-cli.phar --info
PHP binario: / usr / bin / php
Versión de PHP: 5.4.24
php.ini utilizado: /etc/php.ini
Directorio raíz de WP-CLI: phar: //wp-cli.phar
Configuración global de WP-CLI:
Configuración del proyecto WP-CLI:
Versión de WP-CLI: 0.14.1
Ahora, wp-cli está en el mismo directorio con su WordPress, confirmémoslo y
empujar a su repositorio y hacer una implementación.
git agregar wp-cli.phar git commit -m "Agregar wpcli" git push origin master mina deploy
En este punto, wp-cli está en nuestro directorio de WordPress en el servidor. Hagamos algo de magia con esto: escribiendo la tarea de Mina con wp-cli.
En esta sección, le mostraré cómo hacer algunas tareas básicas con wp-cli y cómo ponerlas en Mina para que pueda tener una idea de cómo se ven las cosas y escribir su propia tarea para que coincida con su flujo de trabajo y su necesitar. Lo primero es lo primero: hola mundo.
El primer comando muy simple de wp-cli es mostrar la versión actual de WordPress. Vamos a crear una tarea más de Mina. Agregue esto a su config / deploy.rb
expediente:
tarea "Mostrar la versión actual de WordPress": wp_version =>: environment do queue% [echo "-----> Hello world. Estoy en esta versión ahora:"] queue "cd # deploy_to / current &&. /wp-cli.phar versión núcleo "final
Ahora, trata de ejecutarlo:
$ mina wp_version -----> Hola mundo. Estoy en esta versión ahora: 3.8.1 Tiempo transcurrido: 0.00 segundos
Descargaremos un complemento a mano, lo extraeremos, lo agregaremos al repositorio, lo confirmaremos, luego desplegaremos y ejecutaremos otra tarea principal para activar un complemento..
Aquí está el código que necesitamos para esta tarea.
Tarea de "Toggle a plugin" desc: toggle_plugin,: arg1 do | cmd, plugin | cola% [echo "----> Activar tema # tema"] en directorio_ "# deploy_to / current" hacer cola% [./ wp-cli.phar plugin toggle # plugin] end end end
Ponemos en cola un comando echo para generar un texto. El comando para activar un plugin desde wp-cli es plugin toggle plugin_name
.
Por ejemplo, digamos que queremos instalar el complemento Mathjax Latex, y ya lo hemos puesto en wp-content / plugins
.
Podemos instalar de esta manera:
git add wp-content / plugins / mathjax-latex git commit -m "Agregar plugin mathjax" git push origin master mina deploy
Ahora el plugin está instalado. La activación se puede hacer a través del panel de WordPress. Pero como tenemos nuestra tarea de Mina, vamos a intentarlo:
$ mina toggle_plugin \ ["mathjax-latex" \] # Debe salir ----> Conmutar plugin mathjax-latex Correcto: El complemento 'mathjax-latex' está activado.
Actualizar un plugin es el mismo procedimiento. Usted descarga el plugin, lo copia a wp-content / plugins / [plugin-need-to-update]
, cometer y volver a desplegar.
El flujo de trabajo es como lo hacemos con el complemento, solo un comando wp-cli diferente para activar el tema. Solo necesitamos agregar el tema a Git, commit, push, deploy.
Eche un vistazo al siguiente ejemplo en el que instalaremos este tema. Ya lo descargamos y lo pusimos en wp-content / themes / natsume.
git add wp-content / themes / natsume git commit -m "Agregar complemento mathjax" git push origin master mina deploy
Una vez más, la activación del tema se puede hacer en la interfaz de usuario de WordPress. Pero hagamos una tarea de Mina para que podamos activarla una vez que la implementemos, desde la línea de comandos.
Aquí está la tarea:
desc "Activar tema"
tarea: toggle_theme,: theme do | cmd, args |
tema = args [: tema]
cola% [echo "----> Activar tema # tema"]
in_directory "# deploy_to / current" do
cola% [./ wp-cli.phar tema activar # tema]
fin
fin
Para activar un tema, ejecute nuestra tarea:
$ mina toggle_theme \ ["natsume" \]
Esta tarea volcará la base de datos de WordPress en un archivo gzip en compartido / copia de seguridad
carpeta. Si la carpeta de copia de seguridad aún no existe, la crearemos y luego llamaremos al comando wp-cli db para volcar la base de datos en un archivo.
El nombre del archivo será la combinación de fecha y hora cuando exportemos en este formato "[año] [mes] [día] _ [hora] [minuto] [segundo] .sql.gz".
Vamos a componer nuestra tarea Mina.
tarea "Exportar la base de datos de WordPress a una copia de seguridad / compartida": db_export do # crea un directorio de copia de seguridad si no se sale de backup_to = "# deploy_to / shared / backup" cola% [[-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 "queue% [echo" ----> Hacer una copia de seguridad de la base de datos en # file "] cola% [./ wp-cli.phar db export - | gzip> # backup_to / # file] end end
[-d nombre]
Es una sintaxis para comprobar la existencia de la carpeta. Si no, usamos mkdir para crearlo.
Luego, usamos el objeto Time de Ruby para extraer la fecha y la hora y concatenar para crear nuestro nombre de archivo.
Cuando desee realizar una copia de seguridad, desde su máquina local, escriba:
$ mina db_export
Sencillo y elegante. Un comando y lo tienes todo..
Muy a menudo, cuando cambia el dominio, debe volver a configurarlo en wp-config.php o actualizar manualmente el dominio en la base de datos. De cualquier manera, es mucho trabajo.
Vamos a resolver esto una vez. El comando para actualizar una opción es: Actualización de la opción wp-cli [opción_clave] [valor_opción]
. Según la documentación de WordPress, el dominio está en dos opciones: casa
y Sitio URL
.
update_option ('siteurl', 'http: //example.com'); update_option ('home', 'http: //example.com');
Entonces, aquí está nuestra tarea:
desc "Cambiar el dominio a uno nuevo"
tarea: update_domain,: domain do | cmd, args |
domain = args [: domain]
pone dominio
in_directory "# deploy_to / current" do
cola% [./ wp-cli.phar actualizacion de opcion # dominio]
cola% [./ wp-cli.phar actualización de la opción siteurl # dominio]
fin
fin
Invocarlo desde la línea de comando:
$ mina update_domain \ ["http://log.axcoto.com" \]
Una característica muy útil de wp-cli es la generación posterior. Durante el tiempo de prueba, puedes encontrarte creando manualmente muchas publicaciones ficticias. El comando para crear post con wp-cli es wp-cli publicar generar --count = cantidad
. Como siempre, puede leer la sintaxis usted mismo en el sitio web de wp-cli.
Vamos a crear una llamada de tarea gen_dummy_post
con un parámetro es el número de mensajes. Para obtener el contenido de la publicación, usaremos curl para obtener un texto de ipsum de lorem a través de el Loripsum API. cURL es una herramienta de línea de comandos que generalmente está preinstalada en Linux / Mac OS que le permite enviar solicitudes HTTP.
Puedes considerarlo como un navegador, pero ejecutarlo en la línea de comandos. Entonces, en lugar de escribir una dirección en su navegador, y ver la salida en su navegador, le da a cURL una dirección de sitio web y le devuelve el contenido del sitio web..
Probemos el siguiente comando:
$ curl http://loripsum.net/api/5Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ab or sus oratores, ab sus imperatores ac rerum publicarum principes extiterunt. Cupiditates non Epicuri divisione finiebat, sed su satatate. Venit ad extremum; Dúo Reges: constructio interrete. Respondeat totidem verbis. ¿Quis Aristidem diligit non mortuum? Quid Zeno?
Nihil acciderat ei, quod nollet, nisi quod anulum, quo delectabatur, en mari abiecerat. Nondum autem explanatum satis, erat, quid maxime natura vellet. Quem 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.
¿Qué son las probabilidades menos el quand 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 no se ha producido, vincunt Aristonem; No sempre, inquam; Quid de Platone aut de Democrito loquar? Quem Tiberina descensio festo illo die all gaudio affecit, quanto L. Non enim ipsa genuit hominem, sed acceptit natura inchoatum. Scaevolam M. Recte, inquit, intellegis. Uterque enim summo bono fruitur, id est voluptate. Sic exclusis sententiis reliquorum cum praeterea nulla esse possit, haec antiquorum valeat necesse est. Sed fortuna fortis; Mihi quidem Antiochum, quem audis, satis belle videris attendere.
¿Qué hay de nuevo? ¿Qué hay de nuevo? ¿Qué hay de nuevo? Nonne igitur tibi videntur, inquit, mala?
Así que cuando lo ejecutas, se devuelven cinco párrafos de lorem ipsum. Puede cambiar el número después de / api
para obtener mas parrafo.
Sabemos que tenemos contenido, lo introduciremos en wp-cli para crear publicaciones. La sintaxis para hacer eso es:
curl http://loripsum.net/api/5 | wp publicar generar --post_content --count = 10
Note el caracter |
, significa que estamos canalizando el contenido en el siguiente comando. Sabemos que tienen la sintaxis, podemos empezar a componer la tarea.
Tarea "Generar publicación aleatoria" desc: gen_dummy_post,: howmany do | cmd, args | howmany = args [: howmany] pone howmany in_directory "# deploy_to / current" do queue% [curl http://loripsum.net/api/5 | ./wp-cli.phar post genera --count = # howmany --post_content] end end end
Una vez que conoció la sintaxis de la tarea de Mina, puede leer más sobre el comando WP-CLI para escribir su propia tarea, como crear un usuario, generar usuarios ficticios para realizar pruebas ...
Si quieres aprender más sobre wp-cli, puedes visitar estos enlaces:
Ahora entendemos bien cómo escribir las tareas de Mina, cómo utilizar el poder de wp-cli. Con la combinación de estas dos herramientas, esperamos que se implemente muy rápido y que su instalación de WordPress sea más segura que antes y reduzca el tiempo de las tareas de administración..
No te limites. La información en este tutorial es muy breve, agregue más cosas a sus archivos de tareas y háganos saber lo que surgió en el comentario..
Si tiene algún problema, por favor deje un comentario, me gustaría ayudar y hablar. Feliz automatización de WordPress!