Pregunta

Tenemos varios proyectos php desarrollados en Windows (xampp) que deben implementarse en una combinación de servidores Linux/Windows.

hemos usado capistrano en el pasado se implementaba desde Windows a los servidores Linux, pero los cambios recientes en la arquitectura y los servidores Windows dejaron que la configuración anterior no funcionara.La receta funciona bien para la implementación de Linux, pero configurar los servidores de Windows ha requerido más tiempo del que tenemos ahora.Las ideas para la receta de Capistrano son respuestas válidas.obviamente, los servidores Windows/Linux no comparten usuarios, por lo que esto lo complica un poco (para el supuesto capistrano del mismo nombre de usuario/contraseña en todas partes).

Actualmente estamos usando svn-update para los servidores de Windows, lo cual no me gusta, ya que deja todos los archivos svn colgados en los servidores de producción.(y todavía tenemos que actualizarlos manualmente con svn en Windows) y actualizar manualmente los archivos usando winscp y sincronizar los directorios con sus contrapartes de Linux.

Mi pregunta es, ¿qué herramientas/configuración sugiere para automatizar este escenario de implementación?"Varios desarrolladores de php para Windows/Linux implementan en más de 2 máquinas mixtas con Windows/Linux"

(PD:no tenemos problemas para usar herramientas de Linux ni nada que funcione a través de cygwin, simplemente necesitamos hacer que la implementación sea una operación simple de un solo paso)

editar:Actualmente no podemos trabajar en un entorno totalmente Linux, tenemos que implementar tanto en Linux como en Windows Server.Podemos iniciar la implementación desde cualquier lugar, pero preferiríamos poder hacerlo desde cualquier entorno.

¿Fue útil?

Solución

Utilizo 4 enfoques diferentes según el entorno del cliente:

  1. Capistrano y herramientas similares (efectivas, pero complejas)
  2. rsync de + a Windows, Linux, Mac (simple, no impone disciplina)
  3. svn de + a Windows, Linux, Mac (simple, no impone disciplina)
  4. Scripts en el servidor (ejecutados a través del navegador, complejos)

Hay algunos requisitos que impulsan lo que necesita:

  • ¿Cuánta disciplina quieres imponer?
  • Si necesita migraciones de base de datos (o configuración) (hacia arriba y/o hacia abajo)
  • Si quieres una página estática de "estamos caídos"
  • ¿Quién puede hacer la actualización?
  • Diferencias de configuración entre servidores

Recomiendo encarecidamente imponer suficiente disciplina para salvarte de ti mismo:implementar en un servidor de desarrollo, permitir migraciones ascendentes y una restauración simple de la base de datos, y limitar quién puede actualizar el servidor en vivo a una pequeña cantidad de administradores responsables (donde el servidor de desarrollo está abierto a más desarrolladores).También considere enviar a través de un trabajo cron (al servidor de desarrollo), para que haya una instantánea diaria de sus cambios incrementales.

La mayoría de las veces encuentro que svn o rsync Las configuraciones son suficientes, con algunos scripts del lado del servidor, especialmente cuando el conjunto de administración está limitado a unos pocos desarrolladores.

Otros consejos

Probablemente esto suene tonto pero...Solía ​​tener este tipo de problemas todo el tiempo hasta que al final decidí que si siempre implementando en Linux, al menos debería intentarlo desarrollando en Linux también.Hice.Fue sin dolor.Nunca volví.

Ahora.No estoy sugiriendo que esto sea para todos.Pero si instalas VirtualBox puede ejecutar una instalación de Linux como servidor local en su caja de Windows.Comparta una carpeta en la máquina virtual y podrá utilizar todo el software y las técnicas de Windows conocidos y confiables. y tenga la tranquilidad de saber que todo está funcionando bien en su plataforma de destino.

Además, podrás volver a Capistrano (una buena elección) para el despliegue.

Lo mejor de todo es que si creías que conocías Linux/Unix, ¡espera hasta usarlo todos los días en tu escritorio!Quién sabe, puede que incluso te guste :)

Capistrano es la mejor herramienta de implementación que he visto.¿Los cambios en la arquitectura hacen imposible arreglar las configuraciones para que funcione nuevamente?

¿Por qué ya no puedes usar capistrano?

¿Por qué no te gusta svn-update?

¿Qué elementos de su aplicación requieren una implementación especial?

Puedes configurar svn:ignore propiedad en los archivos de configuración, de modo que svn update no los borra, y luego los usa svn export /target/path/ para deshacerse de .svn archivos en su repositorio de Subversion.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top