Pregunta

Estoy usando un modelo de estadificación con MSDeploy para desplegar un par de nuestros sitios web a una granja. Los sitios están configurados en IIS en las cajas de puesta en escena única, y luego MSDeploy se utiliza para construir los servidores web de destino a partir de cero.

El cuadro de puesta en escena utiliza sus propias fijaciones (es decir, no hay entradas de cabecera, diferentes IPs / puertos y no hay encabezados de host) para los sitios que serán en vivo. Cuando desplegarlos primero tengo un archivo XML que se utiliza para preparar un paquete parametrizado (con el interruptor -declareParamFile) que declara los parámetros de la siguiente manera:

<parameters>
  <parameter name="site1">
    <parameterEntry kind="DestinationBinding" scope="Site1" match=":17000:" />
  </parameter>
</parameters>

Así que en el XML anterior se puede ver que el sitio está alojado en escena en el puerto 17000 como el atributo match se ajusta para que coincida con una unión que tiene ese valor.

Cuando a continuación se despliegan para cada sitio en producción, uso un XML diferentes parámetros que especifica el encabezado de host correcto e IP para esa máquina - aplico esto usando el interruptor -setParamFile. He aquí un ejemplo de uno de ellos.

<parameters>
  <setParameter name="site1" value="[ip_addr]:[port]:[host_header]"/>
</parameters>

Por lo tanto, dado que el parámetro original se declaró para que coincida con uno de los enlaces conocidos -. Puedo reemplazar a que la unión con lo que en realidad quiero que sea en cada servidor en vivo

Lo que quiero hacer ahora es desplegar el sitio y añadir nueva fijaciones de destino a lo que incorporan los diferentes dominios de primer nivel que tenemos - es decir site.com, sitio .co.uk, site.ca etc, todos unidos en la misma dirección IP y el puerto.

Las razones para querer hacer esto son:

  • Tenemos un nuevo sitio que queremos implementar que será necesario un nombre de host diferente, pero no queremos darle su propia dirección IP (quedando sin direcciones IP aquí!), Pero tenerlo compartir la IP que una ya existente sitio en los servidores ya tiene.
  • Esto significa añadir enlaces de nombres de host específicos al sitio que ya está allí, en lugar de tener que responder a cualquier nombre de host.
  • Hemos cuatro nombres de dominio actualmente apuntando a IP con equilibrio de carga del sitio existente (.com, .es, .ca, .com.au). Por el momento funciona debido a que el servidor web no se preocupan por el encabezado de host -. Pero cuando el nuevo sitio va en la misma IP, lo hará, y los otros nombres de dominio ya no funcionará

El problema es que no creo que no parece haber ninguna forma de agregar dicha información. He intentado añadir múltiples elementos setParameter en la segunda XML, pero que simplemente tiene el efecto de sobrescribir repetidamente la unión, con el último como el eventual ganador.

Una solución para que añada fijaciones '' de marcador de posición para cada uno de los sitios en el cuadro de puesta en escena, que representan los enlaces externos de destino para cada nombre de dominio, puerto, etc; y luego modifico los dos archivos de parámetros para sustituir a los atascamientos con las reales.

Pero para mí esto se siente totalmente equivocado - que sería el modelado de la caja de montaje a traje el despliegue en vivo; que debería ser al revés.

¿Es posible añadir realmente enlaces de sitio con MSDeploy (si es así, ¿cómo?), O sólo soporte de sustitución?

¿Fue útil?

Solución

Después de mucho golpearse la cabeza, parece que no hay manera de añadir nuevos enlaces mediante la operación DestinationBinding con MSDeploy.

Lo que sería posible sería la de colocar un script para ser ejecutado después del despliegue que añade los enlaces usando appcmd cada vez.

Por lo tanto, la sincronización inicial a través de MSDeploy eliminaría esas fijaciones (porque no están en el servidor intermedio) pero el guión appcmd entonces añadirlos de nuevo.

En realidad, no una solución ideal, sin embargo, ya que es otro script que tiene que mantenerse al día.

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