首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Jetty 伺服器啟動方式完整總結:前景、後台、遠程停止與生產部署建議

     編輯:Java 綜合教學

Jetty 伺服器啟動方式完整總結:前景、後台、遠程停止與生產部署建議

Jetty 是輕量級 Java Servlet 容器,啟動方式靈活多樣。本文整理四種常見啟動模式,涵蓋開發測試到生產部署場景,並說明關閉機制與最佳實踐。

方式一:前景執行(開發/測試最常用)

java -jar start.jar
  • 當前終端機佔用,輸出日誌直接顯示。
  • 關閉:Ctrl + C 發送 SIGINT,Jetty 優雅關閉。
  • 適用場景:本地開發、快速驗證、CI/CD 暫時啟動。

方式二:背景執行 & 輸出重導向 (Linux/Unix)

java -jar start.jar &
  • & 將進程放入背景,終端機釋放。
  • 啟動成功後按 Enter 取回提示符。
  • 查看日誌:Jetty 根目錄會產生 nohup.out(若前綴 nohup),或自行重導向:
nohup java -jar start.jar > jetty.log 2>&1 &
tail -f jetty.log  # 即時追蹤日誌
  • 關閉:需找到 PID(ps -ef | grep start.jar)然後 kill -TERM <PID>。

方式三:啟用遠程停止埠(生產環境推薦)

# 啟動
java -DSTOP.PORT=8009 -DSTOP.KEY=secret -jar start.jar

# 關閉(可在同機器另一終端執行)
java -DSTOP.PORT=8009 -DSTOP.KEY=secret -jar start.jar --stop
  • STOP.PORT:監聽停止指令的埠(預設 8079)。
  • STOP.KEY:驗證金鑰,防止未授權停止。
  • 優點:無需找 PID、支援腳本化優雅關閉、可跨終端機操作。
  • 注意:防火牆需限制 STOP.PORT 僅允許可信任主機存取。

方式四:Jetty 內建腳本啟動(標準生產部署)

Jetty 發布包含 bin/jetty.sh 服務腳本,支援系統服務管理。

# 啟動
./bin/jetty.sh start

# 停止
./bin/jetty.sh stop

# 重啟
./bin/jetty.sh restart

# 檢查狀態
./bin/jetty.sh status
  • 以背景守護進程運行,終端機關閉不影響。
  • 支援 JETTY_HOME、JETTY_BASE、JETTY_USER、JETTY_ARGS 等環境變數客製化。
  • 可整合 systemd/SysV init 實現開機自啟:
# systemd 服務檔範例 /etc/systemd/system/jetty.service
[Unit]
Description=Jetty Web Server
After=network.target

[Service]
Type=forking
User=jetty
ExecStart=/opt/jetty/bin/jetty.sh start
ExecStop=/opt/jetty/bin/jetty.sh stop
Restart=on-failure

[Install]
WantedBy=multi-user.target

五、關鍵配置與環境變數

變數/屬性說明常用值
JETTY_HOMEJetty 安裝根目錄(不可寫)/opt/jetty
JETTY_BASE執行實例目錄(可寫,含 webapps、logs、etc)/var/lib/jetty
JETTY_ARGS傳遞給啟動類的參數jetty.http.port=8080
jetty.http.portHTTP 連接埠8080
jetty.ssl.portHTTPS 連接埠8443

六、選型建議

場景推薦方式理由
本地開發/除錯方式一即時看日誌、Ctrl+C 快速重啟
測試機/臨時後台方式二 + nohup簡單、不佔用終端機
生產單機/容器方式三(遠程停止)腳本化優雅關閉、健康檢查友善
生產叢集/系統服務方式四(jetty.sh + systemd)標準化管理、開機自啟、日誌輪轉

七、常見問題排查

  • 埠被佔用:netstat -tlnp | grep 8080 確認衝突,修改 jetty.http.port。
  • 遠程停止失效:檢查 STOP.KEY 一致性、防火牆、IPv6/IPv4 綁定差異。
  • 權限不足:jetty.sh 需以專屬使用者(非 root)執行,確保 JETTY_BASE 目錄可寫。
  • 記憶體不足:設定 JAVA_OPTIONS="-Xms512m -Xmx2g" 或在 start.ini 配置。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved