Jetty 是輕量級 Java Servlet 容器,啟動方式靈活多樣。本文整理四種常見啟動模式,涵蓋開發測試到生產部署場景,並說明關閉機制與最佳實踐。
java -jar start.jar
Ctrl + C 發送 SIGINT,Jetty 優雅關閉。java -jar start.jar &
& 將進程放入背景,終端機釋放。Enter 取回提示符。nohup.out(若前綴 nohup),或自行重導向:nohup java -jar start.jar > jetty.log 2>&1 & tail -f jetty.log # 即時追蹤日誌
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:驗證金鑰,防止未授權停止。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_HOME | Jetty 安裝根目錄(不可寫) | /opt/jetty |
| JETTY_BASE | 執行實例目錄(可寫,含 webapps、logs、etc) | /var/lib/jetty |
| JETTY_ARGS | 傳遞給啟動類的參數 | jetty.http.port=8080 |
| jetty.http.port | HTTP 連接埠 | 8080 |
| jetty.ssl.port | HTTPS 連接埠 | 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 配置。