AzureWebAppsでポート80が使えない

#経緯

仕事でAzureのAppService(旧WebApps)を使い、Nodeで普通のExpressサーバを作っていた。
しかし、試しにデプロイしてみるとサーバが立ち上がらず、デプロイのログに以下のようなエラースタックが出力されていた。

Error: listen EACCES 0.0.0.0:80

#原因

AzureWebAppsの仕組みはIISがフロントに立って80443ポートでリクエストを受け付け、サーバが立っていればそこにプロキシ、静的サイトの場合はファイルを配信する、というもの。
そのためAzureWebAppsで80ポートをlistenしてはいけない(できない)。

#対策

環境変数PORTにサーバ用のポートが用意されている為、そちらを使う。
サンプルとしてAzureWebApps上で動くHelloWorldのExpressサーバのコードを書いておく。

const express = require('express')

const app = express()

app.get('/', (req, res) => {
  res.send('Hello, World!')
})

app.listen(process.env.PORT || 80)

#参考リンク

https://stackoverflow.com/questions/45921289/node-js-azure-web-app-windows-500-1001-error#answer-45928929