翻訳者:中川@日本アルトマークさん

NTサーバ4.0上でEnhydra Multiserverをサービスとして使う

by Tori Harris,
Epic Partners, Inc.

この文書の目的は、(web/アプリケーション用)本番サーバをセットアップする時に役立つ一般的な情報を提供することです。この文書はサーバ環境構築の詳細な説明の提供を試みるものではありません。それよりも、すでに存在している特定の文書の補足を行い時間を節約できる情報となる事を意図しています。完全な文書へのリンクはできるだけこの文書中に用意してあります。まずはベンダ提供文書を読んで理解しておく事が重要で、その後あなたの本番環境に関する詳細についてはこの文書に戻って下さい。



Web/アプリケーションサーバ上にJavaをインストールする

関連文書::Java 2 SDK readme file (C:\jdk1.2.2)

SunのJava Software Development Kit(SDK)のインストールは、明確にバージョン1.2.2の事を指しています。注意すべきは、この文書はバージョン1.2.2_005を使って書かれている点です。さらに注意する点として、バージョン1.3では現在"Serve Anything"を使ってNTサービスにするのを妨げるいくつかの問題があります。

以下の一般的な手順を、SDKのインストールに関するガイドラインに沿って行ってください。

  1. webサーバ上に"Install"という新しいディレクトリを作成します。

  2. http://java.sun.com/products/jdk/1.2/から、Java 2 SDK v 1.2.2_005 Windows 95/98/NT Production Release (Intel Platform)をインストールディレクトリにダウンロードします。
    注:"1回でダウンロード(約20Mバイト)"版を選んで下さい。

  3. 自己解凍の.exeファイルを実行し、指示に従います。

  4. デフォルトのインストールディレクトリ(C:\jdk1.2.2)を受け入れます。

  5. "コンポーネントの選択"画面で、"Demos"と"Java Sources"は省いても構いません。

  6. Java Runtime Environment(JRE)のデフォルトディレクトリ(C:\Program Filea\JavaSoft\JRE\1.2)を受け入れます。



Web/アプリケーションサーバ上にEnhydraをインストールする

