プリザンターをAzure AppServiceにサーバレス構成でインストールする
## 概要
Microsoft Azure の AppService と SQL Database を利用しサーバレス構成でプリザンターの動作環境を構築するための手順を示したものです。
| 対象 | 環境・バージョン |
| ------------------ | :--------------------------- |
| Web | Microsoft Azure AppService |
| DB | Microsoft Azure SQL Database |
| ランタイムスタック | .NET8 |
## 前提条件
1. Azure Portal へのログインが可能であること
1. Microsoft Azure App Service(Windows/.NET8)が 1 インスタンス準備できている
1. Microsoft Azure SQL Database が 1 インスタンス準備できている
1. Microsoft Azure SQL Database の接続文字列が準備できている
1. Microsoft Azure SQL Database のファイアウォール設定で App Service 及び PC からの接続が許可されている
## App Service で Kudu にアクセス
1. [Azure Portal](https://portal.azure.com/)に接続します。
2. App Service を開きます。
![image](/binaries/90ff8944d431483da62410cdf5f90100)
3. 作成済みの App Service インスタンスを選択します。
4. Kudo を開きます。[参考](https://docs.microsoft.com/ja-jp/azure/app-service/resources-kudu#access-kudu-for-your-app)
1. App Service の左側のメニューの"開発ツール"から「高度なツール」をクリック
![image](/binaries/9e9a929cb8174c9f81ac9a25479890c4)
2. 「[移動](/manual/table-record-move)」のリンクをクリック
![image](/binaries/8639e642c6ed4b07b1b86538b8394a9f)
3. Kudu のヘッダメニューから「Debug console」>「CMD」をクリック
![image](/binaries/8d9aeb33b8b94c62a787d8adca8360c8)
4. ディレクトリ一覧から「site」をクリックします。選択後、プロンプトが "D:\home\site" になったことを確認します。
![image](/binaries/1082db49c78b49afbe9ce76636e83f8b)
## プリザンターのダウンロードおよび展開
1. [ダウンロードセンター](https://pleasanter.org/dlcenter)から、最新のリリースバージョンのダウンロードを行います。
2. 設定ファイルを編集するため、ダウンロードしたファイルを展開します。
## データベース接続のパラメータ設定(Rds.json)
1. 「pleasanter\Implem.Pleasanter\App_Data\Parameters\Rds.json」を開き、パラメータを下記の通りに設定し、保存します。
|パラメータ名|値|説明|
|:--|:--|:--|
|Dbms|SQLServer|リレーショナル・データベースに Microsoft Azure SQL Database を使用。|
|Provider|Azure|リレーショナル・データベースに Microsoft Azure SQL Database を使用。|
|SaConnectionString|**\*\*\*\***|Microsoft Azure SQL Database の接続文字列。|
|OwnerConnectionString|**\*\*\*\***|Microsoft Azure SQL Database の接続文字列。|
|UserConnectionString|**\*\*\*\***|Microsoft Azure SQL Database の接続文字列。|
|SqlCommandTimeOut|0|SQL コマンドタイムアウト時間を無期限にする。|
|MinimumTime|3|データベースが識別可能な最小時間単位をミリ秒で指定。本パラメータは変更不可。|
|DeadlockRetryCount|4|デッドロック発生時の最大再試行回数。|
|DeadlockRetryInterval|1000|デッドロック発生時に再試行を行うまでの間隔。|
|DisableIndexChangeDetection|true|バージョンアップ時にデータベースのインデックスの差異を検出しない。|
## データベース接続のパラメータ設定(Service.json)
1. 「pleasanter\Implem.Pleasanter\App_Data\Parameters\Service.json」を開き、パラメータを下記の通りに設定し、保存します。
|パラメータ名|値|説明|
|:--|:--|:--|
|Name|(データベース名)|Azure で作成したデータベース名を設定|
|TimeZoneDefault|Tokyo Standard Time|既定のタイムゾーンをWindowsで有効な名前で指定(※1)|
(※1) 下記の Time Zones 一覧の TimeZone 欄に記載されている文字列を設定してください。
https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11
## App Service の停止
1. App Service にてインスタンスを停止します。
## App Service へのアップロード
1. 「pleasanter」フォルダに移動します。
2. 「Implem.Pleasanter」フォルダを「wwwroot」にリネームします。
3. wwwroot フォルダを zip 形式で圧縮し「wwwroot.zip」とします。
4. 「Implem.CodeDefiner」フォルダを「CodeDefiner」にリネームします。
5. CodeDefiner フォルダを zip 形式で圧縮し「CodeDefiner.zip」とします。
6. wwwroot.zip と CodeDefiner.zip を Kudu の Size をターゲットにドラッグアンドドロップし、展開されて格納されたことを確認します。
![image](/binaries/6a380563ed384537bce6539c052e7624)
## CodeDefiner の実行
1. Kudu のディレクトリ一覧から CodeDefiner を選択し、 プロンプトが D:\home\site\CodeDefiner となることを確認します。
2. 次のコマンドを実行します。
```cmd
dotnet Implem.CodeDefiner.dll _rds /p D:\home\site\wwwroot
```
## App Service の起動
1. App Service に戻り、インスタンスを起動します。