2
votes

We are attempting to deploy a .Net Core 3.1 Web App Service to Azure and we keep on hitting an error that we are unsure how to resolve. We are deploying it to an App Service Plan (B1) for testing and it seems for .Net Core 3.1, we can only Publish "Code" to Linux. We've deployed this through Visual Studio with no problems at all, but when deploying through Azure Devops, it deploys successfully, but fails to run it seems. There are a couple of errors:

  1. Failed loading /usr/local/lib/php/extensions/no-debug-non-zts-20151012/opcache: /usr/local/lib/php/extensions/no-debug-non-zts-20151012/opcache: cannot open shared object file: No such file or directory

  2. Cannot serve directory /home/site/wwwroot/: No matching DirectoryIndex (index.php,index.html,default.htm,default.html,index.htm,index.html,index.php,hostingstart.html) found, and server-generated directory index forbidden by Options directive

    Here is our error log:

2020-02-11T17:08:00.415853887Z   _____                               
2020-02-11T17:08:00.415890488Z   /  _  \ __________ _________   ____  
2020-02-11T17:08:00.415897789Z  /  /_\  \___   /  |  \_  __ \_/ __ \ 
2020-02-11T17:08:00.415902989Z /    |    \/    /|  |  /|  | \/\  ___/ 
2020-02-11T17:08:00.415907889Z \____|__  /_____ \____/ |__|    \___  >
2020-02-11T17:08:00.415913089Z         \/      \/                  \/ 
2020-02-11T17:08:00.415917789Z A P P   S E R V I C E   O N   L I N U X
2020-02-11T17:08:00.415922690Z 
2020-02-11T17:08:00.415927190Z Documentation: http://aka.ms/webapp-linux
2020-02-11T17:08:00.415931590Z PHP quickstart: https://aka.ms/php-qs
2020-02-11T17:08:00.415936090Z PHP version : 7.0.33
2020-02-11T17:08:00.415940490Z Note: Any data outside '/home' is not persisted
2020-02-11T17:08:00.809232004Z Running oryx -appPath /home/site/wwwroot -output /opt/startup/startup.sh     -bindPort 8080 -startupCommand 'dotnet TestProject.dll; apache2-foreground;'
2020-02-11T17:08:01.052506605Z Oryx Version: 0.2.20191105.2, Commit: 67e159d71419415435cb5d10c05a0f0758ee8809, ReleaseTagName: 20191105.2
2020-02-11T17:08:01.054897394Z Cound not find build manifest file at '/home/site/wwwroot/oryx-manifest.toml'
2020-02-11T17:08:01.055406213Z Could not find operation ID in manifest. Generating an operation id...
2020-02-11T17:08:01.056002335Z Build Operation ID: dfa49d40-fc36-4418-be4c-4886a385fe91
2020-02-11T17:08:02.861636886Z Writing output script to '/opt/startup/startup.sh'
2020-02-11T17:08:03.264793168Z /opt/startup/startup.sh: 7: /opt/startup/startup.sh: dotnet: not found
2020-02-11T17:08:04.221360854Z AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.16.1.5. Set the 'ServerName' directive globally to suppress this message
2020-02-11T17:08:04.387602773Z AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.16.1.5. Set the 'ServerName' directive globally to suppress this message
2020-02-11T17:08:04.409543294Z Failed loading /usr/local/lib/php/extensions/no-debug-non-zts-20151012/opcache:  /usr/local/lib/php/extensions/no-debug-non-zts-20151012/opcache: cannot open shared object file: No such file or directory
2020-02-11T17:08:04.634700217Z [Tue Feb 11 17:08:04.634541 2020] [mpm_prefork:notice] [pid 28] AH00163: Apache/2.4.25 (Debian) PHP/7.0.33 configured -- resuming normal operations
2020-02-11T17:08:04.635348542Z [Tue Feb 11 17:08:04.634862 2020] [core:notice] [pid 28] AH00094: Command line: 'apache2 -D FOREGROUND'
2020-02-11T17:08:04.646641464Z 172.16.1.1 - - [11/Feb/2020:17:08:04 +0000] "GET /robots933456.txt HTTP/1.1" 404 341 "-" "-"

2020-02-11T17:08:18.196650781Z [Tue Feb 11 17:08:18.171200 2020] [autoindex:error] [pid 41] [client 172.16.1.1:51779] AH01276: Cannot serve directory /home/site/wwwroot/: No matching DirectoryIndex (index.php,index.html,default.htm,default.html,index.htm,index.html,index.php,hostingstart.html) found, and server-generated directory index forbidden by Options directive
2020-02-11T17:08:18.197972531Z 172.16.1.1 - - [11/Feb/2020:17:08:18 +0000] "GET / HTTP/1.1" 403 363 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"

We've tried many different configurations for the releases, but nothing seems to get past this step. Here is our CI YAML:

CI YAML

Here is our Release Pipeline Configurations:

Release Pipeline

Any details or pushes in the right direction would be much appreciated. We aren't finding too much documentation on this or how to resolve this particular error.

1

1 Answers

3
votes

Although I did select the App Service Plan to be a .Net Core 3.1 application, it seems the App Service itself is not set as such. In order to fix this, you need to go to the Configuration tab of your App Service, go to "General Settings" and make sure you set these settings:

.Net Core Stack

Note the Major and Minor version do not appear until you select the .Net Core Stack. I wish this was something that was more apparent and automatically set if you set that as your runtime stack when creating your app service plan. I hope this helps anybody else that is also running into this problem.

UPDATE

As we pushed a new version, we realized AzureDevops was overwriting this Stack Setting. If a user is working on creating the release pipelines, but they don't have proper access to Azure, the "runtime stack" in the Azure App Service Deploy task in the release will not populate. Someone that has elevated privileges will see all of the different options available. At this current moment, the option to select is "Latest (DOTNETCORE|Latest)". Currently "3.1 (DOTNETCORE|3.1)" is not an available option.