在 Linux 系统上使用 Jetty 启动 Web 项目可以分为以下几种方式,我将详细介绍每种方法的步骤:
方法1:使用嵌入式 Jetty(推荐开发使用)
适合开发环境快速启动,无需安装完整 Jetty 服务器。
1. 添加 Maven 依赖
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>11.0.15</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>11.0.15</version>
</dependency>
2. 编写启动类
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
public class JettyEmbeddedRunner {
public static void main(String[] args) throws Exception {
Server server = new Server(8080); // 端口
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/"); // 上下文路径
webapp.setWar("path/to/your/webapp.war"); // WAR包路径
// 或直接指向项目目录(开发时)
// webapp.setResourceBase("src/main/webapp");
server.setHandler(webapp);
server.start();
server.join();
}
}
3. 运行
java -cp your-project.jar JettyEmbeddedRunner
方法2:使用独立 Jetty 服务器(生产推荐)
适合生产环境部署。
1. 下载 Jetty
wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/11.0.15/jetty-home-11.0.15.tar.gz
tar -xvf jetty-home-11.0.15.tar.gz
cd jetty-home-11.0.15
2. 部署 WAR 包
cp /path/to/your-webapp.war ./webapps/
3. 启动 Jetty
# 默认端口8080
java -jar start.jar
# 指定端口
java -Djetty.http.port=9090 -jar start.jar
4. 访问应用
http://your-server-ip:8080/your-webapp-context
方法3:作为系统服务运行(生产环境)
1. 创建 systemd 服务文件
sudo vi /etc/systemd/system/jetty.service
内容:
[Unit]
Description=Jetty Server
After=network.target
[Service]
User=jetty
WorkingDirectory=/opt/jetty
ExecStart=/usr/bin/java -jar /opt/jetty/start.jar
Restart=on-failure
[Install]
WantedBy=multi-user.target
2. 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable jetty
sudo systemctl start jetty
3. 查看状态
sudo systemctl status jetty
关键配置说明
-
端口修改
编辑jetty-home/start.ini或通过命令行参数:java -Djetty.http.port=9090 -jar start.jar -
上下文路径
默认情况下:webapps/foo.war→ 访问路径/foo- 如需根路径,重命名 WAR 为
ROOT.war
-
JVM 参数
在start.ini中添加:--exec -Xms512m -Xmx1024m -
HTTPS 配置
在start.ini中启用ssl模块,并配置证书:--module=ssl jetty.ssl.port=8443 jetty.ssl.keyStorePath=/path/to/keystore jetty.ssl.keyStorePassword=yourpassword
常见问题解决
-
端口冲突
检查端口占用:netstat -tulnp | grep 8080 -
权限问题
确保 Jetty 目录有正确权限:chown -R jetty:jetty /opt/jetty -
日志查看
Jetty 日志默认在:tail -f /opt/jetty/logs/*.log -
内存不足
调整 JVM 内存:java -Xms1g -Xmx2g -jar start.jar
各方式对比
| 方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 嵌入式 Jetty | 开发/测试 | 无需安装,快速启动 | 不适合高并发生产环境 |
| 独立 Jetty | 生产环境 | 稳定,支持热部署 | 需要单独安装 Jetty |
| Systemd 服务 | 生产环境 | 自动重启,开机启动 | 配置稍复杂 |
根据您的需求选择合适的方式,开发推荐嵌入式,生产推荐独立部署+Systemd服务。
1291

被折叠的 条评论
为什么被折叠?



