Publiceren met Web Deploy bij Vevida

Je kunt een webapplicatie publiceren via de command-line. Wij bieden je deze mogelijkheid via onze Web Deploy-service. In dit artikel laten we je zien hoe je dit doet.

Inhoudsopgave

Vooraf

Dit voorbeeld gaat ervan uit dat je Umbraco 8 hebt gedownload en de VS Code installation hebt gevolgd. Je hebt dan je Umbraco-website lokaal klaarstaan in bijvoorbeeld de map C:\Users\Jan\dev\site. Je krijgt deze gepubliceerd met msdeploy.exe (onderdeel van Web Deploy).

Let op: Umbraco met een SQL Server Compact database wordt niet ondersteund. Gebruik bij voorkeur Microsoft SQL Server. Zorg ervoor dat je tenminste Web Deploy 3.6 hebt geïnstalleerd of Visual Studio 2019. Web Deploy wordt geïnstalleerd met Visual Studio.

ASP met webdeploy en Powershell

Je kunt je ASP.NET of ASP.NET Core webapplicatie publiceren met msdeploy.exe. We gebruiken Windows Powershell in ons voorbeeld: Using WebDeploy in a CI/CD pipeline with PowerShell.

Nadat onze klantenservice een FTP-gebruiker van jouw site heeft geautoriseerd voor Web Deploy toegang kun je de volgende drie variabelen maken (example.nl als voorbeeld):

$gebruiker = "VEVIDA\example.nl"$website = "example.nl"$wachtwoord = "my-super-secret passphrase"

Let op: zolang je dit niet in een script opslaat ben je de variabelen kwijt als je je PowerShell-sessie hebt afgesloten.

Hierna kun je de msdeploy.exe parameters opvragen met "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" /? en je volledige commando samenstellen.

Het volledige commando kan bijvoorbeeld zijn:

&"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:iisApp="C:\Users\Jan\dev\site" -allowUntrusted -dest:iisApp="${website}", ComputerName="https://www.${website}:8172/msdeploy.axd?site=${website}", UserName="${gebruiker}", Password="${wachtwoord}", AuthType='Basic' -Verbose

Tip: gebruik -enableRule:AppOffline om een applicatie eerst offline te brengen zodat bestanden niet meer in gebruik zijn. Let op: het commando hierboven moet op één (1) regel achterelkaar staan.

Uitleg over de commando-opties (met een * erachter is verplicht):

  • -verb:sync synchroniseer destination met source
  • -source:iisApp de source (bronlocatie) op de computer, waarbij de te gebruiken provider iisApp is. Eventueel kun je hier contentPath gebruiken (*)
  • -allowUntrusted accepteer niet vertrouwde SSL-servercertificaten (*)
  • -dest:iisApp de destination (doellocatie op de webserver), waarbij de te gebruiken provider iisApp is. Eventueel kun je hier contentPath gebruiken. Ook ComputerName, UserName, Password en AuthType moeten gespecificeerd zijn (*)
  • -Verbose geef extra informatie weer (uitgebreide registratie)

Publiceren naar een subfolder

Als je je webapplicatie wilt publiceren naar een subfolder kun je die simpelweg opgeven als destination: -dest:iisap="${website}"/mijn-map,. Publiceer je een ASP.NET of ASP.NET Core webapplicatie? Vergeet dan niet de map aan te merken als applicatie in MyVevida.

Webapplicatie downloaden met MS Deploy

Je kunt ook je webapplicatie downloaden met msdeploy.exe, bijvoorbeeld als back-up. Wissel gewoon -source en -dest locaties om:

&"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:iisApp="${website}/cms", ComputerName="https://www.${website}:8172/msdeploy.axd?site=${website}", UserName="${gebruiker}", Password="${wachtwoord}", AuthType='Basic' -Verbose -allowUntrusted -dest:iisapp="C:\Users\Jan\dev\back-up\UmbracoCms.8.4.0"

Zo maak je eenvoudig een website back-up met Web Deploy.

