Cómo implementar correctamente aplicaciones desde el desarrollo hasta la producción y cómo lidiar con múltiples configuraciones de sitios. Todos mis desarrollos se realizan a través de svn ubicado en var/svn/myapp/trunk y el código de producción real está en/var/www/myapp.¿Cómo implementar correctamente sus aplicaciones PHP?
Reviso el último código de mi máquina local en un directorio llamado "myapp_latest_svn". tengo sitio y código específico de ubicación en mi settings.php principal, que tiene H_PATH = '' http://myapp.com ajustes de configuración & DB para db_host, db_user_name y contraseña_bd que es como saben diferente en configuración del equipo local (donde localhost/miaplicacion. com es solo un alias de Apache) & en el servidor de producción (el sitio en vivo se ejecuta en myapp.com).
También el archivo .htaccess es diferente del del servidor de producción. En resumen, hay una serie de diferencias entre dev y producción.
Guardo todo mi trabajo en SVN. Cada mañana uso SVN Update que actualiza el código más reciente a mi repositorio svn local. Cuando estoy listo para comenzar, construyo un lanzamiento con svn Commit.
Luego, en el lanzamiento, tengo que recordar cambiar todos los archivos dev apropiados a su contraparte de producción. Ahora tuve que editar manualmente la configuración de producción.php & .htaccess para reflejar los cambios específicos del sitio.
Estoy buscando una forma automática de ir de desarrollo a producción completa con control de versiones y sin edición manual de archivos que es propenso a errores y mala práctica.
Una forma es hacer que la versión de producción de los archivos sea de solo lectura (0444). De esta forma, cuando hago una exportación de svn, , no se sobrescriben con la versión dev de los archivos y no tengo que preocuparme por editar los archivos en cada vez que paso de dev a producción. Pero esa es una mala forma de hacer cosas como la integración continua.
También haciendo copias múltiples de settings.php (una para localhost, beta y prod). Luego, usando un script de shell que exporta desde svn, y luego una vez que se realiza la exportación, reemplaza settings.php con la configuración correcta.php, dependiendo de la ubicación en la que estamos implementando. De esa forma todo está automatizado. Pero esto también es un camino flojo por recorrer.
Última manera es
if(eregi ("myapp.com$", $_SERVER['HTTP_HOST'])){
define('H_PATH', 'myapp.com');
} else {
define('H_PATH', 'localmyapp.com');
}
Esto está muy bien en lo que se refiere a settings.php. Pero, ¿qué pasa con el .htaccess, no se puede verificar como se describe en .htaccess.
Lo que no quiero terminar haciendo cada vez que despliegue mi sitio que tengo que cambiar la configuración.
Mi esquema de base de datos no está en control de versión, por lo que db no es un problema conmigo, solo los settings.php y .htaccess.
Además, ¿cómo puedo decirle a svn que no actualice algunos directorios ya que también es específico del sitio (/ log,/cache,/assets,/downloads). También necesito preservar el acceso de escritura de apache (www_data) intacto para los archivos anteriores también.
Por último, no quiero copiar el directorio troncal vacío y los archivos .svn en el servidor de producción cuando exporto.
¿Cómo puedo usar Phing o incluso un script de shell para integrar sin causar ninguno de estos problemas al construir desde svn a los servidores de producción.
Esto podría ser útil para muchos desarrolladores de aplicaciones wannabe en la naturaleza.
Gracias de antemano,
ocptime
Gran enlace! ¡Gracias! –
¿Podría explicar qué hacen los directorios de enlaces simbólicos? – dave1010