@ Insanity5902 : La implementación de un sitio de WordPress de una caja a otra ha sido un PITA desde el primer día que comencé a trabajar con WordPress. (A decir verdad, fue un PITA con Drupal durante 2 años antes de que comenzara con WordPress, por lo que el problema no es exclusivo de WordPress).
Me molestaba que cada vez que necesitaba mover un sitio tenía que gastar tanto esfuerzo duplicado a menudo y me impedía implementar para probar con la frecuencia que hubiera preferido. Hace unos 4-6 meses comencé a trabajar en un complemento para resolver el problema de migración de webhost y mencioné mis ideas en el foro de WP Tavern .
Avancemos rápidamente hasta hoy y lo tengo funcionando y lo llamo " WP Migrate Webhosts ". A pesar de que el complemento todavía es beta (probablemente incluso alfa) dada su pregunta, creo que estoy listo para permitir que la gente empiece a utilizarlo.
El caso de uso previsto es que:
- primero, el desarrollador se encarga de cargar todos los temas y archivos de complementos modificados a través de FTP,
- luego carga la base de datos MySQL de desarrollo al servidor de prueba en su totalidad y finalmente
- luego ejecuta el complemento para migrar cualquier referencia del dominio anterior al nuevo. (Mi complemento no intenta resolver la fusión de nuevos campos de base de datos o tablas con datos en vivo; ESO es un problema mucho mayor que no estoy seguro de cómo resolver).
Puede descargar el complemento de mi sitio web y descomprimirlo en su directorio de complementos (si no sabe cómo hacer esto, entonces este complemento no es para usted porque requiere que alguien que sepa lo que está haciendo lo use). mantenga este complemento en línea hasta que lo publique en WordPress.org, luego de lo cual debe buscarlo allí.
Para usarlo se toma un enfoque diferente en su wp-config.php
eso normal comentando los cuatro (4) define DB_NAME
, DB_USER
, DB_PASSWORD
y DB_HOST
y en lugar de registrar los valores predeterminados para los servicios de alojamiento web y luego registrar información sobre cada servicio de hosting propio. Así es como wp-config.php
podría verse ese segmento (tenga en cuenta que la primera sección es el código innecesario comentado y también tenga en cuenta que configuré mi archivo de hosts en mi máquina local con .dev
dominios de nivel superior no enrutables para facilitar el desarrollo diario. En Mac, VirtualHostX lo hace muy fácil):
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
//define('DB_NAME', 'wp30');
/** MySQL database username */
//define('DB_USER', 'wp30_anon');
/** MySQL database password */
//define('DB_PASSWORD', '12345');
/** MySQL hostname */
//define('DB_HOST', '127.0.0.1:3306');
require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/wp-webhosts.php');
register_webhost_defaults(array(
'database' => 'example_db',
'user' => 'example_user',
'password' => '12345',
'host' => 'localhost',
'sitepath' => '', // '' if WordPress is installed in the root
));
register_webhost('dev',array(
'name' => 'Example Local Development',
'host' => '127.0.0.1:3306',
'domain' => 'example.dev',
'rootdir' => '/Users/mikeschinkel/Sites/example/trunk',
));
register_webhost('test',array(
'name' => 'Example Test Server',
'rootdir' => '/home/example/public_html/test',
'domain' => 'test.example.com',
));
register_webhost('stage',array(
'name' => 'Example Staging Server',
'rootdir' => '/home/example/public_html/stage',
'domain' => 'stage.example.com',
));
register_webhost('live',array(
'name' => 'Example Live Site',
'rootdir' => '/home/example/public_html/',
'password' => '%asd59kar12*fr',
'domain' => 'www.example.com',
));
require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/set-webhost.php');
Esperemos que esto (en su mayoría) se explique por sí mismo. Intenté hacer el código lo más limpio posible, pero desafortunadamente requiere esas dos require_once()
líneas crípticas antes y después del bloque del código de registro de webhost, ya que no había forma de " enganchar " WordPress antes de que wp-config.php
se llamara.
Una vez que haya actualizado su wp-config.php
, simplemente puede usar el acceso directo de URL wp-migrate-webhosts
para ir a la pantalla de administración de la siguiente manera:
http://example.com/wp-migrate-webhosts
Lo anterior lo llevará a una pantalla de administración como la siguiente, que tiene un poco de texto descriptivo y le permite migrar DESDE cualquiera de los otros dominios de webhost con un solo clic después de seleccionar los dominios para migrar ( NOTA : este ejemplo muestra que va ABAJO desde / etapa de servidores de prueba / en vivo con el desarrollo local, pero puede estar seguro de que puede migrar a cualquier dominio en el que pasa a estar ubicado. Esto también significa que el plugin será muy bueno para tomar un sitio en producción existente y obtener rápidamente un entorno de desarrollo local que trabaja! ):
Si no está claro, " migración " en este contexto significa actualizar todas las referencias en la base de datos actual para que sean apropiadas para el servidor web actualmente definido (y " actual " se detecta mediante la inspección $_SERVER['SERVER_NAME']
).
Lo bueno del complemento es que implementa algunas migraciones básicas, pero cualquiera puede conectarlo y realizar sus propias migraciones . Por ejemplo, si se agrega una galería plugin que almacena las rutas completas a las imágenes en la base de datos se podría enganchar la migrate_webhosts
acción que se aprobó la " del servicio de hosting" y la " a " servicio de hosting cada uno como un conjunto de metadatos y se le permitió para realizar lo que necesite hacer en la base de datos utilizando SQL o cualquier función API de WordPress aplicable para realizar la migración. Sí, cualquiera de nosotros podría hacer esto sin el complemento, pero sin el complemento descubrí que escribir todo el código necesario era más esfuerzo de lo que valía la pena. Con el complemento es más fácil escribir estos pequeños ganchos y acabar de una vez.
También puede encontrar que mis migraciones fallan en casos extremos que no he probado y tal vez pueda ayudarme a mejorar el complemento. Cualquier persona que quiera puede enviarme un correo electrónico a través de mi cuenta de Gmail (mi alias es "mikeschinkel").
Además, el plugin fue diseñado para aceptar los metadatos de hosting fácil de definir, además de los que reconozca como database
, user
, password
, host
, domain
etc. Un ejemplo perfecto podría ser googlemaps_apikey
donde se puede almacenar a las diferentes claves de la API para cada dominio que las necesidades de plug-in de su Google Mapa para operar correctamente (¿quién de ustedes que ha utilizado un complemento de Google Maps no ha implementado una aplicación en un servidor en vivo y se olvidó de cambiar el código a la clave API correcta? Vamos, sea honesto ... :) Con este complemento, ¡un googlemaps_apikey
elemento en su matriz register_webhost () y un pequeño migrate_webhosts
enlace personalizado que puede eliminar efectivamente como una preocupación!
Bueno, eso es todo. Estoy lanzando este complemento aquí en el Intercambio de respuestas de WordPress porque la pregunta de @ Insanity5902 lo activó. Avíseme si es útil, aquí si corresponde o por correo electrónico si no.
PD: si decide usar esto, recuerde que es alfa / beta y eso significa que cambiará, así que prepárese para una cirugía menor si desea usarlo de vez en cuando y luego use la versión lanzada una vez que haya sido golpeada por muchas manos.
PPS ¿Cuáles son mis objetivos con esto? Me encanta ver que esto migre al núcleo de WordPress para que todos tengan acceso a él. Pero antes de que eso pueda considerarse, muchas personas tienen que estar interesadas en usarlo para asegurarse de que realmente resuelva más problemas de los que potencialmente podría crear. Entonces, si te gusta la idea, úsala y ayúdame a ganar impulso para una eventual inclusión esperanzada en el núcleo de WordPress.