オープンソースのWebデータベース プリザンターを AWS EC2+RDS上に構築

# オープンソースで無料でつかえるプリザンターをAWS EC2+RDS上に構築する手順

* 自分でセットアップしてみた際の手順をメモ的に記録しておきます。

## プリザンターとは
プリザンターをご存じない方はこちらをご参照ください。
OSSで公開され、無料で使える Webデータベースです。
[**インプリム社 プリザンター**](https://implem.co.jp/)

## セットアップ手順

### まずはRDSの準備
まずは
[**ここの手順**](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.SQLServer.html)にしたがって、AWS RDS の Microsoft SQL Server DB インスタンスを作成するところまでやっておきます。
私の場合、上記の手順でSSMSで接続するトコロでつまずき、下記の手順でRDSの「パブリックアクセシビリティ」設定を変更して接続しました。

1. RDSのデータベースで該当のデータエース識別子をクリックして詳細を開き、右上の「変更」ボタンをクリックしてDBインスタンスの変更画面を開く
1. 「ネットワーク＆ セキュリティ」のセクション内にある「パブリックアクセシビリティ」を[はい]に設定
1. 「変更のスケジュール」のセクション内にある「すぐに適用」を選択し、「DBインスタンスの変更」をクリック
1. DBが再起動されるので、立ち上がるのを、待つ 
2. セキュリティのインバウンド、アウトバウンドのソースと送信先の範囲は「任意の場所」を設定する。

上記変更後SSMSでアクセスできるようになりました。

### 次にEC2上にOSの準備
RDSのSQL ServerへSSMSでアクセスできるようになったら、次はEC2上にOSを準備します。
今回は「Microsoft Windows Server 2019 Base 」を選択しました。
ちなみにプリザンターの動作推奨スペックは [**こちら**] (https://github.com/Implem/Implem.Pleasanter#%E5%8B%95%E4%BD%9C%E6%9D%A1%E4%BB%B6)に掲載されていますが、今回はテストということで、無料枠だけ使って構築しています。（なので動作は遅いです…実際に運用するには、より高速な環境を使うことをお勧めします）
Windows Server の準備ができたら、インスタンスを起動しRDP接続（リモートデスクトップ接続）を行います。
詳しくは [**こちら**](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html) に記述があります。

### プリザンターに必要なソフトウェアのインストールおよび設定
EC2上のWindows Serverにリモートデスクトップ接続ができたら、下記マニュアルに記述の内容を行ってください。

* [Windowsの機能の有効化（Windows Server 2019）](https://pleasanter.net/fs/publishes/485240/edit) 
* [Web Deploy v3.6のインストール](https://pleasanter.net/fs/publishes/418116/edit) 

**補足1**
あわせてEC2上からRDSのSQL Serverに疎通できるかSSMSで確認しておくと良いです。 

**補足2**
「Windowsの機能の有効化」において、ASP.NET4.7をインストールするのですが、私はこれを見逃して、後の手順でプリザンターが起動せず [HTTP Error 500.19 - internal Server Error (Error code 0x80070021 ) ] に遭遇し、解決まで苦労しました。ASP.NET4.7のインストールをお忘れなきよう...

### プリザンターのセットアップ
次にプリザンターをセットアップしていきます。
下記マニュアルに記述の内容を行います。

* [プリザンターのモジュールを手動で配置する（高度な設定）](https://pleasanter.net/fs/publishes/420171/edit) 
* [プリザンターのデータベースを手動で構成する（高度な設定] (https://pleasanter.net/fs/publishes/420172/edit) 

**補足**
「プリザンターのデータベースを手動で構成する」の中で「Rds.json」のパラメータを変更するところがあります。
これはマニュアル内にもありますが、下記のように変更してください。

```json
    "SaConnectionString": "Server=tcp:RDSのエンドポイント,RDSのポート;Database=master;UID=RDS DBの管理者ID（デフォルトならadmin);PWD=RDS DBの管理者パスワード;Connection Timeout=30;",
    "OwnerConnectionString": "Server=tcp:RDSのエンドポイント,RDSのポート;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=何でもよい;Connection Timeout=30;",
    "UserConnectionString": "Server=tcp:RDSのエンドポイント,RDSのポート;Database=#ServiceName#;UID=#ServiceName#_User;PWD=何でもよい;Connection Timeout=30;",
```
**RDSのエンドポイント,RDSのポート, RDS DBの管理者ID（デフォルトならadmin), RDS DBの管理者パスワード のところを、お使いのRDSに合わせて変更してください**

### プリザンターの起動
  
1. サーバーマネージャーを起動し、ツール から IIS マネージャーを起動します。
1. 左ペインにて、「コンピューターの管理(ローカル)」-「サービスとアプリケーション」-「インターネットインフォメーションサービス」を選択し、中央ペインにて「サイト」-「Default Web Site」-「pleasanter」をクリックします。
1. 右ペインの「*.80(http)参照」をクリックし、プリザンターを起動します。

**補足**
プリザンターのマニュアルにも記載がないのですが、上記手順で起動せず、
「'C:\inetpub\wwwroot\pleasanter\App_Data\Temp\1E7079A6EA624BA9AC2C18D222ED93C6.xlsm' is denied.」 と表示されることがありました。
プリザンターを実行する上で IIS_USERS の権限が足りずエラーになっていたようですので、これを以下の手順で変更しました。  

1. サーバーマネージャーを起動し、ツール から IIS マネージャーを起動します。
1. 左ペインにて、[サイト]-[Default Web Site]-[pleasanter]-[App_Data]-[Temp]を選択します。
    1. 右ペインの アクション 内の 「アクセス許可の編集」をクリックしてプリザンターのtempプロパティのダイアログを表示します。
2. プロパティのダイアログのセキュリティタブをクリックして、IIS_USERSの権限に Modify(変更) + Write(書き込み)を与えて適用します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546566/76650c93-68b1-9711-7863-824f836ba182.png)

起動しました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546566/db02f4be-6fcf-4426-18ea-e2b95e2fb629.png)


あとはユーザーアカウントとパスワードを入れてログインします。
マニュアルにも記載がありますが、
プリザンターのログイン画面にて「ログインID: Administrator」「パスワード: pleasanter」を入力し、「ログイン」ボタンをクリックしてください。 

以上！