¿Cómo se hace la producción del sitio web de IIS?

15

Por lo tanto, no estoy seguro de si se trata de una pregunta de desbordamiento de pila o falla del servidor. Si tengo un sitio web .NET que quiero implementar en el entorno de producción, ¿cuál es la mejor manera de hacerlo? ¿Debo empaquetarlo como MSI e instalarlo? Use nant para subir los archivos necesarios. ¿Solo FTP los archivos usando Beyond Compare?

¿Cómo se implementa el código de producción? Este es un caso específico de Windows que estoy viendo aquí.

Glenn Slaven
fuente

Respuestas:

15

IIS admite la implementación de xcopy, por lo que solo debe copiar los archivos, a menos que tenga requisitos especiales.

Una forma de hacerlo es un script simple que usa ROBOCOPY para copiar los nuevos archivos al servidor.

Si el sitio es grande y esto lleva demasiado tiempo, use un sistema de control de versiones. Me gusta Mercurial para este propósito, aunque hay que tener cuidado de que los archivos de configuración del sistema de control de versiones no se publiquen. La implementación es simplemente una cuestión de confirmar los cambios y luego verificar la última versión en el servidor. Además de ser eficiente, esto permite retrocesos rápidos (si etiquetó la última versión correcta) en caso de que su último y mejor tenga un error de showtopper.

Para minimizar el tiempo de inactividad, puede hacer que el script copie los archivos en un nuevo directorio y luego cambie rápidamente el nombre de los directorios o cambie la ubicación de IIS en el nuevo directorio.

Joel Spolsky
fuente
1
El sistema de control de versiones es atractivo, pero para los sitios web que requieren compilación, podría no funcionar demasiado bien. A menos que una versión compilada se mantenga bajo control de versiones, por supuesto.
Jonathon Watney
1
Nunca pensé en poner un sistema de control de fuente en producción. Interesante seguro supera tener que guardar toneladas de archivos zip adicionales.
JoshBerke
Hago esto todo el tiempo con Subversion. En Apache, usaría mod_rewrite para asegurarse de que los usuarios no puedan acceder a los directorios .svn. Usar el control de versiones para la implementación es definitivamente el camino a seguir.
Lucas
13

Considere usar la herramienta de implementación web de Microsoft. Fue diseñado específicamente para ayudar a implementar aplicaciones web y actualizaciones de esas aplicaciones web en los servidores web de producción IIS 6 y 7 y realiza un mejor trabajo de la tarea que MSI (Windows Installer), en mi humilde opinión.

Normalmente lo usas configurando un sitio "maestro de oro" en algún lugar y luego diciéndole a la herramienta que empaque los cambios desde allí. Luego mirará a un servidor de destino para la implementación y realizará los cambios necesarios para que se vea como el maestro de oro (que es útil para actualizaciones posteriores). Es particularmente útil si está implementando en más de un servidor web (es decir, una granja de servidores), y tiene soporte para implementar más que solo archivos (también puede manejar hacer cambios en el registro, implementar certificados, bases de datos SQL, etc.).

Erv Walter
fuente
+ infinito Esta herramienta es un salvavidas y libera a departamentos enteros (a la tsilb) para trabajar en problemas más interesantes.
Portman
4

Seguiría la respuesta de Joel sugiriendo que un servidor de integración continua recoja sus cambios de su sistema de control de fuente. Luego construirá el proyecto. Luego haga que xcopy la salida de la compilación a una nueva carpeta. Luego puede hacer algunos cambios rápidos de configuración (web.config y app.config). ¡Voila, listo para Xcopy!

Echa un vistazo a CruiseControl.NET

p.campbell
fuente
3

Lo que hice en mi anterior empleador, que era básicamente un sitio de subastas / comercio electrónico donde no podíamos permitir mucho tiempo de inactividad:

  • Tome una versión de compilación comprimida de la versión / versión para implementar en el servidor de compilación
  • Pruébelo en un servidor de ensayo que tenga una copia de la base de datos de producción y tenga la misma versión de software que el software de producción. Prueba que todo salió bien. Si no, reinicie la implementación del servidor provisional (pero primero restaure una copia de seguridad).
  • Si todo salió bien: copie los scripts de compilación y actualización de la base de datos al servidor de producción en una carpeta local. Realice una copia de seguridad específica de la base de datos y los archivos ASP.NET (en caso de que algo salga mal). Prepare todo para que solo tenga que hacer clic en Intro para iniciar el script de actualización y la copia de los archivos de la base de datos (tenga en cuenta que podría crear un script para esto). Luego inicia todo. Esto normalmente es cuestión de segundos y los usuarios no notarán mucho que ha habido tiempo de inactividad.

Hay muchas cosas más divertidas que hacer como desarrollador web. Pero esta fue la parte más crucial de mi trabajo.

Miguel
fuente
1

oh jeeez, en el trabajo tenemos todo un equipo para esto. Tienen una herramienta interna que saca un servidor del clúster / granja, publica los archivos, ejecuta las NUnits y lo agrega nuevamente al clúster / granja. Lo hacen para cada uno de los 16 servidores. Toma horas El resto de nosotros ni siquiera tenemos "acceso a mirar alrededor".

Para mis proyectos personales, publico desde VS2005 directamente en mi servidor web. Un poco tiene una seguridad menos estricta.

tsilb
fuente