在 CentOS 7 上安装 OpenJDK 8
Jetty 需要 JVM 来执行 Java Web 应用程序。
因此我们使用 yum 命令安装 OpenJDK。
[root@jetty-01 ~]# yum install -y java-1.8.0-openjdk
设置 Java 环境变量。
[root@jetty-01 ~]# echo "export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64" >> /etc/profile [root@jetty-01 ~]# . /etc/profile [root@jetty-01 ~]# env | grep JAVA_HOME JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64
通过检查版本确保 Java 安装。
[root@jetty-01 ~]# java -version openjdk version "1.8.0_212" OpenJDK Runtime Environment (build 1.8.0_212-b04) OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
CentOS 7 上已经安装了 OpenJDK。
Jetty 是一个 Java HTTP Web 服务器和 Java servlet 容器。
Jetty 是一个由 Eclipse Foundation 开发和维护的免费开源项目。
Jetty 被用于许多开源项目和产品中。
Jetty 可以轻松嵌入到设备、工具、框架、应用服务器和集群中。
在本文中,我们将在 CentOS 7 上安装 Jetty 9 Web 服务器,然后在其上部署 Java Web 应用程序。
在 Jetty 9 Web 服务器上部署 Java Web 应用程序
从 GitHub 下载 Java 项目源。
我们正在下载 simple-crud-app,这是一个简单的 Hello World 应用程序。
[root@jetty-01 tmp]# curl -O https://codeload.github.com/trdngy/toy-project-1/zip/master % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 15923 0 15923 0 0 2994 0 --:--:-- 0:00:05 --:--:-- 4201
提取下载的文件。
[root@jetty-01 tmp]# unzip master
这个项目由 Apache Maven 提供支持,因此,我们必须安装 Apache Maven 来编译这个项目。
[root@jetty-01 tmp]# yum install -y maven
通过检查其版本来验证 Apache Maven 安装。
[root@jetty-01 tmp]# mvn -v Apache Maven 3.0.5 (Red Hat 3.0.5-17) Maven home: /usr/share/maven Java version: 1.8.0_212, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
编译源代码以生成 WAR 文件。
我们将在我们的 Jetty 9 Web 服务器上部署这个 WAR。
[root@jetty-01 tmp]# cd toy-project-1-master/ [root@jetty-01 toy-project-1-master]# mvn compile [INFO] Scanning for projects... [INFO] [INFO] ----------------------------------------------------------------------- [INFO] Building simple-crud-app Maven Webapp 0.0.1 [INFO] ----------------------------------------------------------------------- [INFO] [INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ simple-crud-app -- [debug] execute contextualize [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, for example:build is platform dependent! [INFO] Copying 1 resource [INFO] [INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ simple-crud-app -- [WARNING] File encoding has not been set, using platform encoding UTF-8, for example:build is platform dependent! [INFO] Compiling 8 source files to /tmp/toy-project-1-master/target/classes [INFO] ----------------------------------------------------------------------- [INFO] BUILD SUCCESS [INFO] ----------------------------------------------------------------------- [INFO] Total time: 4.954s [INFO] Finished at: Wed Jan 15 01:18:17 PKT 2019 [INFO] Final Memory: 13M/32M [INFO] -----------------------------------------------------------------------
构建 WAR 文件以部署在我们的 Jetty 9 Web 服务器上。
[root@jetty-01 toy-project-1-master]# mvn package
将生成的 WAR 文件复制到 Jetty 9 webapps 目录中。
[root@jetty-01 toy-project-1-master]# mv /tmp/toy-project-1-master/target/simple-crud-app.war /opt/jetty/webapps/
如果我们访问 URL http://jetty-01.onitroad.com:8080/ ,我们可能会注意到我们的应用程序已自动添加到 Jetty 9 Web 服务器中。
浏览器 URL http://jetty-01.onitroad.com:8080/simple-crud-app/ 以通过 Jetty 9 Web 服务器访问我们的 Java Web 应用程序。
我们已经在 CentOS 7 上的 Jetty 9 Web 服务器中成功部署了一个 Java Web 应用程序。
在 CentOS 7 上安装 Jetty 9 Web 服务器
创建一个用户来拥有 Jetty 软件。
[root@jetty-01 ~]# useradd jetty
从 Eclipse 网站下载最新版本的 Jetty。
早期版本可以从 Maven Central 下载。
[root@jetty-01 ~]# cd /tmp [root@jetty-01 tmp]# curl -O https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.18.v20190429/jetty-distribution-9.4.18.v20190429.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 18.4M 100 18.4M 0 0 95411 0 0:03:22 0:03:22 --:--:-- 110k
将下载的文件解压到 /opt 目录。
[root@jetty-01 tmp]# tar zxvf jetty-distribution-9.4.18.v20190429.tar.gz -C /opt/
为 /opt/jetty-distribution-9.4.18.v20190429/ 目录创建软链接。
[root@jetty-01 tmp]# ln -s /opt/jetty-distribution-9.4.18.v20190429/ /opt/jetty
将 Jetty 软件所有权设置为 jetty 用户。
[root@jetty-01 tmp]# chown -R jetty:jetty /opt/jetty/
我们需要为 Jetty 服务器设置环境变量。
我们还可以在此处设置特定于 Jetty Web 服务器的 JAVA_OPTIONS。
[root@jetty-01 tmp]# cat > /etc/default/jetty << EOF > JETTY_HOME=/opt/jetty > JETTY_BASE=/opt/jetty/webapps > JETTY_USER=jetty > JETTY_HOST=0.0.0.0 > JETTY_ARGS=jetty.port=8080 > EOF
在 Jetty 的运行目录上创建和设置权限。
[root@jetty-01 tmp]# mkdir /var/run/jetty [root@jetty-01 tmp]# chown jetty:jetty /var/run/jetty
在 Linux 防火墙中允许 Jetty 服务端口。
[root@jetty-01 tmp]# firewall-cmd --permanent --add-port=8080/tcp success [root@jetty-01 tmp]# firewall-cmd --reload success
为 Jetty 服务创建一个 systemd 单元。
[root@jetty-01 tmp]# vi /usr/lib/systemd/system/jetty.service
并其中添加以下指令。
[Unit] Description = Jetty Web Server After = syslog.target network.target [Service] User = jetty ExecStart = /opt/jetty/bin/jetty.sh start ExecStop = /opt/jetty/bin/jetty.sh stop ExecReload = /opt/jetty/bin/jetty.sh restart Type = forking [Install] WantedBy = multi-user.target
启动并启用 Jetty 服务。
[root@jetty-01 tmp]# systemctl enable jetty.service Created symlink from /etc/systemd/system/multi-user.target.wants/jetty.service to /usr/lib/systemd/system/jetty.service. [root@jetty-01 tmp]# systemctl start jetty.service
从客户端浏览器浏览 URL http://jetty-01.onitroad.com:8080/。
Jetty 9 Web 服务器已安装在 CentOS 7 上。