FileMakerServer17へのアップグレードインストールと初期設定

# 前提
* FileMakerServer17 ( 以下、FMS17 ) へのアップグレードインストールについて、結構、FMS16 までとの変更点が大きくて詰まった部分がありましたので、記録しておきます。
* OS は WindowsServer2016 を想定していますので、 Mac 環境の場合は、適宜読み替えてください。
* 今回、アップグレードした環境は FMS16 → FMS17 ですが、以前の ver. からでも、流れは同じになるかなと思います。
* VLA ならびに AVLA のライセンスを想定しています。単独パッケージの場合、最初のインストールの流れが少し違うのかなーと思いますが、適当に読み替えてください。

## 公式ヘルプページ
* [FileMakerServer17 公式ヘルプページ](https://fmhelp.filemaker.com/help/17/fms/ja/index.html#page/FMS_Help%2Findex.html%23)
    * [FileMaker Server 17 の新機能](https://fmhelp.filemaker.com/help/17/fms/ja/index.html#page/FMS_Help%2Fabout-whats-new.html%23)
    * [コマンドラインインターフェースの使用](https://fmhelp.filemaker.com/help/17/fms/ja/index.html#page/FMS_Help/command-line.html#ww1056417)


# インストール
## ファイルメーカー社からのメール
* VLA や AVLA その他これに準じるライセンス契約をしている場合は、メールが届いているはずです。そのメールに、「インストーラ」ならびに「ライセンス証明書ファイル」のダウンロードリンクがついているので、それらダウンロードしてください。
* FMS16 以前を利用していた場合、「ライセンス証明書」？？　となると思います。私も、なりました。最初、今まで通りにライセンスキーだけあればいいだろこれ不要だろと思っていたのですが、後で詰みました。
    * ダウンロードした「ライセンス証明書」ファイルは、デフォルト名 ( LicenseCert.fmcert ) のまま、 OS デフォルトの「ダウンロードフォルダ」に置いておいてください。この場所・この名前で判定されるようです（すごい雑な仕事感あるけどいいのかそれで……）

## FMS16 のアンインストール
* そろそろ Filemaker も、以前の ver. をアンインストールせずにアップグレードしてくれるようにならないかな？　と期待していたのですが、今回もまたダメでした。方法はない。観念して一度アンインストールしましょう。
* アンインストールの際、特に共有ファイルのバックアップなど取っておく必要はないはずです。実際、デフォルトのフォルダを指定している状態でアンインストールしましたが、ファイルは消されませんでした。
* バックアップ等の設定は必要であればスクリーンショットを取っておくなどしてください（というのが、公式に書いてある移行方法。いいのかそれで…… AdminConsole 上で設定エクスポート＆インポートできるようにしたらいいのに）
    * 別のやり方として、インストール先の FileMakerServer ディレクトリ以下にある設定ファイルを保存しておくというのがあるはず。今回、 FMS16 → FMS17 にアップグレードするにあたっては、大きく仕様変更があるのを知っていたので、試していませんが。
* これも公式手順に記載されていたことなのですが、アンインストールした後、キャッシュやセッション等が残っている可能性があるということで、クリーナーソフトなどを使って諸々お掃除した上で、 OS 再起動してください。
    * ちなみに私は、 [Wise Care 365 Free](https://jp.wisecleaner.com/) 使ってます。

## FMS17 のインストール
* FMS16 が綺麗さっぱりなくなったら、ダウンロードしてきたインストーラを実行してください。
* 案内に従って進めていくと、途中で、いつもならライセンスキーの入力を求められた箇所で、それが求められず、ライセンス証明書ファイルの有無を確認されます。証明書が認識されれば、ライセンスキーの入力をせずにそのまま進めることができます。
    * ここで、上記の通り、デフォルト名 ( LicenseCert.fmcert ) のまま、 OS デフォルトの「ダウンロードフォルダ」に置かれていないと、認識されません。

# 初期設定
## AdminConsole
### いきなり証明書の設定と OS 再起動
* 「えっ！？」と思わなくもないくらい唐突にですが、最初の画面で、いきなり、証明書のインポートを求められます。 FMS16 で証明書を発行して使っている場合は、ここでインポートしてください。
* で、インポートが完了すると、いきなり OS の再起動を求められます。「もうかよ！　早いよ！　それならインストール完了時に言ってよ！」とツッコミを入れつつ、再起動してください。

## メニューから必要な箇所を設定
* 最初は「ダッシュボード」が開かれるはずなので、「構成」を開いてください。基本的な設定は諸々ここでできます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/37739/fd1a0192-58d4-db49-6e28-116a831d07df.png)

* Web公開まわりを使う場合の注意点を述べます。「一般設定」の「起動設定」において、「Web 公開エンジンを自動的に起動する」はデフォルト「有効」になっているはずですが、実際は起動してくれていません。「コネクタ」を押して、「Web公開」のところで「FileMaker WebDirect」「Web公開エンジン」を有効にしてください。
    * ところで、何度か再起動するうちに、「Web公開エンジン」が「使用できません」になってしまいました。キャプチャはその状態のものです。これだと、「WebDirect」が「有効」になっていて、 /fmi/webd を開いてファイルの一覧が表示されはするものの、実際ファイルを開こうとすると、エラーで開けません。何なんだろうこの不安定感は……

![image.png](https://qiita-image-store.s3.amazonaws.com/0/37739/f80a617e-d076-8ba1-724c-a81819eee84c.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/37739/d836a480-88b5-8df4-f0ed-8a95a6425ab8.png)

* それ以外については、だいたい見てまわっていると分かるはずです。諸々見ながら設定を進めてください。……で話は済めばよいのですが、従来のものを見慣れた人であればあるほど、「あれ？　あの設定項目が消えてるんだけど……？」となるはずです。それについて、以下、「悪い点」で挙げて、詳述していきます。

* さて、大きくガラリと変わった AdminConsole の、良い点／悪い点をまとめます。

### 良い点
* デザインが洗練された。見慣れればきっと見やすさを感じるはず。きっと。
    * ちなみに、 FileMakerCloud もこの UI ですね。あちらが先にこの UI にしたので、それを真似たかたちですが、果たして好評だったんでしょうかね……
* 「サーバの展開」がなくなった。マスタ／ワーカとして複数台構成する際に、シンプルで分かりやすくなった。はず。きっと。安定していれば。これが良い点として挙げてよいのかどうか、まだ怪しさは残りますが……
* 何となく動作速度が軽快に感じられる。
* きっと前より安定してくれているはず。
    * 「悪い点」の方がインパクト大きいので、パフォーマンス面でせめて……という気持ちが先立っているバイアスかもしれない……

### 悪い点
* AdminConsole内で閲覧できていたログが隠蔽されてしまった。ログファイルをダウンロードし、 zip 圧縮されたファイルを開かないと閲覧できません。ひどい。
* UI 変わりすぎで学習コストが再度かかる。
* 各クライアントがどのファイルを開いているのかという一覧が見えづらい。ファイル数が多いと下の方が切れる。まさかの、ホバーでポップアップとは……
* 無駄に AdminConsole から表示されなくなり隠蔽された項目がある。このせいで、設定は、 AdminConsole だけで完結するものでなくなり、コマンドラインでの設定が必須となりました。以下参照。

#### FMS17 で AdminConsole から隠蔽された項目
* 公式から引用しますが、以下の項目です。いずれも、隠蔽する必要ないだろ……？　と思えるもの揃い。
    * パスワードで保護されたデータベースのみをホストする
    * FileMaker Pro クライアント接続の最大数
    * ホストする最大のファイル数
    * スクリプト同時セッション最大数
    * データベースキャッシュに予約されている RAM
    * 使用状況の収集間隔
    * プログレッシブバックアップの保存間隔
    * ログファイルのサイズの制限


* 隠蔽されている項目として、まず、勘違いが大きかったのが、「ホストする最大のファイル数」＝共有できるファイル数の上限についての、表示ですね。ダッシュボードを開いたとき分母分子の表示を勘違いしてしまいました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/37739/41751c56-6b2b-2881-7422-979bff712926.png)

* どう見ても勘違いするでしょう上記は。最初、上記画像例でいうところの 49/49 という分数において、分母が最大ファイル数なのかと思ってしまいました。
    * 分母は、現在、フォルダに入っているファイル数全体の数です。「開かれていない」状態にあるものを含む。
    * 分子は、そのうち、「開かれている」状態にあるものです。分かりづらい。
    * なお、デフォルトの「ホストする最大のファイル数」は、変わらず 125 でした。上限緩和もありません。

* 「パスワードで保護されたデータベースのみをホストする」が、デフォルトで TRUE になってるので、古い ver. からアップグレードする場合、大抵は、これを解除しないと開けなくなるファイルが出てくるはずです。理想は全部保護されていればよいのでしょうけれど、理想は理想。

## コマンドライン
* 続いて、コマンドラインでおこなうべき初期設定です。上記の通り、「パスワードで保護されたデータベースのみをホストする」を FALSE にしたいですよね。
* 公式ヘルプの [コマンドラインインターフェースの使用](https://fmhelp.filemaker.com/help/17/fms/ja/index.html#page/FMS_Help/command-line.html#ww1056417) を見ても、コマンドを書いてくれているわけではなく、ヘルプコマンド打って見ろや、っていうだけの不親切なものでしかないので（何なんでしょうね、初心者向けのデータベースを謳っている割には、その方面でのやる気があまりないような……）以下、書き出しておきます。

### fmsadmin で使えるコマンドの一覧

```
fmsadmin HELP COMMANDS

fmsadmin commands are:

    AUTORESTART     Get or set auto-restart for the Admin Server or FMSE
    BACKUP          Back up databases
    CERTIFICATE     Manage SSL certificates
    CLEARKEY        Removes saved database encryption passwords
    CLOSE           Close databases
    DISABLE         Disable schedules or detailed statistics logging
    DISCONNECT      Disconnect a client
    ENABLE          Enable schedules or detailed statistics logging
    GET             Retrieve server or CWP configuration settings
    HELP            Get help pages
    LIST            List clients, databases, plug-ins, or schedules
    OPEN            Open databases
    PAUSE           Temporarily stop database access
    REMOVE          Move databases out of hosted folder or remove empty folder
    RESETPW         Reset admin user password
    RESTART         Restart a server process
    RESUME          Make paused databases available
    RUN             Run a schedule
    SEND            Send a message
    SET             Change server or CWP configuration settings
    START           Start a server process
    STATUS          Get status of clients or databases
    STOP            Stop a server process
    VERIFY          Check the consistency of databases
    WPE             Add, remove, and list FileMaker WebDirect worker machines
```

* これを見ると、 SET で設定をおこなえるというわけですね。では、その SET に何の引数を渡したら良いのでしょうか。続けて以下。

### fmsadmin SET でおこなえる設定

```
fmsadmin help set
Usage: fmsadmin SET [CONFIG_TYPE] [NAME1=VALUE1 NAME2=VALUE2 ...]

Description:
    Change the server or Custom Web Publishing configuration settings.

    Valid configuration types of CONFIG_TYPE:
      SERVERCONFIG     Change the server configuration settings.
      CWPCONFIG        Change the Custom Web Publishing configuration
                       settings.

    Valid configuration names of SERVERCONFIG:
      BACKUPINTERVAL   How frequently FileMaker Server runs progressive backup,
                       in minutes.
      CACHESIZE        Cache memory allocated by the server, in megabytes.
      LOGSIZE          Maximum size of each log file, in megabytes.
      HOSTEDFILES      Maximum number of databases that can be hosted.
      PROCONNECTIONS   Maximum number of FileMaker Pro Advanced client
                       connections.
      SCRIPTSESSIONS   Maximum number of script sessions that can run on the
                       server simultaneously.
      SECUREFILESONLY  Whether only databases with password-protected accounts
                       assigned the Full Access privilege set can be opened for
                       hosting.
      STATSINTERVAL    How frequently FileMaker Server collects statistical
                       information, in seconds. To reduce the overhead required
                       to calculate statistics, increase the interval.

    Valid configuration names of CWPCONFIG:
      ENABLEPHP        Whether Custom Web Publishing with PHP is enabled.
      ENABLEXML        Whether Custom Web Publishing with XML is enabled.
      ENCODING         The default character encoding for PHP files.
      LOCALE           Language locale for error messages returned by the
                       FileMaker API for PHP.
      PREVALIDATION    Whether FileMaker API for PHP should validate record data
                       before committing changes to the Database Server.
      USEFMPHP         Whether to use the FileMaker version of the PHP engine
                       rather than your own version of PHP.

    Examples:
      fmsadmin SET SERVERCONFIG CACHESIZE=1024 SECUREFILESONLY=true
      fmsadmin SET CWPCONFIG ENABLEPHP=true ENCODING=ISO-8859-1 LOCALE=de
```

* 今回、「パスワードで保護されたデータベースのみをホストする」を FALSE にしたいので、以下コマンドを打てば良いということがわかりました。大文字じゃなくて小文字でもいいはず。

```
fmsadmin SET SERVERCONFIG SECUREFILESONLY=false
```

* もし、「ホストする最大のファイル数」を変えたい場合は、以下のように打ってください。
    * なお、 125 を超える数字を打ってみたのですが、エラーになりました。

```
fmsadmin SET SERVERCONFIG HOSTEDFILES=100
```

```
fmsadmin SET SERVERCONFIG HOSTEDFILES=200  # error になります
```


# 余話
* 何となくまだあまり旨味を感じられていないのですが、 FMS17 にしてこんなことが最高に COOL だったぜ！　っていう感想がありましたら、事例紹介いただけると本当に嬉しいです。