FirebirdをWindowsにインストールする際のコマンドラインツール、instreg.exeとinstsvc.exeの使用方法
instreg.exe と instsvc.exe の使用方法
著者: 原著: Alex Peshkov (peshkoff at mail.ru)、改訂: Olivier Mascia (om at tipgroup.com)
注記 :: スペースや特殊(非ASCII)文字を含む長いパスに関する潜在的な問題を解決するため、これらのツールはコマンドライン引数としてRootDirectoryを受け取らなくなりました。両方のバイナリは、Firebirdルートディレクトリの下にある /bin ディレクトリにインストール(またはコピー)する必要があります。
(ルートディレクトリ == firebird.conf と security2.fdb がインストールされているディレクトリのルート。)
例えば、それらが C:\FB20.in にある場合、ルートディレクトリは C:\FB20 として推定されます。
INSTREG.EXE
このユーティリティの目的は、Firebird のレジストリキーをインストールすることです。そのタスクは、自身の場所の直上のディレクトリとしてRootDirectoryパスを推定し、これを絶対パスとしてレジストリに書き込むことであるため、instreg.exe は Firebird ルートディレクトリの /bin サブディレクトリにインストールする必要があります(上記の注記を参照)。
レジストリキーはエンジンの実行には必須ではありませんが、多くのサードパーティ製ツールは動作するためにこれを読み取ることを期待しています。保存されるキーは
HKLM\SOFTWARE\Firebird Project\Firebird Server\Instances
であり、1つの文字列値 DefaultInstance を含みます。
この ‘DefaultInstance’ 文字列値には、インストールのルートディレクトリへの完全なパス(バックスラッシュ終端)が含まれています。この設定は、次期バージョンでサーバーの名前付きマルチインスタンスの管理が可能になるように構築されています。現在、唯一のインスタンスはハードコードされた
名前 ‘DefaultInstance’ を受け取ります。レジストリには他には何も保存されません。バージョンや構成情報は、サードパーティ製ツールによって関連する firebird.conf ファイルで見つけられます。このファイルは、…\Instances\DefaultInstance 値に保存されたルートパスによって特定できます。
使用方法:
instreg i[nstall]
instreg r[emove]
‘-z’ は他のオプションと併用でき、出力の最初の行として Firebird ソフトウェアのバージョンを出力します。
簡単なテキストヘルプを表示するには、引数なしで instreg.exe を呼び出すだけです。
INSTSVC.EXE
Firebird は、WinNT/2000/XP プラットフォームで Firebird サービスを管理するための標準ルーチンを提供します - instsvc.exe。
コンソールメッセージ
Windows エラーメッセージ(もしあれば)の出力が強化され、ansi 文字列からコンソールウィンドウの OEM 文字セットへの必要な文字変換が行われるようになりました。これは、非英語版 Windows を使用しているユーザーが、正しいアクセントなどを含む自国語で Windows システムエラーメッセージを取得できることを意味します。
セキュリティ関連機能
以前に実装されていた ‘-login’(または -l)オプションは、大幅に改訂および拡張されました。これを使用して、デフォルトの “LocalSystem” の代わりに、特定のユーザーアカウント(おそらくシステム上で制限された権限を持つ)でサービスを実行するように設定できるようになりました。
使用方法:
instsvc i[nstall] [ -s[uperserver]* | -c[lassic] | -m[ultithreaded] ]
[ -a[uto]* | -d[emand] ]
[ -g[uardian] ]
[ -l[ogin] username [password] ]
[ -n[ame] instance ]
[ -i[nteractive] ]
instsvc sta[rt] [ -b[oostpriority] ] [ -n[ame] instance ]
instsvc sto[p] [ -n[ame] instance ]
instsvc q[uery]
instsvc r[emove] [ -n[ame] instance ]
このユーティリティは、Firebird インストールの ‘bin’ ディレクトリに配置され、そこから実行される必要があります。
-
‘*’ はデフォルト値を示します
-
‘-z’ は他のオプションと併用でき、バージョンを出力します
-
‘username’ はデフォルトでこのマシン上のローカルアカウントを指します。
-
必要に応じて、‘domain\username’ または ‘server\username’ の形式を使用してください。
例
Firebird がインストールされている(インストール先にコピーされている)と仮定します。
Superserver と自動起動が現在のデフォルトです。
instsvc i
instsvc install
デフォルトのシステム ID である “LocalSystem” の下で、自動起動(起動時に開始)モードのサービスとして Superserver を設定します。
instsvc i -g
instsvc install -guardian
上記と同じですが、最初に Guardian サービスを起動します。
オプション “-demand” (-d) と “-classic” (-c) を使用するとデフォルトを変更できるため、クラシックサーバー(Superserver の代わりに)をサービスとして構成でき、どちらのサービスも起動時ではなくオンデマンドで開始するように構成できます。
サービスを削除するには
サービスは削除する前に停止する必要があります。これは3行のコードで自動化できますが、安全性のために現状のままにしておく方が良いでしょう。
instsvc r
instsvc remove
サービス定義を削除します。Guardian が構成されていた場合、Guardian とサーバーの両方のサービスが削除されます。
インストールされたサービスを開始および停止するには
instsvc sta
instsvc start
install コマンドで構成された内容に応じて、サーバーまたは Guardian + サーバーを起動します。
instsvc stop
install コマンドで構成された内容に応じて、サーバーまたは Guardian + サーバーを停止します。
サーバーの状態レポートを取得するには
これは新しいコマンドです:
instsvc q
instsvc query
何がどのように構成されているか、およびサービスが実行中か停止中かの正確なレポートを出力します。
セキュアなログイン機能を使用するには
オプション “-login” にはユーザー名とパスワードが必要です:
instsvc i -g -login user pass
これにより、FB superserver が自動起動、Guardian 付きで、パスワードが pass である ID “user” の下で実行されるように構成されます。
* パスワードが含まれる場合、パスワードは ‘-’ で始まってはなりません。
* パスワードがコマンドラインから省略された場合、instsvc はパスワードの入力を求めます。その場合、パスワードは入力時に ‘*’ でマスクされます。
上記のようにサービスを構成する際、instsvc は指定されたユーザーに Windows オペレーティングシステムの特権である「サービスとしてログオン」を自動的に付与します。これは必須です。そうしないと、サービスは起動が許可されません。instsvc は失敗しない限りこれについて静かです。
-login スイッチを介してログインするユーザーが、マシン上で管理者権限を持たない通常のユーザーである可能性に対処するため、instsvc はサービスのデフォルトのセキュリティ記述子を調整し、このユーザーがそれらを開始/停止/照会できるようにします。
これは、Guardian(同じくこのユーザーとして実行される)が FB サーバーを起動できるようにするために必要です。ユーザーはサービスをアンインストールしたり、その構成を変更したりすることはできません。
注記
Instsvc は Windows マシン上に「ユーザー」を作成しません。それは良い考えではありません。管理者は、ユーザーをローカルマシンの一部として作成するか、ドメインの一部として作成するかを望むかもしれません。また、instsvc はユーザー作成に関する管理者の責任を奪う特別な必要はありません。
ユーザーは、すべてのデータベースと firebird.log ファイルへの読み取り/書き込みアクセス権を持っている必要があります。セキュリティ上の理由から、firebird.conf と Firebird 実行可能ファイルへの書き込みアクセス権は付与すべきではありません。
Windows NT/2K/XP では、ドメインまたは別のサーバー上でローカルに定義されたユーザーに対して、ドメインまたはサーバーのプレフィックスを含めるのが一般的です。上記の例では、“user” は次の形式を取る場合があります:
DOMAIN\user または
SERVER\user
プレフィックスがない場合、ユーザーは暗黙的に現在のマシン上のローカルユーザーです。