Tips voor het gebruik van Web Deploy

Gebruik includeAcls="False" om geen bestand- en directorypermissies proberen te wijzigen. Rechten moeten worden gezet via MyVevida. Je kunt includeAcls="False" meegeven in het destination object:

-dest:iisApp="${website}",ComputerName="https://www.${website}:8172/msdeploy.axd?site=${website}",UserName="${gebruiker}",Password="${wachtwoord}",includeAcls="False",AuthType='Basic'

Je kunt de map /stats uitsluiten van verwijderen met de parameter:

-skip:skipaction='Delete',objectname='dirPath',absolutepath='\\stats'

Let op: in het commando moet je de forward slash (/) omdraaien (\ - backslash) en 'escapen': gebruik daarom twee backlashes (\\).

Dit vertelt msdeploy.exe dat de actie "delete" voor de map \\stats overgeslagen moet worden. Standaard wordt de externe locatie op de webserver gesynchroniseerd met de situatie zoals die lokaal op jouw computer is. Heb jij geen map genaamd "stats" in de te publiceren applicatie, dan wordt die van de server verwijderd.

Dit is ook de reden waarom je soms het web.config-bestand dat op de webserver staat moet uitsluiten van verwijderen. Sluit deze uit met de volgende opdracht:

-skip:skipaction='Delete',objectname='filePath',absolutepath='\\web\.config'

Let op: Ook een punt (.) moet geëscapet moet worden met nog een backslash (\).

Een bestand uitsluiten van uploaden kan met de opdracht:

-skip:objectName=filePath,absolutePath='\\foobar\.txt'

Waarbij foobar.txt het bestand is dat niet geüpload moet worden. Voor directories gebruik je:

-skip:objectName=dirPath,absolutePath='\\\.vscode$'

Zo zie je dat je met 'skipaction' een opdracht geeft (Delete) en met 'objectName' uiteindelijk een bestands- of directorynaam (foobar.txt of .vscode).

Foutmeldingen

Als je tijdens het publiceren een foutmelding ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER krijgt, dan betekent dat vaak dat een bestand nog in gebruik is. Als je even eerst de webapplicatie herstart in MyVevida, dan zal het publiceren daarna wel lukken.

De volledige foutmelding is bijvoorbeeld:

Info: Deleting file (example.nl\Askmethat.Aspnet.JsonLocalizer.dll). Error Code: ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER More Information: Unable to perform the operation ("Delete File") for the specified directory ("Askmethat.Aspnet.JsonLocalizer.dll"). This can occur if the server administrator has not authorized this operation for the user credentials you are using. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER. Error count: 1.

Hetzelfde geldt voor de ERROR_FILE_IN_USE foutmelding:

Error Code: ERROR_FILE_IN_USE More Information: Web Deploy cannot modify the file 'NuCache.Content.db' on the destination because it is locked by an external process. In order to allow the publish operation to succeed, you may need to either restart your application to release the lock, or use the AppOffline rule handler for .Net applications on your next publish attempt. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE.

Microsoft heeft uitgebreide documentatie over Web Deploy foutcodes, maak er gebruik van.

Versies

Het is mogelijk dat je meerdere versies van msdeploy.exe op je computer hebt staan. Gebruik bijvoorbeeld Get-ItemProperty in PowerShell om de versie te identificeren:

(Get-ItemProperty "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe").VersionInfo.FileVersion(Get-ItemProperty "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe").VersionInfo.FileVersion

Gebruik C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe /? om de opdracht argumenten van MSDeploy op te vragen.

Ondersteuning

Onze klantenservice geeft geen ondersteuning op het gebruik van msdeploy.exe via de command-line. Maar wil je graag tips aan ons doorgeven? Aarzel dan niet om contact op te nemen.

Q
Quinten is the author of this solution article.

Was dit antwoord nuttig? Ja Nee

Feedback versturen
Het spijt ons dat we u niet hebben kunnen helpen. Als u feedback geeft, kunnen we het artikel verbeteren.