servidor - subir archivo ftp php
Implementación de php en un servidor remoto usando FTP desde SVN después de cada confirmación (9)
No pude encontrar la solución para la implementación de Php en un servidor remoto utilizando FTP de SVN después de cada confirmación. ¿Cómo puedo cargar al servidor por FTP los únicos archivos agregados o editados y eliminar los archivos eliminados de SVN? Pienso en escribir un script post-commit ...
¡Buena pregunta!
No estoy seguro de que exista un enfoque solo de PHP para sincronizar archivos de esa manera.
Usualmente usaría herramientas de sincronización de FTP de terceros como rsync
o ScriptFTP (comercial) para hacer la parte de sincronización.
Eche un vistazo a phing , hay varias extensiones de FTP (llamadas "tareas") para ello. Aunque no tengo experiencia en el mundo real con ellos.
Esta publicación de blog ofrece una serie de ideas y enfoques: Uso de phing para sincronizar archivos con alojamiento compartido
¡Utilizo http://svn2ftp.com que es un host SVN que permite implementaciones remotas a S / FTP en cada confirmación!
¿Has mirado en Beanstalk ? Le permite implementar sus proyectos Subversion y Git en su servidor FTP con un solo clic. Aunque no es gratis. Otra alternativa gratuita sería configurar un servidor de integración continuo que ejecutaría un script rake para realizar sus implementaciones.
¿Qué dice, realiza el proceso de pago de SVN a su servidor, (cree una copia de trabajo del SVN al servidor de producción), y cuando quiera implementar una nueva versión, simplemente se conecta al servidor a través de SSH y escribe svn update
, y listo, solo se implementarán los últimos archivos editados, y en menos de un segundo tendrá la última versión actualizada en producción.
La mejor manera es (si su servidor está basado en Linux) realizar una Exportación SVN a un nuevo directorio y luego mover el nuevo directorio para reemplazar el anterior (la mejor manera de hacerlo es con enlaces simbólicos a diferentes versiones del sitio). De esta manera, el sitio no estará disponible por un segundo o dos, mientras que si rsync y tiene un sitio grande, si cambia drásticamente un solo archivo, el sitio se romperá hasta que todos los archivos se sincronicen.
En cuanto a la activación de este procedimiento, la mejor manera es usar svn hooks. También considere realizar algunas pruebas automáticas antes de la publicación (para la funcionalidad básica), ya que puede romper su troncal bastante mal en algún momento y el sitio definitivamente no estará disponible :)
Actualmente estamos incorporando el enfoque descrito anteriormente en un entorno de producción y la configuración es la siguiente:
- Un commit va en el maletero.
- Antes de que esté realmente comprometido, las pruebas se ejecutan en el código para ver si todo funciona
- Después de varios intentos, llega un despliegue (generalmente supervisado por el desarrollador)
- Las pruebas se ejecutan de nuevo
- Si tienen éxito, todo está bien.
- Si fallan, se devuelve la exportación anterior y el sitio vuelve a estar completamente operativo.
Todo está escrito en PHP, mediante el uso de comandos de consola standart.
Para nuestro proyecto php usamos Jenkins una herramienta de integración continua. Nuestro servidor de repositorios es subversion. Cada vez que hacemos cambios de código, utilizamos trabajos de jenkins para fusionarnos con el entorno de prueba y en vivo Beta y luego implementar la aplicación.
Puede encontrar más información sobre la implementación de aplicaciones PHP utilizando Jenkins en http://www.michaelpeacock.co.uk/blog/entry/jenkins-ci-an-introduction-for-php-developers
Puede usar svn2web para cargar cada archivo comprometido a un servidor a través de FTP. Svn2web es una colección de scripts php que puedes usar como svn hooks. Puede configurar la dirección, el nombre de usuario y la contraseña del servidor ftp como una propiedad svn en un directorio. ¡Funciona genial!
Si no desea administrar los scripts por sí mismo, pero solo desea algo que funcione, puede intentar usar un servicio alojado. Yo uso Deploy , que funciona perfectamente para el escenario que describe. Y si solo tienes un proyecto para implementar, es incluso gratis.
mybe cron + bash script que será svn arriba?