Índice
- 1. Introducción
- 2. Qué soluciona Core-Admin Variable Push
- 3. Cómo activarlo y cómo funciona
- 4. Cómo reimportar las variables manualmente desde el panel
- 5. Cómo comprobar que las variables se están importando correctamente
1. Introducción
Core-Admin Variable Push es una característica usada en conjunto con el gestor de alojamientos (#WebhostnigManagement) que permite al usuario de la web poder importar las declaraciones de variables de entorno localizadas en su .bash_profile dentro de la configuración Apache2 como declaraciones SetEnv (realizándose una conversión en el proceso export a SetEnv):
De esta manera:
-
Se pueden automatizar el deployment (push) importando e integrando las variables de desarrollo que generan entornos como Symphony, Cake, etc.
-
Se asegura que la configuración de variables es consistente: lo que hay en el .bash_profile se encuentra en la configuración Apache2.
-
Evita tener que activar la opción de configuración personalizada (que deshabilita muchas opciones de Core-Admin).
2. Qué soluciona Core-Admin Variable Push
Algunos de los problemas de automatizar el despliegue de código son:
-
La configuración de variables de entorno que indicarán que estamos en producción (por ejemplo APP_ENV=prod)
-
La mezcla de estas declaraciones con otras declaraciones o cómo se relacionan con motores de ejecución (php-fpm) o cómo interaccionan con Apache2 Mod-Rewrite
Más concretamente, Core-Admin Variable Push resuelve:
-
No tener que editar el .htaccess para incluir las variables
-
Es compatible con todos los métodos de ejecución (php-fpm, itk, etc)
-
Resuelve el problema REDIRECT_ del ModRewrite de manera sólida sin soluciones exóticas dependientes del contexto y otras variables que no se controlan fácilmente.
-
Para situaciones con muchas variables, facilita asegurar que todas las variables serán correctamente importadas y sincronizadas desde un único sitio (el .bash_profile habitualmente subido con un acceso ssh).
3. Cómo activarlo y cómo funciona
-
Se asumen que el usuario que sube las variables tiene un acceso ssh o algún método para dejar el .bash_profile actualizado con las variables deseadas en el home de la web para actualizar (habitualmente /var/webs/dominio-de-la-web.com/.bash_profile).
-
Ahora active la opción Core-Admin Variable Push accediendo a la opción enable_variable_push del sitio:
-
Una vez hecho el punto anterior ya se habrán importado las variables declaradas. Ahora, cada vez que quiera reimportar, ejecute el siguiente comando con el usuario de la web:
> /usr/sbin/crad-exports-conversor.pyc .bash_profile --push-variables
4. Cómo reimportar las variables manualmente desde el panel
Para eso, simplemente vuelva a editar la opción enable_variable_push como si fuera la primera vez, dejándola activada. Esto forzará un reimportado.
5. Cómo comprobar que las variables se están importando correctamente
Dispones de varias maneras de hacerlo:
-
Puedes ejecutar el comando siguiente para mostrar las variables que serán importadas en el maestro del apache2:
> crad-exports-conversor.pyc .bash_profile -o .htaccess
# esto te mostrará las variables, su contenido y todo en formato Apache2 SetEnv -
Puedes también revisar directamente la declaración generada por core-admin para todo el sitio. Para ello necesitarás acceso root. Tras esto ejecuta:
> less /etc/apache2/sites-enabled/dominio-del-sitio.com.conf
-
Por último, también puedes usar el propio php para ver las variables. Crea un fichero variables.php en la raíz del sitio y visítalo después de añadir el siguiente contenido:
<?phpforeach ($_SERVER as $key => $value) {
echo “$key => $value<br>”;
}
6. Reparación de mediator (--repair)
Cuando la base de datos de crad-mediator (/etc/core-admin/crad-mediator.sql) se recrea o un comando se vuelve a registrar, el identificador interno (cmd_id) almacenado en la base de datos cambia, pero el fichero mediator (auth file) conserva el antiguo command-hash. Esto provoca el siguiente error al ejecutar el variable push:
ERROR: command error: Command wasn’t found. Unable to proceed
El síntoma visible para el usuario del alojamiento es que el comando crad-exports-conversor.pyc .bash_profile --push-variables deja de funcionar, a pesar de que la configuración en el panel es correcta.
Diagnóstico
Para confirmar que el problema es un desajuste de command-hash, se puede verificar con:
crad-mediator.pyc -l
Este comando muestra los comandos registrados y sus usuarios asociados. Si el cmd_id que aparece en la base de datos no coincide con el command-hash almacenado dentro del fichero .mediator, es necesario reparar.
Reparación de un fichero concreto
-
Si se conoce la ruta exacta del fichero mediator afectado, se puede reparar de forma individual:
crad-mediator.pyc --repair /var/webs/ejemplo.dominio.com/import-variables.variable-push.mediator
-
Salida esperada:
REPAIRING: /var/webs/ejemplo.dominio.com/import-variables.variable-push.mediator (user=ejemplodominiocom) command-hash mismatch: file=3e649829c042 db=5d0f600610c7
REPAIRED: /var/webs/ejemplo.dominio.com/import-variables.variable-push.mediator (user=ejemplodominiocom)
Reparación global (todos los ficheros)
-
En caso de que la base de datos se haya recreado completamente y haya múltiples alojamientos afectados, se pueden reparar todos los ficheros mediator registrados con un solo comando:
crad-mediator.pyc --repair all
-
Salida esperada:
REPAIRING: /var/webs/sitio1.ejemplo.com/import-variables.variable-push.mediator (user=sitio1ejemplocom) command-hash mismatch: file=3e649829c042 db=5d0f600610c7
REPAIRED: /var/webs/sitio1.ejemplo.com/import-variables.variable-push.mediator (user=sitio1ejemplocom)
OK: /var/webs/sitio2.ejemplo.com/import-variables.variable-push.mediator (user=sitio2ejemplocom) already in sync (command-hash=a1b2c3d4e5f6)SUMMARY: 1 repaired, 1 already ok, 0 errors (total: 2)
El resumen final indica:
- repaired: ficheros que tenían desajuste y fueron corregidos
- already ok: ficheros que ya estaban sincronizados con la base de datos
- errors: ficheros que no pudieron repararse (por ejemplo, si no existe el registro en la base de datos o hay un problema de permisos)
Verificación tras la reparación
Después de reparar, se recomienda:
-
Ejecutar --repair all de nuevo para confirmar que todos los ficheros están en sync:
crad-mediator.pyc --repair all
-
Todos deberían aparecer como already in sync.
-
Probar el variable push como el usuario del alojamiento:
su - ejemplodominiocom -s /bin/bash
/usr/sbin/crad-exports-conversor.pyc .bash_profile --push-variables --verbose -
El resultado esperado es:
INFO: variable push command finished ok (status=0): INFO: hosting reloaded [ejemplo.dominio.com] : None
Notas
- El comando --repair requiere permisos de root.
- La reparación reescribe el fichero mediator con el cmd_id y password actuales de la base de datos, y restaura los permisos (0400) y propietario correctos.
- Si un fichero mediator no existe en disco pero su registro sí está en la base de datos, --repair lo recrea automáticamente.
