FileMakerを使用したWebアプリケーションに限らず、どのようなデータベース・Webアプリケーションでも、運用後の定期的なメンテナンスが必要だ。FileMaker Serverスケジュールのメンテナンス、FileMakerファイルの入れ替え、公開/停止などなど。前回はコマンドライン(ターミナル)からFileMaker Serverを管理するツール、fmsadminの使い方を簡単に紹介した。今回はssh(1)のポートフォワーディングを利用したFileMakerのメンテナンス方法を紹介しよう。

ssh(1)ポートフォワーディングを使って、リモートのFileMakerファイルを開く

ssh(セキュアシェル: Secure SHell)とは、ネットワークをつうじて別のコンピュータにログインしたり、リモートマシンへのファイル転送やコマンドを実行するためのプログラム。この通信経路は暗号化されており、これらの操作を安全におこなうことが可能だ。FileMaker Pro/FileMaker Serverが動作するOS、Mac OS Xはデフォルトでssh(1)が利用できる環境。

このほかssh(1)には、ローカルホストへの接続をリモートホストに転送、またその逆をおこなう「ポートフォワーディング」機能が用意されている。安全な経路で通信をおこないたい場合や、経路上のファイアウォールでポートが閉じている場合などにそれを回避する目的で使われる。このポートフォワーディング機能を利用すれば、遠隔地にあるFileMaker Serverで公開されているFileMakerファイルを、ローカルのFileMaker Proで開くといった操作も可能になる。

ポートフォワーディングにはおおまかに分類すると「ローカルホストからリモートホストへのフォワーディング」「リモートホストからローカルホストへのフォワーディング」の2種類があるが、ここでは「ローカルホストからリモートホストへのフォワーディング」を取りあげる。

ポートフォワーディング

ローカルホストからリモートホストへのポートフォワーディングをおこなうには、ターミナル上でssh -Lを実行すればOKだ。man sshで表示されるマニュアルの一部を抜粋する。

-L [bind_address:]port:host:hostport
        Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.  This works by allocating a
        socket to listen to port on the local side, optionally bound to the specified bind_address.  Whenever a connection is made to this port, the connection is
        forwarded over the secure channel, and a connection is made to host port hostport from the remote machine.  Port forwardings can also be specified in the
        configuration file.  IPv6 addresses can be specified with an alternative syntax: [bind_address/]port/host/hostport or by enclosing the address in square
        brackets.  Only the superuser can forward privileged ports.  By default, the local port is bound in accordance with the GatewayPorts setting.  However, an
        explicit bind_address may be used to bind the connection to a specific address.  The bind_address of ``localhost'' indicates that the listening port be
        bound for local use only, while an empty address or `*' indicates that the port should be available from all interfaces.

たとえばリモート環境のIPアドレスがwww.xxx.yyy.zzzの場合、ターミナル上で実行するコマンド例は次のようになる。

% ssh -L 5003:127.0.0.1:5003 (ユーザ名)@www.xxx.yyy.zzz

ssh(1)でのログインに成功すれば、ローカルマシンの5003ポートがリモートマシンの5003ポートにフォワーディングされるようになる。5003ポートはFileMaker Serverで公開されているFileMakerファイルを開く際に使用されるポート)。ローカルのFileMaker ProでリモートのFileMaker Serverへ接続する場合は「共有ファイルを開く」で、ホストに"127.0.0.1"を指定すれば良い。ファイアウォールなどで5003ポートが閉じられていても、ssh接続さえできればポートフォワーディングでリモートFileMaker Serverへの接続が可能になるのだ。

ssh(1)ポートフォワーディングでリモートFileMaker Serverのファイルを開く

管理対象のマシンが複数ある場合、sshのconfigにあらかじめ「ホスト名」「ホストIPアドレス」「ユーザ名」「フォワーディング」を定義しておけば、ssh-agentでさらに簡単にログインができるようになる。

~/.ssh/config例

Host kiku33
HostName www.kiku33.com
User hiroaki
ForwardAgent yes
LocalForward 5003 127.0.0.1:5003

ターミナルでの実行例

% ssh -A kiku33

クライアントマシン-FileMakerサーバマシン間でデータのやり取りが発生するポートは次のとおり。

  • 80: IIS/Apache Webサーバのデフォルトポート。SSLを使用する場合は443。インスタントWeb公開のポート番号と衝突しないように注意
  • 5003: ネットワーキングポート。FileMaker Serverで公開されているFileMakerファイルとの通信に使用
  • 16000: Admin Consoleの起動ページ。ワーカーマシンの場合はAdmin Helpers
  • 16001: Admin Console ClientとAdmin Serverとのデータ通信時に使用
  • 16016: Apache Jakarta Protocolで使用
  • 16018: Apache Jakarta Protocolで使用
  • 2399: ODBC/JDBC接続時に使用

ssh(1)ポートフォワーディングとfmsadminを併用すれば、ターミナル操作だけで効率的なFileMakerメンテナンスが実施できる。ssh(1)はFileMakerにかぎらず、システム管理やアプリケーションのメンテナンスをおこなう場合にはぜひ覚えておきたいコマンドのひとつ。この機会にいろいろ試してみてほしい。

ポートフォワーディングを使ったFileMakerメンテナンスの注意点

ポートフォワーディングを使ったFileMakerメンテナンスをおこなうにあたり、いくつか注意すべき点がある。

  1. sshの接続制限について
  2. ポートフォワーディング経由で接続した場合、FileMaker Pro上ではおこなわない方が良い操作
  3. (2の続きで)FileMakerでより高速な操作をおこなうには

次回、これらのことについて紹介しよう。