Jetty 启动 Web 项目

在 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

关键配置说明

  1. 端口修改
    编辑 jetty-home/start.ini 或通过命令行参数:

    java -Djetty.http.port=9090 -jar start.jar
    
  2. 上下文路径
    默认情况下:

    • webapps/foo.war → 访问路径 /foo
    • 如需根路径,重命名 WAR 为 ROOT.war
  3. JVM 参数
    start.ini 中添加:

    --exec
    -Xms512m
    -Xmx1024m
    
  4. HTTPS 配置
    start.ini 中启用 ssl 模块,并配置证书:

    --module=ssl
    jetty.ssl.port=8443
    jetty.ssl.keyStorePath=/path/to/keystore
    jetty.ssl.keyStorePassword=yourpassword
    

常见问题解决

  1. 端口冲突
    检查端口占用:

    netstat -tulnp | grep 8080
    
  2. 权限问题
    确保 Jetty 目录有正确权限:

    chown -R jetty:jetty /opt/jetty
    
  3. 日志查看
    Jetty 日志默认在:

    tail -f /opt/jetty/logs/*.log
    
  4. 内存不足
    调整 JVM 内存:

    java -Xms1g -Xmx2g -jar start.jar
    

各方式对比

方式适用场景优点缺点
嵌入式 Jetty开发/测试无需安装,快速启动不适合高并发生产环境
独立 Jetty生产环境稳定,支持热部署需要单独安装 Jetty
Systemd 服务生产环境自动重启,开机启动配置稍复杂

根据您的需求选择合适的方式,开发推荐嵌入式,生产推荐独立部署+Systemd服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思静鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值