Search code examples
azuref#suave

FTP'ing a Suave app to Azure


Having never used Azure before I'm attempting to deploy a simple F# Suave app to Azure using FTP. Ultimately I want to deploy via github but I initially thought FTP'ing it would be the easy first step. According to https://suave.io/azure-app-service.html it should be straight forward.

These are the steps I followed

  1. Created a new web app in Azure including a resource group and app service plan. All on the Free Tier.

  2. Downloaded the publishsettings XML file that Azure created.

  3. Cloned this repo: https://github.com/isaacabraham/fsharp-demonstrator

  4. Used FileZilla to connect via FTP using the creds from step 2.

  5. Uploaded the files (via FTP) from fsharp-demonstrator/src/SuaveHost (which includes the necessary web.config file) from the repo cloned at step 3 to the site\wwwroot on Azure.

  6. Navigated to Azure site url.

Then I receive the error:

The specified CGI application encountered an error and the server terminated the process.

(When I look at the folders on Azure under site\wwwroot I don't see any obj or bin folders. I don't think any msbuild process occurred. That doesn't seem right.)

Anybody got any idea what the problem is?


Solution

  • I suspect the issue is that when you deploy via FTP, then Azure does not automatically run the deploy script specified in the .deployment file.

    • The build.fsx script uses Kudu service to deploy the built files, so it might be easier to just use Github deployment rather than FTP - this way, Azure will do the deployment for you.

    • If you want to deploy via FTP, you'll need to build the project locally and upload the output. I'm not sure how to best do this with Isaac's Kudu-based demo though (ultimately, you need web.config that points to your built executable like this)