Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress

Clonar WordPress en Linux

by
Difficulty:IntermediateLength:LongLanguages:

Spanish (Español) translation by Elías Nicolás (you can also view the original English article)

Final product image
What You'll Be Creating

Duplicar WordPress nunca parece fácil

A menudo me gusta lanzar un nuevo sitio de WordPress basado en un sitio existente, como una plantilla. Las configuraciones para temas, complementos y configuraciones pueden ser muy útiles para empezar, en lugar de una instalación limpia donde debe repetir todo desde el principio.

Al crear una imagen de aplicación para revender en Digital Ocean, realicé la construcción de una gota de WordPress instalable, preconfigurada y optimizada previamente. Esencialmente, es una imagen de Digital Ocean que puede lanzar un sitio de WordPress completamente cargado en minutos. Pero, con mayor frecuencia, deseo agregar un sitio de WordPress a uno de mis servidores preexistentes.

Hay varias maneras de hacerlo, pero a menudo encuentro que requieren un enfoque específico y detallado que, como parece, tengo que volver a aprender cada vez. Decidí que era hora de crear un script de shell de Linux que hiciera todo en unos minutos para mí.

En este tutorial, lo guiaré a través de mi investigación y el script de clonación resultante para WordPress. Espero que les guste, pensé que funcionó bastante bien cuando terminé con eso.

Antes de comenzar, recuerde, intento participar en las discusiones a continuación. Si tiene una pregunta o sugerencia de tema, publique un comentario a continuación o contácteme en Twitter @reifman. También puede enviarme un correo electrónico directamente. Espero que algunos de ustedes tengan mejores ideas y mejoras para este script. Agradecería saber de usted.

Otros enfoques para la migración de WordPress

A menudo puede iniciar un nuevo sitio web migrando uno existente a un nuevo servidor, esencialmente copiándolo, y construyendo sobre la copia mientras deja intacto el sitio de origen. Hay una cantidad de enfoques para esto.

Al mover WordPress a una nueva servidor de publicación con WordPress, escribí sobre el uso del complemento Duplicator para hacer esto, pero he encontrado que el proceso es engorroso. Refamiliarizarme con Duplicator cada vez que necesito mover un sitio también ha sido difícil.

Recientemente, escribí sobre esto en Copia de seguridad y restauración de su sitio de WordPress con CodeGuard para Envato Tuts+. Es un servicio que hace que este proceso sea un poco más fácil. Y, pronto, se publicará Cómo simplificar la administración de varios sitios de WordPress, que describe una serie de poderosas ventajas al usar ManageWP. Tiene una función de clonación, pero requiere FTP; por razones de seguridad, evito ejecutar FTP en mis servidores.

También está la serie de dos partes Envato Tuts + de : Moviendo WordPress: Una introducción y Moviendo WordPress: Uso de complementos para mover su sitio. Y hay este tutorial en WPBeginner que usa BackupBuddy. Finalmente, WPClone no requiere FTP pero requiere una instalación limpia de WordPress para instalarse.

Puede aprender mucho de todos estos tutoriales y servicios, pero quería ver si podía crear un script de línea de comandos que clonara un sitio de WordPress de manera más rápida y fácil, siempre.

Planificación del Script

Para escribir este tutorial, confié mucho en trabajos anteriores de otros para reactivar mi conocimiento de los scripts bash y la manipulación del sitio de WordPress. Nunca me he considerado un experto administrador de sistemas Linux. Finalmente, decidí construir mi script de clonación sobre WordPress Bash Install Script de Brian Gallagher.

Nota: Estos son guiones de configuración basados ​​en Debian; otros sabores de Linux como RedHat y CentOS tienen diferentes caminos para Apache y diferentes utilidades.

Aquí está la descripción de Gallagher de su script base:

Descarga la última versión de WP, actualiza wp-config con nombre de usuario, nombre de usuario y contraseña suministrados por el usuario, crea y carga el directorio de CHMOD, copia todos los archivos en el directorio raíz desde el que ejecuta el script, ¡y luego se borra!

Aquí hay muchos guiones bien organizados, pero quería hacer algo que pudiera clonar un sitio activo. Repasemos la arquitectura de una configuración típica de WordPress.

Los componentes iniciales de un sitio de WordPress