関連文書 : "Getting Started with Lutris Enhydra" ( http://enhydra.enhydra.org/software/documentation/index.html )

Lutris社はEnhydraバージョン3.0頃のインストールプロセスを劇的に簡単にする改良を行いました。この文書はバージョン3.0.1をもとに書かれました。

Enhydraインストールのガイドラインに沿って以下の手順を進めて下さい。

  1. http://www.enhydra.org/software/enhydra/downloads/index.htmlの"Enhydra for Windows"から、Enhydra3.0.1の"InstallShield"バージョンをインストールディレクトリにダウンロードします。
    注意:"Enhydra3.0.1.exe 30.9 meg" バージョンを選択してください。
  2. 自己解凍の.exeファイルを実行し、指示に従います。

  3. C:\jdk1.2.2ディレクトリで認識されたJDKのバージョンを受け入れます。

  4. Enhydraパッケージの(インストールを行う)標準の場所(c:\usr\local)を受け入れます。

  5. "セットアップのタイプ"画面で、"カスタム"を選択します。

  6. "コンポーネントの選択"画面で、"Enhydra Source"と"Enhydra Demos Source"は省いても構いません。

  7. 一旦インストールが完了したら、C:\enhydraの下の".bashrc"ファイルを開きます(ワードパッドを使うと良いでしょう)。

  8. Enhydraインストール内容への正しい情報を含むように、パス記述を編集してファイルを保存します。

    例えば、このデフォルトパス表記から :
    PATH=/bin:/usr/local/bin:/usr/local/enhydra/bin:$PATH

    こう変更します:
    PATH=/bin:/usr/local/bin:/usr/local/enhydra3.0.1/bin:$PATH

  9. Cygnusツールを起動します(デスクトップ上にある"Enhydra Shell"アイコンを使います)。

  10. cd /usr/local/enhydra3.0.1と入力します。

  11. ./configure /jdk1.2.2 と入力します(これで幾つかのファイルにenhydraインストール位置がセットされます)

  12. Enhydraインストールが成功したのを確認するため、簡単なアプリケーションを以下の手順で作成します。

  13. cd /usr/localと入力します。

  14. mkdir projectと入力します。

  15. cd projectと入力します(これで今 /usr/local/project ディレクトリにいるはずです。確認するにはpwdコマンドを使います)。

  16. newapp myappと入力します(これで"myapp"と呼ばれる単純なアプリケーションが作られるはず)。

  17. cd myappと入力します。

  18. makeと入力します(これでアプリケーションのコンパイルが行われ、実行に必要な全てのファイルが生成されるはず)

  19. cd outputと入力します。

  20. ./startと入力します(これでアプリケーションが実行されるでしょう)。

  21. コンソール画面(DOS窓)で、アプリケーションが接続待ち("listening")を行うポートが通知されます(デフォルトは9000です)。

  22. ブラウザを開き、アプリケーションがhttp://127.0.0.1:9000で正しく実行されているのを確認します。

  23. アプリケーションを停止させるため、コンソール画面でCTRL+Cを押します。



NTサービスとして実行するためのEnhydra Multiserver構成

関連文書: srvany.doc

NTリソースキットに含まれる"Serve Anything"(srvany)アプリケーションが、NTサービスとしてEnhydra Multiserverを実行させてくれます。サービスであればユーザのログオンやログオフの際にも実行を続け、(そう構成しておけば)サーバ機を再起動した際にもEnhydraは再起動を行い、さらに様々なサードパーティ製アプリケーションによりモニターが可能になるなど、この仕込みをしておく事は有用なのです。Srvanyアプリケーションに含まれるSrvany.docファイルには、アプリケーションをサービスとしてインストールと実行させるのに必要となる手順説明についてとても良い仕事をしています。ここで、先のインストールにおいてSrvany.exeファイルがどこに常備されているか知っていなければならないのに注意してください。

そうしてEnhydra Multiserverが実行されてもそれはただのJavaアプリケーションに過ぎず、アプリケーションの実行に必要なパラメータは私たちが全て与える必要があります。一般的に、私たちがコマンドプロンプトからアプリケーションを実行する場合と同じ情報を正確に与えなければなりません。

注: NTレジストリの編集はとにかく要注意です。1つのエラーが予測できない−完全なサーバ再構築を必要とする−結果を引き起こしかねません。

以下はEnhydra Multiserverのためにまとめた"Serve Anything"のインストール文書です。Enhydraサービスのインストールを試みる前に"Srvany.doc"文書に目を通しておいて下さい。この説明は、あなたのサーバ上でEnhydraがインストールされ機能していて、NT4.0リソースキットからServe Anythingのコピーをあなたが手にしているものとします。

  1. srvany.exe, srvany.doc 及び instsrv.exe の各ファイルをリソースキットから、あなたのNTサーバのc:\enhydraディレクトリにコピーします。

  2. コマンドプロンプト上でc:\enhydraディレクトリに移動し、

    instsrv Enhydra c:\enhydra\srvany.exe

    と入力して下さい。
    これで、Enhydraサービスがインストールされ、サービスコントロールマネージャアプレット([コントロール パネル]-[サービス]にあります)を使ってアクセスできるようになるでしょう。しかしながら、実際に何でもサービスにしてしまう前にNTレジストリを編集しておかなければなりません。

  3. コマンドプロンプト上で、regedt32と入力します。

    Enhydraサービスへのエントリはこの場所にあります:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Enhydra\

  4. Enhydraサービスを選択してから、"編集(E)"メニューの"キーの追加(K)"を選択します。

    キー名(K):Parameters
    クラス(C):REG_SZ

  5. 今追加した"Parameters"サブキーを選択し、"編集(E)"メニューの"値の追加(V)"を選択します。

    値の名前(V):AppDirectory
    データ タイプ(D):REG_SZ (既にセットされているでしょう)
    文字列(S):"c:\enhydra\"

  6. 以下の値について、今の手順を繰り返します。

    値の名前(V):Application
    データ タイプ(D):REG_SZ (既にセットされているでしょう)
    文字列(S):"c:\jdk1.2.2\bin\java.exe"(java.exeファイルへのパスと確実に合わせます)

    値の名前(V):AppParameters
    データ タイプ(D):REG_SZ (既にセットされているでしょう)
    文字列(S):-cp "c:\usr\local\enhydra3.0.1\lib\enhydra.jar;c:\jdk1.2.2\lib\inetJDBC.zip;c:\jdk1.2.2\lib\Signio.jar;c:\jdk1.2.2\lib\epic.jar;%CLASSPATH%;c:\jdk1.2.2\lib\tools.jar" "com.lutris.multiServer.MultiServer" "c:\usr\local\enhydra3.0.1\multiserver.conf"

    注:パラメータとサーバ上のファイル位置は確実に一致させておかなければなりません。インストール内容によってはAppParameters文字列を単純化できるでしょう。文字列の一般的な形式は以下のとおり。

    -cp [クラスパス] [メインクラス名] [引数]

    引数の完全な説明を見るにはコマンドプロンプト上でjavaと入力します。ここの例では、("-cp"スイッチの後に)全てのクラスパスを指定し、その後で完全記述式のメインクラス名を指定し、multiserver.confファイルへのパスを引数で指定しています。

  7. これらのステップを完了したら、Parametersサブキーの下は以下と同様に設定されているはずです。

  8. レジストリエディタを閉じます。

  9. サービスコントロールマネージャアプレット([コントロール パネル]-[サービス])で、新規作成したEnhydraサービスを選択し、"スタートアップの種類"を適当なタイプに指定します(ほとんどの本番環境では"自動")。
    また、サービスが舞台裏で動いている状況をコンソールの出力として見たければ、"デスクトップとの対話をサービスに許可"します。


    注: もしあなたが "デスクトップとの対話をサービスに許可する" を選択すると、サーバからログオフした時コンソールにJavaスレッドダンプが表示されるだろうと予期されます。これが生じても、エラーでもなければJavaやEnhydraが引き起こした問題を表している訳でもありません。マシンからログオフしたときでもサービスは実行を続けるでしょうし、ユーザが再びサーバにログインしなおしても、コンソールウィンドウはなお表示を続けているでしょう。
    また、いくつものエラーを起こしてMultiserverを不安定な状況下に置く可能性があるので、Enhydraサービスを停止させるためにコンソールウィンドウを手で閉じてはいけません。コンソールウィンドウを閉じるには、サービスアプレットを使いEnhydraサービスを停止させます(コンソールウィンドウは自動的に閉じるでしょう)。トラブルシューティング目的は別として、デスクトップとの対話をサービスに許可することは勧められません…本番環境では特にそうです。

  10. いったん上記の設定をすべて確認したら、サーバ機を再起動してEnhydra Multiserverが自動的に起動するのを確認してください。



Enhydra Directorを構成する

関連文書: "Using Enhydra Director" (http://www.enhydra.org/software/documentation/enhydra/index.html)

Enhydra DirectorwをIISと共に動作させるためのLutrisによるドキュメントはとても細かくできています。サーバ上のwwwサービスにおける問題を回避するため、以下の手順にきちんと従ってください。注意点として、enhydra_director.confファイルの中には構成をどうすべきかを述べた重要な情報が多く含まれていますが、このファイル中の構成例には特に注意を払ってください。説明文自体はコメントアウトされているのですが、実際のコードはそうはなっていません…しかしこれは本番環境に入れる前に取り除かなければなりません!あなたが行った構成に関係無いコードはすべてコメントアウトしておきます。
webサーバを再起動した時に2分を超える起動の遅れがあれば、それはenhydra_director.confファイル中にまだコメントにしていない偽物の構成情報(構成例)が含まれている事を示しています。こうなってしまうと、Enhydra Directorはファイルの構成例に従い、IISにDNS問い合わせを力づくで行わせるでしょう。問い合わせごとにタイムアウトまで2分程度の時間がかかり、サーバが完全に起動するまでには実に5〜10分に及ぶ遅れを引き起こしてしまいます。



Multiserver管理コンソールによるEnhydraアプリケーションの追加

関連文書: "Getting Started with Lutris Enhydra" (http://www.enhydra.org/software/documentation/enhydra/index.html).

"Web/アプリケーションサーバ上にJavaをインストールする" の項では、簡単なEnhydraアプリケーションをコマンドラインから実行する方法について解説しました。しかしながら、本番サーバにおいて、アプリケーションはEnhydra Multiserver管理コンソールから起動されます。コンソールとは、Enhydraアプリケーションの追加と管理を行う簡単な手法を提供するブラウザベースのツールです。いったんMultiserverがサーバ上でサービスとして実行されると("NTサービスとして実行するためのEnhydra Multiserver構成"の項を参照のこと)、コンソールアプリケーションがあなたのアプリケーションの管理を始めることができます。以下の手順は、サーバ上に新規Enhydraアプリケーションをインストールするたびに通常1回だけ行う必要があります。Multiserverコンソールに新規アプリケーションを実行させるには、以後のステップを完了する前に"Enhydra Multiserverへのアプリケーション配備"の先頭から10ステップを仕上げておきます。

  1. ブラウザ上で http://127.0.0.1:8001 とURLを指定します。このアプリケーションはデフォルトでポート8001で実行される点に注意します。この指定はc:\usr\local\enhydra3.0.1\multiserver.conf ファイルを編集することで変更できます。

  2. ユーザー名とパスワードの入力を求められるでしょう。デフォルトでは、ユーザー名 = admin、パスワード = enhydra となっています。この情報は、c:\usr\local\enhydra3.0.1\apps\multiserverAdmin.conf ファイルを編集すれば変更できます。

  3. "Add New Application/Servlet"ウインドウを開くため、左側パネルの[Add]ボタンをクリックします。

  4. "Select Application"ドロップダウンリストの中であなたのEnhydraアプリケーションの名前が表示されるはずです。

  5. 簡単な説明を追加したければ、"OK."をクリックしてください。

  6. アプリケーションの追加が成功した事を示すメッセージが表示されるはずです。

  7. "OK."をクリックします。
  8. ステータスウィンドウ上部の"Connections"タブをクリックします。
  9. アプリケーションの接続を追加するため、"create"をクリックします。

  10. (Enhydra Driectorが実行されている)webサーバとMultiserverの間の接続を指定するため"Enhydra Director"にするか、ブラウザとアプリケーション(この場合はMultiserverをwebサーバとしても使います)の間の直接接続を指定するため"http"にするか、どちらかを選んでください。この選択に関する詳細情報は"Getting Started with Enhydra"文書でも"Using Enhydra Director"文書でも同様に参照できます。いずれにしても、ポート番号とURLプレフィクスのフィールドは埋めておかなければなりません。あなたがEnhydra Directorを使うのであれば、enhydra_director.conf ファイル中の対応するエントリへ同じ情報をセットしておきます。

  11. "OK."をクリックします。

  12. 接続設定の追加に成功した事を示すメッセージが表示されるはずです。

  13. "OK."をクリックします。

  14. ステータスウインドウ上部の"Application"タブをクリックします。

  15. 左上角の"Applications:"ウインドウ中にあなたのアプリケーションが表示されるのを注目します。

  16. あなたのアプリケーションを選び、右側のアプリケーションステータスウインドウを注目します。

  17. アプリケーションを起動するために、左側パネルの"Start"ボタンをクリックします。

  18. ステータスウインドウで、アプリケーションが動作している事が示されるはずです

  19. ブラウザ上で適当なアドレス,ポート,(適用しているなら)URLプレフィクスを指定して、アプリケーションをテストします。入力するURLが正しいかの確信がなければ、再度ステータスウインドウ上部の"Connections"タブをクリックしてください。先に追加した接続設定で、アプリケーションのURLを見られるはずです。しかし、このURLはnetbiosマシン名に基づいているかもしれず、その場合インターネットを経由してサーバにアクセスできない点に注意します。その時は、URLのコロンより手前(ポート番号の手前)をサーバのIPアドレスか、インターネット越しにサーバにアクセスできるよう、DNSに登録してあるサーバ名に書き換えることができます。

  20. 変更内容を反映するため、左側パネルの[Save State]ボタンを押します。

  21. 左上角の"Application"ウインドウ中で一覧表示されている、他の実行中アプリケーションは性能上の理由から全て止めるべきです。それぞれのアプリケーション名を選択し、そして左パネルの"Stop"ボタンをクリックして、それを行ってください。

  22. 変更を反映するため、左側パネルの"Save State"ボタンを再びクリックし、アプリケーションが思い通りに起動・停止することを確認してください。

  23. 構成変更が完了したら、ブラウザを単純に閉じてかまいません。



Enhydra Multiserverへのアプリケーション配備

関連文書: "Getting Started with Lutris Enhydra" (http://www.enhydra.org/software/documentation/enhydra/index.html).

これが、恐らくは開発者が最も共通して引き受けるサーバ上の作業です(開発時でも本番でも)。ここで、サーバは既に全ての構成が完了しておりEnhydra Multiserverが動作しているものとします。場合によっては(特に開発時において)、Enhydraと同じマシン上でwebサーバ(IIS)が動いていることでしょう。アプリケーションサーバが複数あれば、内容は変わりませんがその数だけ作業を繰り返す必要があるでしょう。本番環境に移す準備のできたどのコードであれ、実際に本番環境に入れる前に開発環境でこれらの手順により全てテストされていなければなりません。

  1. NTサービスコントロールマネージャアプレットを使いEnhydraサービスを停止します。

  2. アプリケーションのルートディレクトリ以下の全てのファイルとサブディレクトリ構造をバックアップします。例えばMyappと名付けられたアプリケーションなら、アプリケーションルートディレクトリはMyappと名付けられているでしょう、そして(少なくとも)classes, output, Myappという名前のサブディレクトリが含まれていて、それは大抵はC:\usr\local\project\Myappといった場所に配置されます。サーバ上の空のテンポラリディレクトリへ単純にファイルをコピーしてしまうことで、この作業は簡単に行えます。

  3. アプリケーションルートディレクトリ中の全てのファイルを削除します。

  4. 全ての本番用ファイルとディレクトリを、空になったアプリケーションルートディレクトリにコピーします。ここで、step2で削除されたサブディレクトリとファイルが置き換えられます。

  5. outputディレクトリ中のアプリケーション構成ファイル(例:Myapp.conf)を開きます。ワードパッドを使えば問題なく作業でき、どのNTサーバでも使えるはずです。

  6. 本番サーバの適切な場所を指すようにServer.ClassPath[]ステートメントを編集します。通常、このプロセスでは、現在の記述をコメントアウトし、本番サーバに合っている記述の"コメントを外す"だけの単純作業を必要とします。正しいステートメントが並んでいなければ、以下(設定例)と同様に記述するべきです。

    Javaクラスファイル群で動作しているなら:
    Server.ClassPath[] = c:\usr\local\project\Myapp\classes

    jarファイルで動作しているなら:
    Server.ClassPath[] = c:\usr\local\project\Myapp\output\lib\Myapp.jar

  7. ファイルを保存し、元のファイル名で保存された事を確認します(.txt 拡張子は不要)。

  8. [ENHYDRADIR]\apps ディレクトリ中のファイルをコピーします。[ENHYDRADIR] ディレクトリとは一般的に c:\usr\local\enhydra3.0.1 や類似のディレクトリのことを指します。このステップでアプリケーション構成ファイルを Enhydra Multiserver管理コンソールで利用可能にします。

  9. NTサービスコントロールマネージャアプレットを使いEnhydraサービスを再起動します。

  10. サービスコントロールマネージャアプレットで、Enhydraサービスが再起動したのが表示されるのを確認します。

  11. ブラウザを使って、アプリケーション期待通りに動作および機能していることを確かめます。Enhydra Multiserverが再起動してブラウザのリクエストに反応するまでには少し時間がかかります。

  12. アプリケーションが2,3分経っても期待通りの反応をしない場合、サービスを再び停止して、アプリケーションディレクトリにバックアップファイルをコピーしなおし、サービスを再起動してみます。そして再度、変更前のアプリケーションが機能していることを確認し、変更後なぜ機能しなくなったのかを調べてください。