在 Linux 服务器上安装 Jetty
最后修改于 2024 年 1 月 27 日
在本教程中,我们一直在本地计算机上使用 Jetty。在本章中,我们将展示如何在远程服务器上安装 Jetty。这将为我们提供更真实的 Jetty 服务器管理体验。
我们使用基于 Debian 的 Linux 系统。
$ sudo apt-get update $ sudo apt-get upgrade
首先,我们更新服务器。
$ sudo apt-get install openjdk-7-jre-headless
接下来,我们安装 Java,如果系统上尚未安装的话。我们使用 OpenJDK 实现。openjdk-7-jre-headless
是一个最小化的 Java 运行时——服务器上不需要执行 Java GUI 程序的组件,因此未包含在此包中。
$ cd /tmp $ sudo wget http://download.eclipse.org/jetty/stable-9/dist/jetty-distribution -9.2.3.v20140905.tar.gz $ sudo tar xzvf jetty-distribution-9.2.3.v20140905.tar.gz
我们在 /tmp
目录中下载并解压 Jetty 发行版。
$ sudo mv jetty-distribution-9.2.3.v20140905 /opt/jetty $ sudo rm jetty-distribution-9.2.3.v20140905.tar.gz
Jetty 被移动到 /opt/jetty 目录。然后移除压缩包。
$ sudo rm -rf /opt/jetty/demo-base/
Jetty 发行版自带的演示应用程序被移除。
$ sudo vi /etc/environment $ cat /etc/environment PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games: /usr/local/games" JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386 JETTY_HOME=/opt/jetty JETTY_BASE=/opt/jetty/mybase
/etc/environment
文件用于系统范围的环境变量设置。我们在其中设置 JAVA_HOME
、JETTY_HOME
和 JETTY_BASE
环境变量。
$ source /etc/environment $ echo $JAVA_HOME /usr/lib/jvm/java-7-openjdk-i386 $ echo $JETTY_HOME /opt/jetty $ echo $JETTY_BASE /opt/jetty/mybase
source
命令会评估该文件并设置变量。现在我们可以开始引用新的变量了。
$ sudo useradd --user-group --shell /bin/false --home-dir /opt/jetty/temp jetty
向系统中添加一个新的 jetty 用户和组。Jetty 将在该系统用户下运行。将用户的 shell 设置为 /bin/false
的作用是阻止任何人使用该用户名登录。
$ cd /opt $ sudo mkdir -p web/mybase/ $ sudo mkdir jetty/temp/
创建了新的目录。/opt/web/mybase
将用于存放 Jetty 的 base 目录,/opt/jetty/temp
将用于存放 Jetty 的临时文件。根据 Jetty 的文档,将临时目录与标准的系统 /tmp
分开创建是一种最佳实践。清理脚本可能会干扰 Jetty 的临时文件。
$ sudo chown -R jetty:jetty /opt/web $ sudo chown -R jetty:jetty /opt/jetty
我们更改 Jetty 相关文件和目录的用户和组所有权。-R
选项会递归地对文件和目录进行操作,这意味着所有权会更改为父目录下的所有目录和文件。
$ sudo usermod -a -G jetty user_name
我们将我们的用户名添加到 jetty 组,以便能够有权限操作 Jetty。
$ sudo cp /opt/jetty/bin/jetty.sh /etc/init.d/jetty
接下来,我们将 Jetty 启用为系统服务。服务保存在 init.d
目录中。
$ sudo touch /etc/default/jetty $ sudo vi /etc/default/jetty $ cat /etc/default/jetty JETTY_HOME=/opt/jetty JETTY_BASE=/opt/web/mybase TMPDIR=/opt/jetty/temp
脚本会加载 /etc/default/jetty
文件的内容。在该文件中,我们设置了三个环境变量。
$ sudo service jetty start
Jetty 作为系统服务启动。
jano7@core7:~$ service jetty status Checking arguments to Jetty: START_INI = /opt/web/mybase/start.ini JETTY_HOME = /opt/jetty JETTY_BASE = /opt/web/mybase ...
使用 status
参数,我们可以检查服务的状态。
$ scp dist/first.war user_name@example.com:/opt/web/mybase/webapps
从开发计算机,我们通过将项目 WAR 文件复制到 Jetty base 的 webapps 目录来部署一个简单的 Web 应用程序。
$ curl http://example.com:8080/first/ <html> <body> <p> Today's date: Sep 14, 2014 12:26:34 PM </p> </body> </html>
我们连接到 Web 应用程序并收到 HTML 输出。
$ sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
在这里,我们使用一个包过滤器将所有进入端口 80
的数据包转发到端口 8080
。Jetty 默认监听的端口是 8080
;它在 start.ini
文件中配置。
$ curl http://example.com/first/ <html> <body> <p> Today's date: Sep 14, 2014 12:26:34 PM </p> </body> </html>
现在我们可以不带端口号地引用网页了。
在本章中,我们成功地在远程 Linux 服务器上安装了 Jetty,将其启用为系统服务,并部署了一个简单的 Web 应用程序。
作者
列出所有Java教程。