Una instalación típica de WordPress tiene cuatro componentes principales para la clonación:

  1. Árbol de directorios del sitio
  2. Base de datos
  3. Configuración del servidor web, p. Archivo conf de Apache
  4. Asignación de dominio

También hay información, acceso y configuraciones de seguridad que necesitaremos:

  • Cuenta y contraseña de administración del servidor
  • Nombre de usuario y contraseña del servidor MySql
  • Directorio fuente del sitio
  • Archivo de configuración del servidor web del sitio
  • Nombre de la base de datos, nombre de usuario y contraseña

Esto es lo que necesitaremos especificar para el sitio clonado:

  • Directorio de destino del sitio clonado
  • Nombre de la base de datos clonada, nombre de usuario y contraseña
  • Archivo de configuración del servidor web de los sitios clonados

Lo que el script necesita hacer

  • Adquiera todas las configuraciones a través de las variables de configuración o la entrada del usuario.
  • Copie el directorio del sitio y restáurelo a un directorio de destino.
  • Exportar la base de datos de origen e importarla a una base de datos de destino.
  • Asegure los permisos apropiados en estos directorios.
  • Copie el archivo de configuración del servidor y actualice la configuración del dominio y el directorio.
  •     Recargar el servidor web.

Manualmente, tendremos que actualizar el DNS para el nuevo dominio objetivo. Recomiendo crear registros DNS antes de comenzar para que estén listos una vez que se clone su sitio. No hay nada como clonar un sitio y no poder probar el nombre de dominio porque estás esperando el DNS.

El enfoque de la secuencia de clonación

Ahora, estamos listos para ver cómo funciona la arquitectura del script. De nuevo, utilicé la secuencia de comandos de instalación de WordPress de Gallagher para comenzar, y necesitas esa línea inicial bash en la parte superior:

Preparación de su configuración de DNS

Antes de duplicar un sitio, debe configurar el DNS para el sitio clonado. Puede leer sobre la configuración de DNS para un nuevo sitio de WordPress aquí. También estoy entusiasmado con este tutorial de Envato Tuts+, Introducción al aprendizaje y Uso de registros DNS.

Básicamente, debe crear un registro A o CNAME que enrute su URL de clonación deseada al servidor en el que estamos duplicando.

Estableciendo Permisos

En mi servidor, estoy creando un script bash llamado clonewp.sh. Necesitará permisos ejecutables:

Luego, una vez que esté completo, puedes ejecutarlo así:

Recomiendo ejecutar el script como sudo para que no se encuentre con problemas de permisos de archivos.

Establecer valores predeterminados

Para fines de prueba, creé la capacidad de precargar la secuencia de comandos con la configuración predeterminada. Me ayudó a ejecutar las pruebas varias veces sin tener que escribir todo una y otra vez. También pensé que podría ser útil para las personas que quieran modificar el guión o utilizarlo de otras maneras.

Aquí están todas las configuraciones predeterminadas:

Sé que parece mucho, pero me pareció útil tener un usuario maestro de MySQL y una contraseña para copias de seguridad de bases de datos, creación de bases de datos e importaciones. Sin embargo, también era útil tener las contraseñas y el usuario de la base de datos específica del sitio para establecer los privilegios de la base de datos de destino y buscar y reemplazar en el archivo wp-config.php. Hace que el proceso de clonación final sea muy fluido.

Utilicé la marca de tiempo NOW para asegurarme de que los archivos que creamos son únicos.

Solicitar la configuración

El siguiente código muestra el valor predeterminado para el usuario y le permite aceptarlo (presionando regresar) o reemplazarlo:

Una vez que hemos recopilado todas las configuraciones del usuario, le preguntamos si desea comenzar:

Copia del árbol de directorios

Ahora las cosas se mueven un poco más rápido. Creamos tarballs del sitio fuente, hacemos un directorio objetivo y extraemos el tarball allí:

También ejecutamos los permisos de archivos estándar para WordPress para asegurarnos de que todo esté configurado correctamente y de forma segura:

Actualice el archivo de configuración de WP

continuación, usamos Perl para buscar y reemplazar la autenticación de la base de datos fuente con la información de la base de datos de destino:

También agrego la configuración RELOCATE al final del archivo. Si lo desea, puede reemplazar esto con la configuración estática de WP_HOME y WP_SITEURL.

