msdeploy - sirve - web deploy visual studio 2017
(MSDeploy) Despliegue del contenido de una carpeta a un servidor IIS remoto (1)
¿Es posible implementar el contenido de una carpeta (archivos Html simples) en una aplicación web específica en un servidor remoto IIS6 / 7?
El siguiente comando no genera errores, pero tampoco publica ningún archivo en el servidor remoto:
msdeploy.exe -verb:sync -source:dirPath="c:/myHtmlFiles" -dest:auto,ComputerName="http://deploy.mycompany.co.uk/msdeploy?site=TestSite",includeAcls="false",username="administrator",password="myPassword" -enableRule:DoNotDeleteRule -disableLink:AppPoolExtension -disableLink:ContentExtension -allowUntrusted
NOTA:
- WebDeploy está instalado correctamente en el servidor de destino y funciona felizmente con paquetes creados a partir de scripts de msbuild para proyectos .NET.
- '' http://deploy.mycompany.co.uk/msdeploy '' es correcto para el punto final de escucha.
- La cadena de consulta ''? Site = TestSite'' se sugirió en otro lugar, pero no funciona.
- La aplicación web ''TestSite'' existe en el servidor de destino.
- Los archivos de parámetros y -setParam no funcionan y representan errores relacionados con la fuente que no admite el parámetro ''Nombre de aplicación web IIS'' si intenta establecerlo, declararlo o proporcionarlo.
Acabo de escribir una publicación de blog para responder a esto en http://sedodream.com/2012/08/20/WebDeployMSDeployHowToSyncAFolder.aspx . A partir de su pregunta, parece que está muy familiarizado con MSDeploy, por lo que la respuesta puede ser un poco detallada, pero quería que las personas con menos conocimiento de MSDeploy puedan comprender. He pegado la respuesta a continuación.
Web Deploy (también conocido como MSDeploy) utiliza un modelo de proveedor y hay una buena cantidad de proveedores disponibles listos para usar. Para darle un ejemplo de algunos de los proveedores; al sincronizar una aplicación web de IIS, usará iisApp, para un paquete de MSDeploy usará el paquete, para un servidor web server web, etc. Si desea sincronizar una carpeta local con una ruta remota de IIS, puede usar el proveedor de contentPath . También puede usar este proveedor para sincronizar una carpeta de un sitio web a otro.
La idea general de lo que queremos hacer en este caso es sincronizar una carpeta desde su PC a su sitio web de IIS. Las llamadas a msdeploy.exe pueden ser un poco detalladas, así que construyamos el comando un paso por vez. Utilizaremos la plantilla a continuación.
msdeploy.exe -verb:sync -source:contentPath="" -dest:contentPath=""
Usamos el verbo sync para describir lo que estamos tratando de hacer, y luego usamos el proveedor de contentPath para el origen y el destino. Ahora completemos cuáles deberían ser esos valores. Para el valor de origen, deberá pasar la ruta completa a la carpeta que desea sincronizar. En mi caso, los archivos están en C: / temp / files-to-pub . Para el valor de destino, le dará la ruta a la carpeta como una ruta IIS. En mi caso, el sitio web con el que me estoy sincronizando se llama sayedupdemo, por lo que la ruta de IIS que quiero sincronizar es '' sayedupdemo / files-to-pub ''. Ahora que nos dan.
msdeploy.exe –verb:sync -source:contentPath="C:/temp/files-to-pub" -dest:contentPath=''sayedupdemo/files-to-pub''
Para el valor de dest no hemos dado ningún parámetro que indique a qué servidor se supone que deben enviarse. Necesitaremos agregar esos parámetros. Los parámetros que generalmente deben pasarse son.
- ComputerName: esta es la URL o el nombre de la computadora que manejará la operación de publicación
- Nombre de usuario - el nombre de usuario
- Contraseña: la contraseña
- AuthType: el tipo de authType que se utilizará. Ya sea NTLM o Basic. Para WMSvc esto es típicamente básico, para el servicio de agente remoto esto es NTLM
En mi caso, estoy publicando en un sitio web de Windows Azure . Entonces los valores que usaré son:
- ComputerName: https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo
- Nombre de usuario: $ sayedupdemo
- Contraseña: thisIsNotMyRealPassword
- AuthType: Básico
Todos estos valores se pueden encontrar en el archivo .publishSettings (se puede descargar desde el panel del sitio web desde WindowsAzure.com). Para el valor ComputerName necesitará agregar el nombre de su sitio para obtener la URL completa. En el ejemplo anterior, agregué manualmente ?site=sayedupdemo
, este es el mismo nombre que se muestra en el portal de Azure. Entonces ahora el comando que tenemos es.
msdeploy.exe
–verb:sync
-source:contentPath="C:/temp/files-to-pub"
-dest:contentPath=''sayedupdemo/files-to-pub''
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName=''$sayedupdemo''
,Password=''thisIsNotMyRealPassword''
,AuthType=''Basic''
OK, ¡ya casi llegamos! En mi caso, quiero asegurarme de no borrar ningún archivo del servidor durante este proceso. Así que también –enableRule:DoNotDeleteRule
. Entonces nuestro comando es ahora.
msdeploy.exe
–verb:sync
-source:contentPath="C:/temp/files-to-pub"
-dest:contentPath=''sayedupdemo/files-to-pub''
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName=''$sayedupdemo''
,Password=''thisIsNotMyRealPassword''
,AuthType=''Basic''
-enableRule:DoNotDeleteRule
En este punto, antes de ejecutar este comando, lo ejecutaré primero –whatif
. Esto me dará un resumen de las operaciones sin causar ningún cambio. Cuando hago esto, el resultado se muestra en la imagen a continuación.
Después de verificar que los cambios son todos intencionales, –whatif
el –whatif
y –whatif
el comando. Después de eso, los archivos locales se publicaron en el servidor remoto. Ahora que he sincronizado los archivos que cada publicación publicará, solo se publicarán los archivos modificados.
Si desea aprender cómo hacer un archivo individual, puede ver mi publicación previa en el blog Cómo desconectar su aplicación web durante la publicación.
dest: auto
En su caso, noté que estaba usando dest:auto
, puede usarlo pero tendrá que pasar el nombre de la aplicación IIS como parámetro y reemplazará la ruta a la carpeta. Debajo está el comando.
msdeploy.exe
-verb:sync
-source:contentPath="C:/temp/files-to-pub"
-dest:auto
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName=''$sayedupdemo''
,Password=''thisIsNotMyRealPassword''
,AuthType=''Basic''
-enableRule:DoNotDeleteRule
-setParam:value=''sayedupdemo'',kind=ProviderPath,scope=contentPath,match=''^C://temp//files-to-pub$''