Git: Implementación en entornos con diferentes nombres de directory raíz web

Tengo un sitio de ExpressionEngine configurado con Git en múltiples entornos: Local, Desarrollo y Producción.

Tengo un par de directorys que están encima de la raíz web, por lo que el directory raíz web se encuentra dentro del repository git, así:

  • .git
  • sistema
  • tercero
  • templates
  • public_html (raíz web)
    • bienes
      • css
      • js
      • img
    • temas
    • index.php

Ahora, mis entornos de desarrollo y producción están con 2 proveedores de hosting separados, y sus raíces web tienen diferentes nombres entre sí. El desarrollo, por ejemplo, se llama public_html , pero Production se denomina content .

¿Cómo puedo implementar ambos entornos cuando los directorys raíz web tienen diferentes nombres?

El uso de enlaces simbólicos en el server para apuntar la raíz web al directory apropiado es una técnica respetada en el time. Supongamos que le dio a su Git Repo un nombre obvio: clientsite.com, por lo que dentro de esa carpeta tiene:

  • .git
  • sistema
  • tercero
  • templates
  • web_root
    • bienes
      • css
      • js
      • img
    • temas
    • index.php
    • admin.php

Esa carpeta se carga en sus serveres de producción / producción. En el server de ensayo, crearía un enlace simbólico a raíz_web denominado public_html:

ln -s clientsite.com/web_root public_html

Y luego en el server de producción, haría un enlace simbólico al contenido llamado web_root:

ln -s clientsite.com/web_root content


Ahora, lo shiny de esto es que si eres muy inteligente y estás usando MSM, puedes crear files config.php e index.php que te permitan usar web_root para TODOS tus dominios en esa installation EE y simplemente crear enlaces simbólicos a ella para cada sitio. Por ejemplo:

 ln -s clientsite.com/web_root siteone_html ln -s clientsite.com/web_root sitetwo_html 

Luego, en index.php, observas la configuration del server HTTP_HOST para establecer el nombre_sitio:

 switch ( $_SERVER['HTTP_HOST'] ) { case 'siteone.com' : case 'dev.siteone.com' : $assign_to_config['site_name'] = 'siteone'; break; case 'sitetwo.com' : case 'dev.sitetwo.com' : $assign_to_config['site_name'] = 'site two'; break; } 

Finalmente, tu config.php puede hacer algo muy similar:

 $config['site_index'] = ""; $config['site_url'] = "http://".$_SERVER['HTTP_HOST']; $config['server_path'] = $_SERVER['DOCUMENT_ROOT']; $config['cp_url'] = $config['site_url']."/".$config['system_folder'].'/index.php'; ....stuff here... switch ( $_SERVER['HTTP_HOST'] ) { // production case 'siteone.com' : $config['cookie_domain'] = ".siteone.com"; $db['expressionengine']['hostname'] = "111.222.111.22"; $db['expressionengine']['username'] = "siteone"; $db['expressionengine']['password'] = "passone"; $db['expressionengine']['database'] = "database_live"; $db['expressionengine']['db_debug'] = FALSE; break; // staging case 'dev.siteone.com' : $config['cookie_domain'] = "dev.siteone.com"; $db['expressionengine']['hostname'] = "333.444.555.22"; $db['expressionengine']['username'] = "siteone"; $db['expressionengine']['password'] = "passone"; $db['expressionengine']['database'] = "database_dev"; $db['expressionengine']['db_debug'] = FALSE; break; } 

De esta manera, puede tener opciones de configuration globales y también opciones específicas del sitio.

Busca usar enlaces simbólicos para crear webroots falsos

Tengo la siguiente configuration:

Producción

  • public_site (real git repo)
    • público (webroot)
    • sistema (sistema ee)
    • templates
  • public_html (enlace simbólico que apunta a la carpeta pública anterior)

Puesta en escena

  • staging_site
    • público (webroot)
    • sistema (sistema ee)
    • templates
  • staging_html (enlace simbólico que apunta a la carpeta pública anterior)

Luego configura su server para que apunte al host apropiado al directory _html apropiado.