web-dev-qa-db-ja.com

Jettyをサービスとして構成する-どのように?

私はDebianを使用しており、パッケージマネージャーのパッケージは完全に最新ではないため、手動でインストールする必要があります。

最新バージョンを.tar.gzファイルとしてダウンロードし、/ optに解凍しました。今、私は次に何をすべきかわからない。

このPCのすべてのユーザーに対して、起動時にJettyをサービスとして実行する必要があります。しかし、どのように?ドキュメントに何も見つかりませんでした。

2
Trollhorn

Jetty.shが見つからない場合は、最後の1つをダウンロードしてください http://dev.Eclipse.org/svnroot/rt/org.Eclipse.jetty/jetty/trunk/jetty-distribution/src/main/resources/ bin/jetty.sh

そしてそれを/etc/init.d/jettyに保存します

また、/ etc/default/jettyを編集して、次のような個々の設定を設定する必要がある場合もあります。

Java_HOME=
Java_OPTIONS=
JETTY_HOME=
JETTY_USER=
JETTY_LOGS=

再起動後にサービスを開始する場合は、update-rc.dを使用してデフォルトの起動レベルに追加することを忘れないでください

2
Ruslan

binディレクトリにjetty.shスクリプトが必要です。 Debianで動作するかどうかはわかりませんが、出発点としては良いでしょう。

2

CentOS 7 Linuxの場合、ダウンロードしました 最新のJettyディストリビューション ファイルを作成しました/etc/systemd/system/jetty.service

[Unit]
Description=Jetty
After=network-online.target

[Service]
Type=simple
User=jetty
Group=jetty
ExecStart=/usr/bin/Java -jar /usr/share/Java/jetty-distribution-9.3.10.v20160621/start.jar jetty.home=/usr/share/Java/jetty-distribution-9.3.10.v20160621 jetty.base=/var/www/jetty jetty.http.port=8080
ExecStop=/bin/kill ${MAINPID}
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

次に、コマンドを実行してユーザーとベースディレクトリを作成しました。

# useradd -s /sbin/nologin jetty

# Java -jar /usr/share/Java/jetty-distribution-9.3.10.v20160621/start.jar \
      jetty.home=/usr/share/Java/jetty-distribution-9.3.10.v20160621 \
      jetty.base=/var/www/jetty \
      --add-to-startd=http,servlet,webapp,deploy,resources,ext,fcgi,websocket,proxy-protocol

# chown -R jetty.jetty /var/www/jetty

次に、新しいサービスをアクティブにしました。

# systemctl enable jetty

# systemctl start jetty

そして最後にログをチェックしました:

# systemctl status -l jetty

そして、Jettyがポート8080でリッスンしていることを確認しました。

# netstat -an | grep -w LISTEN

DebianLinuxのコマンドは似ていると思います...

2

Alexander Farberが提案することは基本的に正しくて使用可能ですが、私の小さなプロジェクトを指摘したいと思います https://github.com/cosenmarco/jetty-systemd-notifier ライフサイクルについてsystemdに信号を送ります桟橋の。

このプロジェクトでは、systemdに接続するための最良の方法を提供しようとしています。 「単純な」サービスタイプは、状況によっては最適ではない場合があります。これは、the service manager will consider the unit started immediately after the main service process has been forked off.(from systemd docs

依存するサービスがある場合、それらを受信する準備ができる前に、それらは桟橋に要求を送信し始める可能性があります。

またthis means systemctl start command lines for simple services will report success even if the service's binary cannot be invoked successfully

つまり、何らかの理由で桟橋がその構成のために起動できなかった場合、とにかく正常な状態をsystemdに報告します。

さらに、提供されている例では、通常jetty.shにあるいくつかの便利な機能を再現しようとしています。

1
cosenmarco