Java Web是一种使用Java语言开发动态Web应用程序的技术栈,它利用Java平台的强大功能,结合各种技术和框架,使得开发者能够创建复杂、高性能、可跨平台部署的Web应用。而Jetty是一个开源的Servlet容器,主要用于运行Java Web应用。相较于Tomcat,Jetty更轻量级,更适合轻量级应用、高并发场景或分布式环境。本文介绍如何在ECS实例中通过Jetty部署Java Web环境。
前提条件
部署Java Web环境时,已有ECS实例必须满足以下条件:
操作方案
您可以根据ECS实例的系统,选择合适的方案。
本文以安装12.0.16
版本的Jetty为例。若您安装其他版本,或使用其他目录,您需要根据实际版本及目录替换命令中的版本及路径。
登录Linux服务器。具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
运行以下命令,下载并解压Jetty 12安装包。
wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/12.0.16/jetty-home-12.0.16.tar.gz --no-check-certificate tar -zxvf jetty-home-12.0.16.tar.gz
运行以下命令,移动Jetty所在目录。
sudo mv jetty-home-12.0.16 /usr/local/jetty/
运行以下命令,创建
jetty-base
目录。sudo mkdir /usr/local/jetty-base
设置环境变量。
运行以下命令,编辑
~/.bashrc
文件。sudo vim ~/.bashrc
按
i
进入编辑模式,在文件中添加以下内容。请将下方内容中
JETTY_HOME
设置为实际的Jetty安装目录,JETTY_BASE
设置为jetty-base
目录。export JETTY_HOME=/usr/local/jetty export JETTY_BASE=/usr/local/jetty-base
编辑完成后,按
Esc
键,输入:wq
,按Enter
键保存并关闭文件。运行以下命令,使修改生效。
source ~/.bashrc
启动Jetty模块,初始化
jetty-base
目录。运行以下命令,进入
jetty-base
目录。cd /usr/local/jetty-base
运行以下命令,初始化
jetty-base
目录,命令执行完毕后,会创建$JETTY_BASE/start.d/
目录及其他包含服务器配置信息的目录。您可以使用
java -jar $JETTY_HOME/start.jar --list-modules=*
命令来查看有哪些模块可用。若您使用Jetty 9,请替换
--add-module
为--add-to-start
。
sudo java -jar $JETTY_HOME/start.jar --add-module=server,http,deploy
验证环境配置。
以下命令需在
jetty-base
目录下运行。运行以下命令,部署Jetty的示例Web应用程序。
若您使用Jetty11、10,需要将下方命令的
demos
替换为demo
。若您使用Jetty9,需运行
sudo mv $JETTY_HOME/demo-base/webapps/ROOT $JETTY_BASE/webapps
命令部署示例。
您也可以上传本地测试项目WAR包至
$JETTY_BASE/webapps
目录进行测试,具体操作,请参见上传或下载文件。sudo java -jar $JETTY_HOME/start.jar --add-module=demos
运行以下命令,启动Jetty。
Jetty默认监听8080端口,您可以通过
sudo netstat -tunlp | grep 8080
命令查看端口是否被占用,若端口被占用,您可以在启动Jetty时指定其他端口以解决端口冲突问题,例如:nohup sudo java -jar $JETTY_HOME/start.jar jetty.http.port=8081 &
。nohup sudo java -jar $JETTY_HOME/start.jar &
在本地浏览器地址栏中,输入
http://公网IP:8080
,成功查看到测试页面,则说明环境配置成功。若您修改过Jetty的端口,请将8080替换为修改后的端口,并检查安全组,确认放行该端口。具体操作,请参见添加安全组规则。
若您上传了本地测试项目WAR包,可访问
http://公网IP:8080/包名
测试。
此教程仅适用于安装Jetty 12、Jetty 11、Jetty 10。
本文以安装12.0.16
版本的Jetty为例。若您安装其他版本,或使用其他目录,您需要根据实际版本及目录替换命令中的版本及路径。
登录Linux服务器。具体操作,请参见使用Workbench工具以RDP协议登录Windows实例。
下载Jetty。
不同版本的Jetty支持的JDK版本不同,请您根据部署Java环境时安装的JDK版本,阅读Jetty官网中的说明,选择合适版本的Jetty,并下载对应的安装包。
解压Jetty压缩包。
将下载的压缩包解压到您希望安装Jetty的位置。本文以
C:\download
为例。需要将Jetty解压至不包含空格的路径。
设置
JETTY_HOME
环境变量。右键单击此电脑,选择属性。
在关于页滚动至最下方,单击高级系统设置。
单击环境变量。
在系统变量区域,单击新建,创建系统变量,完成后单击确定。变量名为
JETTY_HOME
,变量值为Jetty安装目录,例如C:\download\jetty-home-12.0.16
。单击确定,保存环境变量配置。
创建
jetty-base
文件夹。本文以在C:\download
下创建为例。初始化
jetty-base
文件夹。进入
jetty-base
文件夹,在地址栏输入cmd
并按Enter
键,打开命令提示符。在命令提示符中运行以下命令,初始化
jetty-base
文件夹。命令执行完毕后,会创建start.d
目录及其他包含服务器配置信息的目录。java -jar %JETTY_HOME%/start.jar --add-module=http,server,deploy
验证Jetty。
运行以下命令,部署Jetty的示例Web应用程序。
若您使用Jetty11、10,需要将下方命令的
demos
替换为demo
。您也可以上传本地测试项目WAR包至
<jetty-base>/webapps
目录进行测试,<jetty-base>
为jetty-base
文件夹路径,例如C:\download\jetty-base
。具体操作,请参见上传或下载文件。java -jar %JETTY_HOME%/start.jar --add-module=demos
运行以下命令,启动Jetty。启动后请勿关闭命令提示符窗口。
Jetty默认监听8080端口,您可以通过
netstat -ano | findstr :8080
命令查看端口是否被占用,若端口被占用,您可以在启动Jetty时指定其他端口以解决端口冲突问题,例如:java -jar %JETTY_HOME%/start.jar jetty.http.port=8081
。java -jar %JETTY_HOME%/start.jar
在本地浏览器地址栏中,输入
http://公网IP:8080
,成功查看到测试页面,则说明环境配置成功。若您修改过Jetty的端口,请将8080替换为修改后的端口,并检查安全组,确认放行该端口。具体操作,请参见添加安全组规则。
若您上传了本地测试项目WAR包,可访问
http://公网IP:8080/包名
测试。
后续操作
部署Java Web环境后,您可以考虑在服务器上配置网站,为ECS实例的公网IP地址绑定域名等。具体操作,请参见搭建网站。
您可以选择合适的开发工具进行Web开发,如果您的应用需要使用数据库存储应用数据,可以在Web项目的相关配置文件(例如Properties文件)中添加数据库配置,连接至数据库。开发完成后,您可以将Java Web应用程序部署到Jetty中(例如部署到
$JETTY_BASE/webapps
目录),部署和运行后,通过Web访问您的应用。关于Jetty的更多信息,您可以访问Jetty官网获取。如果您使用的是其他版本的Jetty,只需将URL中的版本号替换为相应版本即可。
若您需要上传本地文件到ECS,具体操作,请参见上传或下载文件(Linux)。
若您需要使用数据库存储和管理Web应用中的数据,可以使用云数据库RDS MySQL,或在实例中部署MySQL数据库,具体操作,请参见部署数据库。
您可以考虑使用负载均衡SLB提高网站的可用性和性能。详细信息,请参见快速入门。
您可以直接使用ECS的构建与部署功能,关联代码仓库并进行构建部署,详情请参见部署应用。
您也可以考虑通过云效建立CI/CD流程来持续集成,提高效率。详细信息,请参见什么是云效。
常见问题
部署完成后,本地浏览器无法访问http://公网IP:8080
参考本文部署Jetty后,验证时无法通过浏览器访问http://公网IP:8080
,可能是以下原因导致:
可能原因一:
服务器开启了系统防火墙或SELinux等,并设置了屏蔽外界访问的规则,导致无法远程访问服务器。您可以通过以下方案尝试解决:
若您的实例为Linux系统,需要您关闭实例的系统防火墙、SELinux。具体操作,请参见开启或关闭Linux系统防火墙、开启或关闭SELinux。
若您的实例为Windows系统,需要您关闭实例的系统防火墙。具体操作,请参见管理Windows系统防火墙。
可能原因二:
在启动Jetty时,您修改过Jetty的监听端口。您可以通过以下方案尝试解决:
将
http://公网IP:8080
中的8080替换为修改后的端口,并检查安全组,确认放行该端口。具体操作,请参见添加安全组规则。
- 本页导读 (1)
- 前提条件
- 操作方案
- 后续操作
- 常见问题
- 部署完成后,本地浏览器无法访问http://公网IP:8080