¿Cómo implementar sus aplicaciones PHP correctamente?

Cómo implementar correctamente las aplicaciones desde el desarrollo hasta la producción y cómo lidiar con múltiples configuraciones de sitio. Todo mi desarrollo se realiza a través de svn ubicado en var / svn / myapp / trunk y el código de producción real está en / var / www / myapp.

Reviso el último código de mi máquina local en un directorio llamado "myapp_latest_svn". Tengo un código específico de sitio y ubicación en mi configuración principal.php, que tiene H_PATH = 'http://myapp.com'& db config settings para db_host, db_user_name y db_password, que es como se sabe diferente en la configuración de la máquina local (donde localhost / myapp.com es solo un alias de Apache) y en el servidor de producción (el sitio en vivo se ejecuta en myapp.com).

Además, el archivo .htaccess es diferente al del servidor de producción. En resumen, hay una serie de diferencias entre desarrollo y producción.

Mantengo todo mi trabajo en SVN. Todas las mañanas uso la actualización de SVN que actualiza el código más reciente en mi repositorio svn local. Cuando estoy listo para empezar a funcionar, compilo una versión con svn Commit.

Luego, en el lanzamiento, debo recordar cambiar todos los archivos dev apropiados a su contraparte de producción. Ahora tenía que editar manualmente la configuración de producción.php & .htaccess para reflejar los cambios específicos del sitio.

Estoy buscando una forma automatizada de pasar del desarrollo a la producción completa con el control de versiones y sin edición manual de archivos, lo que es propenso a errores y es una mala práctica.

Una forma es hacer que la versión de producción de los archivos sea de solo lectura (0444). De esa manera, cuando hago una exportación svn, no se sobrescriben con la versión dev de los archivos y no tengo que preocuparme por la edición de archivos en cada movimiento desde dev a producción. Pero esa es una mala manera de hacer cosas como la integración continua.

También haciendo copias múltiples de settings.php (una para localhost, beta y prod). Luego, utilizando 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 estemos implementando. De esa forma todo se automatiza. Pero esta es también una manera de ir a pie.

La ultima manera es

if( eregi ("myapp.com$", $_SERVER['HTTP_HOST']) ){

    define('H_PATH', 'myapp.com');

} else {

    define('H_PATH', 'localmyapp.com');

}

Esto está bien en lo que concierne a settings.php. Pero en lo que respecta a .htaccess, no se puede verificar como se indica en .htaccess.

Lo que no quiero que termine haciendo cada vez que implemento mi sitio, tengo que cambiar la configuración.

Mi esquema de base de datos no está en el control de versiones, por lo que db no es un problema para mí, solo la configuración.php y .htaccess.

También, ¿cómo puedo decirle a svn que no actualice algunos directorios ya que también es específico del sitio (/ log, / cache, / asset, / 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 al servidor de producción cuando exporto.

¿Cómo puedo usar Phing o incluso un script de shell para integrarme sin causar ninguno de estos problemas al compilar desde svn a servidores de producción?

Esto podría ser útil para muchos desarrolladores de aplicaciones aspirantes que existen en la naturaleza.

Gracias por adelantado,

en algún momento

Respuestas a la pregunta(4)

Su respuesta a la pregunta