一、部署 Jetty
以下以当前较新的稳定版本 Jetty 11 为例(部署流程对于 Jetty 9/10 基本通用)。
方法一:使用发行版包管理器(最简单,适合快速开始)
# 对于 Ubuntu/Debian
sudo apt update
sudo apt install jetty9 # 版本可能较旧,例如Ubuntu 22.04是Jetty 9
# 对于 CentOS/RHEL/Fedora (需要启用EPEL仓库)
sudo yum install epel-release
sudo yum install jetty
# 安装后,服务通常会自动配置,可以使用systemctl管理
sudo systemctl start jetty
sudo systemctl enable jetty
方法二:手动下载安装(推荐,灵活且能获取最新版)
步骤 1:安装 Java 环境
Jetty 是 Java 应用,首先需要 JDK 11 或以上版本。
# 检查Java版本
java -version
# 如果未安装,安装OpenJDK(以Ubuntu为例)
sudo apt update
sudo apt install openjdk-11-jdk
# 设置JAVA_HOME环境变量(通常不需要,但建议设置)
echo'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
source ~/.bashrc
步骤 2:下载并安装 Jetty
# 创建 jetty 用户和组(推荐,安全考虑)
sudo useradd -r-m-U-d /opt/jetty -s /bin/false jetty
# 切换到 /opt 目录并下载 Jetty
cd /opt
sudowget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/11.0.20/jetty-home-11.0.20.tar.gz
# 解压并创建符号链接(便于版本管理)
sudo tar -xzf jetty-home-11.0.20.tar.gz
sudoln-s /opt/jetty-home-11.0.20 /opt/jetty
# 修改所有权
sudochown-R jetty:jetty /opt/jetty-home-11.0.20
sudochown-h jetty:jetty /opt/jetty
# 设置环境变量(可选,方便执行命令)
echo'export JETTY_HOME=/opt/jetty' >> ~/.bashrc
echo'export PATH=$PATH:$JETTY_HOME/bin' >> ~/.bashrc
source ~/.bashrc
步骤 3:配置和启动
Jetty 的主要配置目录是 $JETTY_HOME/etc。默认配置通常可以直接运行。
# 切换到 jetty 用户
sudo-u jetty /bin/bash
# 启动 Jetty(在前台运行,Ctrl+C停止)
cd$JETTY_HOME
java -jarstart.jar
# 或者以服务形式在后台运行(推荐使用系统服务,见下一步)
java -jarstart.jar &
步骤 4:配置为系统服务(Systemd)
创建服务文件以便管理。
sudovim /etc/systemd/system/jetty.service
[Unit]
Description=Jetty Web Server
After=network.target
[Service]
Type=simple
User=jetty
Group=jetty
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Environment=JETTY_HOME=/opt/jetty
Environment=JETTY_BASE=/var/lib/jetty
ExecStart=/usr/bin/java -jar${JETTY_HOME}/start.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
创建 JETTY_BASE 目录并设置权限:
sudomkdir /var/lib/jetty
sudochown-R jetty:jetty /var/lib/jetty
启动并启用服务:
sudo systemctl daemon-reload
sudo systemctl start jetty
sudo systemctl enable jetty # 开机自启
步骤 5:验证安装访问 http://<你的服务器IP>:8080,你应该能看到 Jetty 的默认页面或一个 404 错误(表示服务器已运行,但未部署应用)。
默认端口是 8080。如果需要修改端口,编辑 /var/lib/jetty/start.d/http.ini:
jetty.http.port=8080# 改为如 80、9090 等
二、Jetty 基础操作命令
1. 使用 Systemd 管理(如果配置了服务)
# 启动
sudo systemctl start jetty
# 停止
sudo systemctl stop jetty
# 重启
sudo systemctl restart jetty
# 查看状态
sudo systemctl status jetty
# 查看日志
sudo journalctl -u jetty -f
2. 使用 Jetty 自带脚本/命令(传统方式)
如果你没有配置 systemd,或者想直接操作:
基本启动/停止:
# 在 Jetty 目录下,使用 start.jar 启动
cd$JETTY_HOME
java -jarstart.jar # 前台运行
java -jarstart.jar --daemon# 后台守护进程运行
# 停止(需指定停止端口,默认为 -DSTOP.PORT=8081 -DSTOP.KEY=secret)
java -jarstart.jar --stop
3. 部署 Web 应用
方法 A:将 WAR 包放入 webapps 目录
# 将你的app.war包复制到JETTY_BASE或JETTY_HOME的webapps目录
sudocp /path/to/your-app.war /var/lib/jetty/webapps/
# Jetty会自动解压并部署
方法 B:配置上下文文件在 /var/lib/jetty/webapps/ 下创建一个 .xml 文件,例如 myapp.xml:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN""http://www.eclipse.org/jetty/configure_10.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/myapp</Set>
<Set name="war">/path/to/your-app.war</Set>
</Configure>
4. 关键目录说明
$JETTY_HOME (/opt/jetty): 主目录,包含 Jetty 的核心库和模块。
$JETTY_BASE (/var/lib/jetty): 工作目录,存放你的具体配置、应用和日志。所有自定义配置都应放在这里。
$JETTY_BASE/start.d/: 存放模块配置文件(.ini 文件),用于启用和配置模块(如 HTTP、HTTPS、SSL)。
$JETTY_BASE/webapps/: 默认的 Web 应用部署目录。
$JETTY_BASE/logs/: 日志目录。
5. 常用配置示例
启用 HTTPS:
# 在 $JETTY_BASE/start.d/ 目录下,启用 ssl 和 https 模块
cd /var/lib/jetty/start.d
cp$JETTY_HOME/start.d/ssl.ini .
cp$JETTY_HOME/start.d/https.ini .
# 编辑 ssl.ini,配置 keystore 路径和密码
vim ssl.ini
# 修改 jetty.sslContext.keyStorePath 和 jetty.sslContext.keyStorePassword
三、快速部署脚本示例
这里是一个自动安装 Jetty 的简易脚本(手动安装方式):
#!/bin/bash
JETTY_VERSION="11.0.20"
JETTY_HOME="/opt/jetty"
JETTY_BASE="/var/lib/jetty"
# 1. 安装 Java
sudo apt install openjdk-11-jdk -y
# 2. 创建用户
sudo useradd -r-m-U-d$JETTY_HOME-s /bin/false jetty
# 3. 下载解压
cd /opt
sudowget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/${JETTY_VERSION}/jetty-home-${JETTY_VERSION}.tar.gz
sudo tar -xzf jetty-home-${JETTY_VERSION}.tar.gz
sudoln-s jetty-home-${JETTY_VERSION} jetty
# 4. 设置权限
sudochown-R jetty:jetty jetty-home-${JETTY_VERSION} jetty
# 5. 创建 base 目录
sudomkdir-p$JETTY_BASE
sudochown-R jetty:jetty $JETTY_BASE
echo"Jetty ${JETTY_VERSION} 安装完成!"
echo"启动命令: sudo -u jetty java -jar $JETTY_HOME/start.jar"
总结
部署:建议使用 手动安装 + Systemd 服务 的方式,灵活且易于管理。
核心概念:理解 JETTY_HOME 和 JETTY_BASE 的分离原则,所有自定义配置都在 JETTY_BASE。
管理:生产环境务必使用 systemctl 来启动、停止和监控服务。
部署应用:直接将 WAR 包放入 webapps 目录是最简单的方式。
日志:查看日志是排错的关键,日志位于 $JETTY_BASE/logs/ 或通过 journalctl -u jetty 查看。