Copia la base de datos

A continuación, volcamos la base de datos, creamos una nueva base de datos con permisos proporcionados por el usuario y luego le importamos la base de datos:

Una vez más, me pareció mejor utilizar la autenticación maestra de MySQL para estas actividades al configurar las configuraciones de la base de datos en función del sitio de origen y la configuración de clonación de sitio único.

Copie la configuración del servidor web

Finalmente, estamos listos para concluir y presionar el botón de inicio. Es raro ver este tipo de scripts gestionar el paso adicional para la configuración del servidor web. Entonces, yo también quería hacer eso.

Copié el archivo Apache .conf del sitio de origen a un nuevo archivo .conf para el clon. Usé Perl para reemplazar cadenas por los dominios y las rutas de directorio. Luego, activé el sitio con Apache y recargué el servidor web:

Y eso es. Así es como se ve el texto en la vida real:

En mis pequeños sitios de WordPress, ¡la duplicación tomó solo de 30 a 90 segundos!

Letra pequeña

Hay un par de cosas más que necesitarás saber.

Ruta de acceso directo al principio

Primero, para iniciar sesión en su sitio clonado, deberá usar la ruta wp-login.php en lugar de wp-admin, que redirige a la URL del sitio fuente, p. http://clone.io/wp-login.php como se muestra a continuación:

Clone WordPress Use the wp-login php path

Cambiando Dominios

Dado que WordPress codifica gran parte de su dominio fuente en la base de datos, he descubierto que usar la configuración RELOCATE en wp-config.php hace que sea fácil actualizar esto a través de General > Configuración. Simplemente guarde el formulario con la nueva URL de destino:

Clone WordPress General Domain Settings

Una vez que haya guardado la URL de destino clonada, puede eliminar manualmente la configuración RELOCATE de wp-config.php.

Sin embargo, un colega sugiere que puede utilizar una herramienta como Búsqueda y Reemplazo de InterconnectIT para bases de datos de WordPress. También se ha documentado en Envato Tuts + en la migración de WordPress a través de hosts, servidores y URL.

El script final

Esta es la última secuencia de comandos para wpclone.sh. Siéntase libre de cambiar los valores predeterminados:

Si tiene sugerencias y personalizaciones, hágamelo saber. Publique sus pensamientos a continuación en los comentarios.

Limpieza para pruebas extendidas

Las siguientes líneas pueden serle útiles para eliminar y deshacer los sitios de prueba que clona. Puede personalizarlo según sus necesidades:

Cambio de claves de seguridad en Wp-Config.php

También puede proteger mejor su nuevo sitio de WordPress reemplazando manualmente las claves de autenticación y las sales dentro del wp-config.php del sitio de destino:

Simplemente puede visitar https://api.wordpress.org/secret-key/1.1/salt/ y cortarlos y pegarlos en su archivo wp-config.php:

WordPress Authentication Key and Salt Generator

Ahora, si eres un purista de scripts de Linux, te dejaré actualizar el script Bash de instalación de WordPress de Gallagher. Su secuencia de comandos copió el WordPress predeterminado wp-config.php por lo que tendría cadenas fuente predecibles para reemplazar con las claves generadas por su secuencia de comandos:

Nunca escribí una expresión regular para reemplazar los valores clave en archivos wp-config.php dinámicos preexistentes de nuestros sitios de origen. Si decide hacerlo, compártalo en los comentarios y agradece de antemano.

¿Preguntas?

Disfruté muchísimo el funcionamiento de este script. O, al menos debería decir que disfruté de ejecutarlo cuando terminé. Ojalá lo hubiera creado hace mucho tiempo, ya que es increíblemente eficaz y eficiente. Pude clonar pequeños sitios de WordPress y ejecutarlos en mi servidor en aproximadamente 60 segundos. Ninguno de los otros complementos o opciones de duplicación son tan uniformes.

Si tiene preguntas, publíquelas a continuación. O bien, puede ponerse en contacto conmigo en Twitter @reifman o enviarme un correo electrónico directamente. Por favor revisa mi página de instructores Envato Tuts+ para ver otros tutoriales que he escrito, como mi serie de inicio (Construyendo tu inicio con PHP).

enlaces relacionados

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.