https://www.isoroot.jp/blog/3904/
https://learn.microsoft.com/ja-jp/azure/app-service/deploy-staging-slots
実行している App Service プランのサービス レベルが Standard、Premium、または Isolated である場合は、
Web アプリ、Linux 上の Web アプリ、モバイル バック エンド、または API アプリを Azure App Service にデプロイするときに、
既定の運用スロットではなく別個のデプロイ スロットを使用できます。
※プランのOSを指定しない場合、windowsとなり、デプロイURLに下記のようなメッセージがでる。
You do not have permission to view this directory or page.
-- 1. 前作業
az login --use-device-code
az account show
az version
az configure --list-defaults
az configure --defaults location=japaneast
az configure --list-defaults
az group create \
--name rg9999999 \
--location japaneast
az group list
az upgrade
-- 2. App Service プラン作成
az appservice plan create \
--name plan01 \
--resource-group rg9999999 \
--sku S1 \
--is-linux
az appservice plan list \
--resource-group rg9999999
-- 3. App Service アプリ作成
az webapp list-runtimes \
--os linux
az webapp create \
--name app123 \
--plan plan01 \
--resource-group rg9999999 \
--runtime "NODE:14-lts"
az webapp list \
--resource-group rg9999999
-- 4. Node.js 開発環境のセットアップ
-- 4.1 NVM のインストール
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
-- 4.2 Node.js と npm(Node Package Manager)のインストール
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
nvm install 14.0.0
nvm use 14.0
nvm alias default 14.0.0
node -v
-- 5. Node.jsのアプリケーションを用意する
cd
rm -rf 123
mkdir 123
cd 123
npx express-generator app123 --view pug
cd app123
npm install
npm start
vim routes/index.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('index', { title: 'Ver1.0' });
});
module.exports = router;
npm start
curl http://localhost:3000/
-- 6. App Serviceにデプロイする
cd ~/123/app123
zip -r app123.zip .
az webapp deployment source config-zip \
--resource-group rg9999999 \
--name app123 \
--src app123.zip
1分程度待つ
https://app123.azurewebsites.net
-- 7. デプロイスロットを作成する
az webapp deployment slot create \
--resource-group rg9999999 \
--name app123 \
--slot slot01
az webapp deployment slot list \
--resource-group rg9999999 \
--name app123
-- 8. アプリをバージョンアップする
cd ~/123/app123
vim routes/index.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('index', { title: 'Ver2.0' });
});
module.exports = router;
-- 9. デプロイスロットに新しいバージョンのアプリをデプロイする
cd ~/123/app123
zip -r app123.zip .
az webapp deployment source config-zip \
--resource-group rg9999999 \
--name app123 \
--slot slot01 \
--src app123.zip
https://app123-slot01.azurewebsites.net
-- 10. デプロイスロットをスワップする
az webapp deployment slot swap \
--resource-group rg9999999 \
--name app123 \
--action swap \
--slot slot01
https://app123.azurewebsites.net
-- 11. クリーンアップ
az webapp delete \
--resource-group rg9999999 \
--name app123
az webapp delete \
--resource-group rg9999999 \
--name app123 \
--slot slot01
az webapp deleted list \
--resource-group rg9999999 \
--name app123
az appservice plan delete \
--name plan01 \
--resource-group rg9999999 \
--yes
az group list
az group delete \
--name rg9999999 \
--yes