Linux系统下Jetty服务器的安装与配置指南
准备工作:安装环境与依赖
在Linux系统中安装Jetty服务器前,需确保系统满足基本要求并安装必要的依赖包,Jetty是一个基于Java的Web服务器和Servlet容器,因此Java运行环境(JRE)或JDK是核心前提,以Ubuntu/Debian系统为例,可通过以下命令安装OpenJDK:

sudo apt update sudo apt install openjdk-11-jdk -y
安装完成后,验证Java版本:
java -version
确保输出显示Java 11或更高版本,对于CentOS/RHEL系统,可使用yum或dnf命令安装OpenJDK:
sudo yum install java-11-openjdk-devel -y
建议创建一个专用用户运行Jetty服务,以提升安全性。
sudo useradd -r -s /bin/false jetty
下载与解压Jetty安装包
Jetty的官方下载地址为Mortbay Jetty官网,选择适合的版本(如Jetty 11,需Java 11+支持),下载tar.gz压缩包,以下以命令行操作为例:
wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/11.0.15/jetty-distribution-11.0.15.tar.gz
下载完成后,将文件解压至指定目录(如/opt):
sudo tar -xvf jetty-distribution-11.0.15.tar.gz -C /opt/ sudo ln -s /opt/jetty-distribution-11.0.15 /opt/jetty
配置Jetty服务
Jetty的配置文件位于/opt/jetty/etc目录,核心配置文件包括jetty.xml(主配置)、webdefault.xml(Web应用默认配置)及jetty-http.xml(HTTP连接器配置)。
-
修改默认端口
编辑/opt/jetty/etc/jetty-http.xml,将<Set name="port">8080</Set>中的端口号修改为所需值(如8081),避免与其他服务冲突。 -
设置Web应用目录
默认Web应用根目录为/opt/jetty/webapps,可通过创建子目录部署应用,sudo mkdir -p /opt/jetty/webapps/myapp
-
配置日志与临时文件
日志文件默认位于/opt/jetty/logs,确保jetty用户对该目录有写权限:sudo chown -R jetty:jetty /opt/jetty/logs
临时文件目录可通过
jetty.xml中的<Temp>标签修改,默认为/tmp/jetty-<pid>。
创建Systemd服务单元
为方便管理Jetty服务,建议创建Systemd服务单元文件,执行以下命令创建配置文件:
sudo nano /etc/systemd/system/jetty.service
如下:
[Unit] Description=Jetty Web Server After=network.target [Service] Type=forking User=jetty Group=jetty ExecStart=/opt/jetty/bin/jetty.sh start ExecStop=/opt/jetty/bin/jetty.sh stop ExecReload=/opt/jetty/bin/jetty.sh restart PIDFile=/var/run/jty/jetty.pid Restart=on-failure [Install] WantedBy=multi-user.target
保存后,创建PID文件目录并设置权限:
sudo mkdir /var/run/jetty sudo chown jetty:jetty /var/run/jetty
启动与验证服务
启用并启动Jetty服务:
sudo systemctl daemon-reload sudo systemctl enable jetty sudo systemctl start jetty
检查服务状态:
sudo systemctl status jetty
若显示active (running),表示服务启动成功,通过浏览器访问http://服务器IP:8081,若看到Jetty欢迎页面,则验证成功。
部署Web应用
Jetty支持多种部署方式,包括直接放置WAR包到webapps目录或通过contexts目录配置XML描述符。
-
WAR包部署
将编译好的WAR包(如myapp.war)复制到/opt/jetty/webapps目录:sudo cp myapp.war /opt/jetty/webapps/
Jetty会自动检测并部署应用。
-
XML描述符部署
在/opt/jetty/etc目录创建myapp.xml如下:
<Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="contextPath">/myapp</Set> <Set name="war">/opt/jetty/webapps/myapp.war</Set> </Configure>
重启Jetty服务后,即可通过
/myapp路径访问应用。
安全与优化建议
-
防火墙配置
若使用防火墙(如ufw),需开放HTTP端口:sudo ufw allow 8081/tcp
-
启用HTTPS
通过配置jetty-https.xml并添加SSL证书,可实现HTTPS服务,需提前生成或购买证书,并修改连接器配置:<Configure class="org.eclipse.jetty.server.Server"> <New id="httpsConfig" class="org.eclipse.jetty.server.HttpConfiguration"> <Set name="secureScheme">https</Set> <Set name="securePort">8443</Set> </New> <New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory"> <Set name="keyStorePath">/path/to/keystore.jks</Set> <Set name="keyStorePassword">password</Set> </New> </Configure> -
性能调优
- 调整JVM内存参数:编辑
/opt/jetty/bin/jetty.sh,在JAVA_OPTIONS中添加-Xms512m -Xmx2g。 - 启用GZIP压缩:在
jetty.xml中配置<Set name="gzip">true</Set>。
- 调整JVM内存参数:编辑
常见问题排查
-
端口冲突
检查端口占用情况:sudo netstat -tuln | grep 8081
若被占用,修改
jetty-http.xml中的端口或关闭占用进程。 -
权限问题
确保日志、临时文件目录权限正确,避免因权限不足导致服务异常。 -
Java版本不兼容
若启动报错提示Java版本过低,需升级JDK或切换至兼容的Jetty版本。
通过以上步骤,即可在Linux系统中完成Jetty服务器的安装、配置与管理,Jetty轻量级、高性能的特性使其适合中小型应用部署,灵活的配置选项可满足多样化需求。










