インストールと起動

インストールは簡単です。ファイルをダウンロードして解凍するだけです。このあたりはTomcatとおんなじです。

Jettyは下記のサイトから取得しました。(別サーバに引越ししていてリンクが変わるかも)
http://jetty.mortbay.org/jetty/index.html
結構チュートリアルやFAQを用意しているのですが、いかんせん英語です。

起動

ファイルの解凍したディレクトリをJETTY_HOMEとし、このディレクトリで以下のコマンドを実行することでサーバを起動できます。Tomcatと比べるとあまりに起動が速くてびっくりします。
java -jar start.jar etc/admin.xml etc/demo.xml
後半の2つのXMLファイルは設定ファイルです。Tomcatでいうところのserver.xmlに似たようなものでservler.xmlにweb.xmlで設定するようなことを混ぜ合わせたような感じです。

停止するときは、
java -jar stop.jar
です。

ちなみに、上記のstart.jarは実行可能なjarファイルなので、Windowsでファイルをダブルクリックするとサーバが起動してしまいます。
コンソールアプリなので、起動しても何事もなかったかのように見えてしまいますが、ちゃんとjava.exeのプロセスが立ち上がって、サーバーとして機能していますので、注意してください。
コンソールからコマンドを打ったら「Address already in use」なんて出てJettyが起動しない場合には、すでにサーバプロセスが立ち上がっていないかを確認する必要があります。デフォルトではTomcatと同じように、8080番でHTTPが起動しますので、Tomcatも入れている人は、Tomcatのサービスが起動していないかも確認してみてください。

Unix系の場合には、binディレクトリに起動用のシェルスクリプトが用意してあるので、こちらを使うこともできます。
bin/jetty.sh start
ただし環境変数として、JETTY_HOMEを設定しておく必要があります。他にもいくつか環境変数を指定する事で、実行時に便利なオプションとすることができました。

  • JAVA_HOME Javaのホームディレクトリを指定。
  • JETTY_CONSOLE Jetty実行時のコンソール出力の出力先を指定します。

これをログファイルとすると便利です。
jetty.shは、/etc/jetty.conf(無い場合には、$JETTY_HOME/etc/jetty.conf)を参照します。 jetty.confには設定用のxmlファイル(demo.xmlとかadmin.xmlとか)のパスを記述しておくことで、設定ファイルを読み込むことができます。
詳細はjetty.shのコメントを参照してください。

2006/04/07補足
JDK1.5で動作させたところ、以下のようなメッセージが出て、JSPのコンパイルに失敗しました。

Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK

これについては、ドキュメントによるとJAVA_HOMEを設定するように書いてあったのですが、それだけでは解決せず、tools.jarをJETTY_HOME/extディレクトリに放り込んだら正常に動作しました。
また、JDK1.4が導入されてあれば、JAVA_HOMEをJDK1.4のインストールディレクトリに指定して、1.4のJREで実行するとこれも正常に動作しました。

サンプルのファイル配置

以下はサンプルのファイル配置で、私が使用しているサーバのファイル配置です。

■Jettyの起動
 Jettyの起動スクリプトは、$JETTY_HOME/bin/jetty.shを使用しています。このスクリプトを、Linuxサーバの起動時に一般ユーザーで実行しています。
一般ユーザで実行する場合には、ポート80が使えなくなってしまいますが、これは後述するiptablesを使って、うまいことやっています。
■config.xml
 config.xmlは起動時のコマンドでは指定しておらず、
$JETTY_HOME/etc/jetty.confファイルを作成して指定するようにしています。このファイルはなにかというと、config.xmlのパスを記述しています。
■ログファイル
 jetty.shでは、$JETTY_CONSOLE環境変数によって、jetty本体が出力する標準出力の出力先を指定することができます。これをログファイルとして$JETTY_HOME/logs/ディレクトリに出力しています。あとは、logrotateを使ってログのロータリングを実施しています。
■ポート80での実行
 Jettyをrootユーザで実行すれば、ポート番号80で起動することが可能ですが、それだとJettyのセキュリティホールでroot権限が奪われる可能性があるため、できればroot権限では実行したくありません。
一般ユーザでポート8080などの適当なポートで実行しておきながら、iptablesで80番へのパケットを8080へ転送してあげるような設定にしてあげるとOKです。このあたりはJettyのサイトのFAQに書いてありました。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)