手动部署Java Web环境(Jetty)

更新时间:2024-12-20 02:44:43

Java Web是一种使用Java语言开发动态Web应用程序的技术栈,它利用Java平台的强大功能,结合各种技术和框架,使得开发者能够创建复杂、高性能、可跨平台部署的Web应用。而Jetty是一个开源的Servlet容器,主要用于运行Java Web应用。相较于Tomcat,Jetty更轻量级,更适合轻量级应用、高并发场景或分布式环境。本文介绍如何在ECS实例中通过Jetty部署Java Web环境。

前提条件

部署Java Web环境时,已有ECS实例必须满足以下条件:

  • 实例已分配固定公网IP地址或绑定弹性公网IP(EIP)。具体操作,请参见弹性公网IP

  • 实例安全组的入方向规则需放行远程连接、Jetty服务相关的端口,例如22、3389、8080端口。具体操作,请参见添加安全组规则

  • 实例已部署Java环境。具体操作,请参见部署Java环境

操作方案

您可以根据ECS实例的系统,选择合适的方案。

Linux
Windows

本文以安装12.0.16版本的Jetty为例。若您安装其他版本,或使用其他目录,您需要根据实际版本及目录替换命令中的版本及路径。

  1. 登录Linux服务器。具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  2. 运行以下命令,下载并解压Jetty 12安装包。

    重要
    • 如果您需要安装其他版本,或下方下载地址失效,请您直接访问Jetty官网获取下载地址,并替换命令中的URL。

    • 不同版本的Jetty支持的JDK版本不同,请您根据部署Java环境时安装的JDK版本,阅读Jetty官网中的说明,选择合适版本的Jetty。

      image

    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
  3. 运行以下命令,移动Jetty所在目录。

    sudo mv jetty-home-12.0.16 /usr/local/jetty/
  4. 运行以下命令,创建jetty-base目录。

    sudo mkdir /usr/local/jetty-base
  5. 设置环境变量。

    1. 运行以下命令,编辑~/.bashrc文件。

      sudo vim ~/.bashrc
    2. i进入编辑模式,在文件中添加以下内容。

      说明

      请将下方内容中JETTY_HOME设置为实际的Jetty安装目录,JETTY_BASE设置为jetty-base目录。

      export JETTY_HOME=/usr/local/jetty
      export JETTY_BASE=/usr/local/jetty-base
    3. 编辑完成后,按Esc键,输入:wq,按Enter键保存并关闭文件。

    4. 运行以下命令,使修改生效。

      source ~/.bashrc
  6. 启动Jetty模块,初始化jetty-base目录。

    1. 运行以下命令,进入jetty-base目录。

      cd /usr/local/jetty-base
    2. 运行以下命令,初始化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

      image

  7. 验证环境配置。

    重要

    以下命令需在jetty-base目录下运行。

    1. 运行以下命令,部署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
    2. 运行以下命令,启动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 &
    3. 在本地浏览器地址栏中,输入http://公网IP:8080,成功查看到测试页面,则说明环境配置成功。

      说明
      • 若您修改过Jetty的端口,请将8080替换为修改后的端口,并检查安全组,确认放行该端口。具体操作,请参见添加安全组规则

      • 若您上传了本地测试项目WAR包,可访问http://公网IP:8080/包名测试。

      image

重要

此教程仅适用于安装Jetty 12、Jetty 11、Jetty 10。

本文以安装12.0.16版本的Jetty为例。若您安装其他版本,或使用其他目录,您需要根据实际版本及目录替换命令中的版本及路径。

  1. 登录Linux服务器。具体操作,请参见使用Workbench工具以RDP协议登录Windows实例

  2. 下载Jetty。

    不同版本的Jetty支持的JDK版本不同,请您根据部署Java环境时安装的JDK版本,阅读Jetty官网中的说明,选择合适版本的Jetty,并下载对应的安装包。

    image

    image

  3. 解压Jetty压缩包。

    将下载的压缩包解压到您希望安装Jetty的位置。本文以C:\download为例。

    重要

    需要将Jetty解压至不包含空格的路径。

  4. 设置JETTY_HOME环境变量。

    1. 右键单击此电脑,选择属性image

    2. 关于页滚动至最下方,单击高级系统设置image

    3. 单击环境变量image

    4. 系统变量区域,单击新建,创建系统变量,完成后单击确定。变量名为JETTY_HOME,变量值为Jetty安装目录,例如C:\download\jetty-home-12.0.16

      image

    5. 单击确定,保存环境变量配置。

  5. 创建jetty-base文件夹。本文以在C:\download下创建为例。

    image

  6. 初始化jetty-base文件夹。

    1. 进入jetty-base文件夹,在地址栏输入cmd并按Enter键,打开命令提示符。

      image

    2. 在命令提示符中运行以下命令,初始化jetty-base文件夹。命令执行完毕后,会创建start.d目录及其他包含服务器配置信息的目录。

      java -jar %JETTY_HOME%/start.jar --add-module=http,server,deploy

      image

  7. 验证Jetty。

    1. 运行以下命令,部署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
    2. 运行以下命令,启动Jetty。启动后请勿关闭命令提示符窗口。

      说明

      Jetty默认监听8080端口,您可以通过netstat -ano | findstr :8080命令查看端口是否被占用,若端口被占用,您可以在启动Jetty时指定其他端口以解决端口冲突问题,例如:java -jar %JETTY_HOME%/start.jar jetty.http.port=8081

      java -jar %JETTY_HOME%/start.jar
    3. 在本地浏览器地址栏中,输入http://公网IP:8080,成功查看到测试页面,则说明环境配置成功。

      说明
      • 若您修改过Jetty的端口,请将8080替换为修改后的端口,并检查安全组,确认放行该端口。具体操作,请参见添加安全组规则

      • 若您上传了本地测试项目WAR包,可访问http://公网IP:8080/包名测试。

      image

后续操作

  • 部署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等,并设置了屏蔽外界访问的规则,导致无法远程访问服务器。您可以通过以下方案尝试解决:

  • 可能原因二:

    在启动Jetty时,您修改过Jetty的监听端口。您可以通过以下方案尝试解决:

    http://公网IP:8080中的8080替换为修改后的端口,并检查安全组,确认放行该端口。具体操作,请参见添加安全组规则

  • 本页导读 (1)
  • 前提条件
  • 操作方案
  • 后续操作
  • 常见问题
  • 部署完成后,本地浏览器无法访问http://公网IP:8080