web-dev-qa-db-ja.com

LinuxでJettyをポート80デーモンとしてデプロイする

Linux管理者の神々がJettyのデプロイメントを管理するためにどのような手法を使用しているか知りたいです。私はWindowsServerのバックグラウンドを持っているので、まだこれらすべてに慣れています。 LinuxインストールでJettyインスタンスをポート80としてデプロイするための優れたソリューションを探していました。

これまで、Jettyをデーモンとして実行できるようにするこのスレッドを見てきました。

http://jira.codehaus.org/browse/JETTY-458

そして、私はポート80でセットアップするための代替案について話しているこのスレッドを見ました:

http://wiki.Eclipse.org/Jetty/Howto/Port8

これらはすべて一種のハッキーのようでした。確かに、Linux上にJettyのようなWebサーバーをデプロイする比較的標準的な方法があります。私は現在CentOS5.5を使用していますが、他のディストリビューションを利用できます。

前もって感謝します。

3
McKAMEY

残念ながら、Javaプロセスは他の言語と同様にデーモン化されない傾向があります。Jettyの場合、プロセスを起動および管理するために daemonize のようなものを使用することをお勧めします。

編集-いくつかの追加の詳細:

(上記のリンクの指示に従って)daemonizeをビルドした後、コマンドラインパラメーターは生成されたファイルで説明されますdaemonize.html。起動コマンドからテストして、期待どおりに機能することを確認します。

次に、起動時にJettyを起動するには、daemonizeコマンドをinit Shellスクリプトに追加します(たとえば、CentOS/RHELの場合はappend/etc/rc.d/rc.local)。例えば:

#!/bin/bash
#...other startup commands

/path-to/daemonize -c /path-to/jetty/ -p pid.txt -e error.log -o console.log -a /usr/bin/Java -jar start.jar
2
Andrew M.

アプリケーションサーバーの前にApache2プロキシを配置します。 Apache2には、このために設計された特定のモジュールがあります。アプリケーションがリモートユーザーを識別するためのリクエストに適切なヘッダーを追加します。 Apache2は静的コンテンツを提供するために使用でき、アプリケーション要求をアプリケーションサーバーに渡すだけです。

Windowsは、特権ポート(1024未満のポート)を実装していません。 Jettyをrootとして実行する以外に、ポート80をrootとしてバインドし、データをJettyに渡すための何らかの手法が必要です。 Apache2は、ポートをバインドした後にsetuidを使用して、リクエストを処理するプロセスがシステムにルートアクセスできないようにします。

あなたが見つけたサイトはいくつかのオプションを示しています:

  • Iptablesまたはipchainsを使用して、ポート80を非特権ポートにリダイレクトします。
  • ラッパーを使用してポート80をバインドし、setuidコマンドを実行してから、デーモンとしてJettyに制御を移します。 Javaはsetuidへの直接アクセスを提供しないため、ネイティブライブラリが必要です。
  • Xinetdを使用して、ポート80を非特権ポートにリダイレクトします。代わりにiptablesを使用します。
1
BillThor