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

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 Rachel McCollin: 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:
- Árbol de directorios del sitio
- Base de datos
- Configuración del servidor web, p. Archivo conf de Apache
- 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:
#!/bin/bash -e # Clone a WordPress site via Bash script clear echo "===================================================" echo "Clone WordPress Script" echo "==================================================="
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:
chmod +x clonewp.sh
Luego, una vez que esté completo, puedes ejecutarlo así:
sudo bash clonewp.sh
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:
# Set Default Settings (helpful for testing) default_mysql_user=$"root-admin" default_mysql_pass=$"super-strong-password" default_source_domain=$"gardening.io" default_target_domain=$"cycling.io" default_source_directory=$"/var/www/gardening" default_target_directory=$"/var/www/cycling" default_apache_directory=$"/etc/apache2/sites-available" default_source_conf=$"gardening.conf" default_target_conf=$"cycling.conf" default_source_dbname=$"gardening" default_source_dbuser=$"user_for_garden" default_source_dbpass=$"pwd_garden" default_target_dbname=$"cycling" default_target_dbuser=$"user_for_cycling" default_target_dbpass=$"pwd_cycling" NOW=$(date +"%Y-%m-%d-%H%M")
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:
# Request Source Settings read -p "Source Domain (e.g. "$default_source_domain"): " source_domain source_domain=${source_domain:-$default_source_domain} echo $source_domain read -p "Source Directory (no trailing slash e.g. "$default_source_directory"): " source_directory source_directory=${source_directory:-$default_source_directory} echo $source_directory read -p "Source Database Name (e.g. "$default_source_dbname"): " source_dbname source_dbname=${source_dbname:-$default_source_dbname} echo $source_dbname read -p "Source Database User (e.g. "$default_source_dbuser"): " source_dbuser source_dbuser=${source_dbuser:-$default_source_dbuser} echo $source_dbuser read -p "Source Database Pass (e.g. "$default_source_dbpass"): " source_dbpass source_dbpass=${source_dbpass:-$default_source_dbpass} echo $source_dbpass # Request Source Settings read -p "Source Conf File (e.g. "$default_source_conf"): " source_conf source_conf=${source_conf:-$default_source_conf} echo $source_conf # Request Target Settings read -p "Target Domain (e.g. "$default_target_domain"): " target_domain target_domain=${target_domain:-$default_target_domain} echo $target_domain read -p "Target Directory (no trailing slash e.g. "$default_target_directory"): " target_directory target_directory=${target_directory:-$default_target_directory} echo $target_directory read -p "Target Database Name (e.g. "$default_target_dbname"): " target_dbname target_dbname=${target_dbname:-$default_target_dbname} echo $target_dbname read -p "Target Database User (e.g. "$default_target_dbuser"): " target_dbuser target_dbuser=${target_dbuser:-$default_target_dbuser} echo $target_dbuser read -p "Target Database Pass (e.g. "$default_target_dbpass"): " target_dbpass target_dbpass=${target_dbpass:-$default_target_dbpass} echo $target_dbpass read -p "Target Conf File (e.g. "$default_target_conf"): " target_conf target_conf=${target_conf:-$default_target_conf} echo $target_conf
Una vez que hemos recopilado todas las configuraciones del usuario, le preguntamos si desea comenzar:
echo "Clone now? (y/n)" read -e run if [ "$run" == n ] ; then exit else echo "===================================================" echo "WordPress Cloning is Beginning" echo "==================================================="
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í:
#backup source_directory cd $source_directory # add -v option to these if you want to see verbose file listings tar -czf source_clone_$NOW.tar.gz . #unzip clone in target directory mkdir -p $target_directory tar -xzf source_clone_$NOW.tar.gz -C $target_directory #remove tarball of source rm source_clone_$NOW.tar.gz cd $target_directory
También ejecutamos los permisos de archivos estándar para WordPress para asegurarnos de que todo esté configurado correctamente y de forma segura:
# Reset Directory Permissions find $target_directory -type d -exec chmod 755 {} \; find $target_directory -type f -exec chmod 644 {} \;
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:
#set database details with perl find and replace perl -pi -e "s/$source_dbname/$target_dbname/g" wp-config.php perl -pi -e "s/$source_dbuser/$target_dbuser/g" wp-config.php perl -pi -e "s/$source_dbpass/$target_dbpass/g" wp-config.php echo "define('RELOCATE',true);" | tee -a wp-config.php #echo "define('WP_HOME','http://$target_domain');" | tee -a wp-config.php #echo "define('WP_SITEURL','http://$target_domain');" | tee -a wp-config.php echo "================================" echo "Directory duplicated" echo "================================"
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:
# Begin Database Duplication # Export the database mysqldump -u$mysql_user -p$mysql_pass $source_dbname > $target_directory/clone_$NOW.sql # Create the target database and permissions mysql -u$mysql_user -p$mysql_pass -e "create database $target_dbname; GRANT ALL PRIVILEGES ON $target_dbname.* TO '$target_dbuser'@'localhost' IDENTIFIED BY '$target_dbpass'" # Import the source database into the target mysql -u$mysql_user -p$mysql_pass $target_dbname < $target_directory/clone_$NOW.sql echo "================================" echo "Database duplicated" echo "================================"
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:
#Activate Web Configuration cp $default_apache_directory/$source_conf $default_apache_directory/$target_conf #set database details with perl find and replace perl -pi -e "s/$source_domain/$target_domain/g" $default_apache_directory/$target_conf perl -pi -e "s|${source_directory}|${target_directory}|g" $default_apache_directory/$target_conf a2ensite $target_conf service apache2 reload echo "================================" echo "Web configuration added" echo "================================" echo "Clone is complete." echo "Test at http://"$target_domain echo "================================" fi
Y eso es. Así es como se ve el texto en la vida real:
=================================================== Clone WordPress Script =================================================== MySQL Master Username (e.g. root-admin): harry_potter harry_potter MySQL Master Password (e.g. super-strong-password): voldemoort~jenny7! voldemoort~jenny7! Source Domain (e.g. gardening.io): gardening.io Source Directory (no trailing slash e.g. /var/www/gardening): /var/www/gardening Source Database Name (e.g. gardening): database_gardening database_gardening Source Database User (e.g. user_for_garden): hermione hermione Source Database Pass (e.g. pwd_garden): !987654321abcdefgh# !987654321abcdefgh# Source Conf File (e.g. gardening.conf): gardening.conf gardening.conf Target Domain (e.g. cycling.io): cycling.io Target Directory (no trailing slash e.g. /var/www/cycling): /var/www/cycling /var/www/cycling Target Database Name (e.g. cycling): database_cycling database_cycling Target Database User (e.g. user_for_cycling): hedwig hedwig Target Database Pass (e.g. pwd_cycling): pwd_for_cycling_not_hogwartz Target Conf File (e.g. cycling.conf): 0007b-cycling.conf 0007b-cycling.conf Clone now? (y/n) y =================================================== WordPress Cloning is Beginning =================================================== tar: .: file changed as we read it define('RELOCATE',true); ================================ Directory duplicated ================================ ================================ Database duplicated ================================ Enabling site 0007b-cycling. To activate the new configuration, you need to run: service apache2 reload * Reloading web server apache2 * ================================ Web configuration added ================================ Clone is complete. Test at http://cycling.io ================================
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:

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:

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:
#!/bin/bash -e # Clone a WordPress site via Bash script clear echo "===================================================" echo "Clone WordPress Script" echo "===================================================" # Set Default Settings (helpful for testing) default_mysql_user=$"root-admin" default_mysql_pass=$"super-strong-password" default_source_domain=$"gardening.io" default_target_domain=$"cycling.io" default_source_directory=$"/var/www/gardening" default_target_directory=$"/var/www/cycling" default_apache_directory=$"/etc/apache2/sites-available" default_source_conf=$"gardening.conf" default_target_conf=$"cycling.conf" default_source_dbname=$"gardening" default_source_dbuser=$"user_for_garden" default_source_dbpass=$"pwd_garden" default_target_dbname=$"cycling" default_target_dbuser=$"user_for_cycling" default_target_dbpass=$"pwd_cycling" NOW=$(date +"%Y-%m-%d-%H%M") #Request MySQL Admin read -p "MySQL Master Username (e.g. "$default_mysql_user"): " mysql_user mysql_user=${mysql_user:-$default_mysql_user} echo $mysql_user read -p "MySQL Master Password (e.g. "$default_mysql_pass"): " mysql_pass mysql_pass=${mysql_pass:-$default_mysql_pass} echo $mysql_pass # Request Source Settings read -p "Source Domain (e.g. "$default_source_domain"): " source_domain source_domain=${source_domain:-$default_source_domain} echo $source_domain read -p "Source Directory (no trailing slash e.g. "$default_source_directory"): " source_directory source_directory=${source_directory:-$default_source_directory} echo $source_directory read -p "Source Database Name (e.g. "$default_source_dbname"): " source_dbname source_dbname=${source_dbname:-$default_source_dbname} echo $source_dbname read -p "Source Database User (e.g. "$default_source_dbuser"): " source_dbuser source_dbuser=${source_dbuser:-$default_source_dbuser} echo $source_dbuser read -p "Source Database Pass (e.g. "$default_source_dbpass"): " source_dbpass source_dbpass=${source_dbpass:-$default_source_dbpass} echo $source_dbpass # Request Source Settings read -p "Source Conf File (e.g. "$default_source_conf"): " source_conf source_conf=${source_conf:-$default_source_conf} echo $source_conf # Request Target Settings read -p "Target Domain (e.g. "$default_target_domain"): " target_domain target_domain=${target_domain:-$default_target_domain} echo $target_domain read -p "Target Directory (no trailing slash e.g. "$default_target_directory"): " target_directory target_directory=${target_directory:-$default_target_directory} echo $target_directory read -p "Target Database Name (e.g. "$default_target_dbname"): " target_dbname target_dbname=${target_dbname:-$default_target_dbname} echo $target_dbname read -p "Target Database User (e.g. "$default_target_dbuser"): " target_dbuser target_dbuser=${target_dbuser:-$default_target_dbuser} echo $target_dbuser read -p "Target Database Pass (e.g. "$default_target_dbpass"): " target_dbpass target_dbpass=${target_dbpass:-$default_target_dbpass} echo $target_dbpass read -p "Target Conf File (e.g. "$default_target_conf"): " target_conf target_conf=${target_conf:-$default_target_conf} echo $target_conf echo "Clone now? (y/n)" read -e run if [ "$run" == n ] ; then exit else echo "===================================================" echo "WordPress Cloning is Beginning" echo "===================================================" #backup source_directory cd $source_directory # add -v option to these if you want to see verbose file listings tar -czf source_clone_$NOW.tar.gz . #unzip clone in target directory mkdir -p $target_directory tar -xzf source_clone_$NOW.tar.gz -C $target_directory #remove tarball of source rm source_clone_$NOW.tar.gz cd $target_directory # Reset Directory Permissions find $target_directory -type d -exec chmod 755 {} \; find $target_directory -type f -exec chmod 644 {} \; #set database details with perl find and replace perl -pi -e "s/$source_dbname/$target_dbname/g" wp-config.php perl -pi -e "s/$source_dbuser/$target_dbuser/g" wp-config.php perl -pi -e "s/$source_dbpass/$target_dbpass/g" wp-config.php echo "define('RELOCATE',true);" | tee -a wp-config.php #echo "define('WP_HOME','http://$target_domain');" | tee -a wp-config.php #echo "define('WP_SITEURL','http://$target_domain');" | tee -a wp-config.php echo "================================" echo "Directory duplicated" echo "================================" # Begin Database Duplication # Export the database mysqldump -u$mysql_user -p$mysql_pass $source_dbname > $target_directory/clone_$NOW.sql # Create the target database and permissions mysql -u$mysql_user -p$mysql_pass -e "create database $target_dbname; GRANT ALL PRIVILEGES ON $target_dbname.* TO '$target_dbuser'@'localhost' IDENTIFIED BY '$target_dbpass'" # Import the source database into the target mysql -u$mysql_user -p$mysql_pass $target_dbname < $target_directory/clone_$NOW.sql echo "================================" echo "Database duplicated" echo "================================" #Activate Web Configuration cp $default_apache_directory/$source_conf $default_apache_directory/$target_conf #set database details with perl find and replace perl -pi -e "s/$source_domain/$target_domain/g" $default_apache_directory/$target_conf perl -pi -e "s|${source_directory}|${target_directory}|g" $default_apache_directory/$target_conf a2ensite $target_conf service apache2 reload echo "================================" echo "Web configuration added" echo "================================" echo "Clone is complete." echo "Test at http://"$target_domain echo "================================" fi
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:
sudo rm -ifr /var/www/clone sudo a2dissite clone.conf sudo service apache2 reload sudo rm /etc/apache2/sites-available/clone.conf mysql -u root -p -e "drop database clone;"
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:
/**#@+ * Authentication Unique Keys and Salts. * * Change these to different unique phrases! * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service} * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again. * * @since 2.6.0 */ define('AUTH_KEY', '+9%S?YVnr%5Vr!Et4J,@9/Z^.kT_Lu~5SGwr9=|Y &D-ARSWf$mF#J_3U:/iE>-R'); define('SECURE_AUTH_KEY', 'e3Wr7%Aa7H1,f<SR[Sp&g.kJw,.)bR-9jz{uU&[R{[J]ITK8q>:!5@y:Q;c01dL '); define('LOGGED_IN_KEY', '1I%pW%UyjRMqy__Da)siA)+V]Ur$9uXPmxv|eBjM~-m&-<WEy&+XXb43uh8&aP+U'); define('NONCE_KEY', 'A9]+PFgvxYa^<B}_.F?9A,!&i-.b6E.I?&?U*)X.Vh+fq`SfE[XJG+MG|pg;y%Ah'); define('AUTH_SALT', 'gT (4]L{mm!|>9kC<%59rB7sbe1)jW0GCnfupJT+8z-z#%o@b|[QH=i@h|-/t!9S'); define('SECURE_AUTH_SALT', 'ON8K<,WSy8+F ~XaQpCwC8(a/{HksMh<T)QLD]s[-:yv+fx8!`<!*~mgB32X:w5k'); define('LOGGED_IN_SALT', 'vHJ%{=X6$ue>ZIo|%|cisp1R}9cJ< Rz-J;H|:O2A7$+*aGXMH!+KvD+tZ/I*U5$'); define('NONCE_SALT', '[ytQ;C)BvgU!#>a,,g|)~EKBQUig7Uv.-8?q%lmFte,P>,]f#.}i`Wx8S+_S@&.('); /**#@-*/
Simplemente puede visitar https://api.wordpress.org/secret-key/1.1/salt/ y cortarlos y pegarlos en su archivo wp-config.php:

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:
#set WP salts perl -i -pe' BEGIN { @chars = ("a" .. "z", "A" .. "Z", 0 .. 9); push @chars, split //, "!@#$%^&*()-_ []{}<>~\`+=,.;:/?|"; sub salt { join "", map $chars[ rand @chars ], 1 .. 64 } } s/put your unique phrase here/salt()/ge ' wp-config.php
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
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post