收起左侧

NAS 上怎么跑 Java 项目?手把手教你部署 Tomcat

0
回复
27
查看
[ 复制链接 ]

179

主题

18

回帖

0

牛值

江湖新锐

社区上线纪念勋章fnOS1.0上线纪念勋章EVO2产品纪念

Apache Tomcat:

一款开源、免费的轻量级 Java Web 应用服务器,主要运行 Servlet、JSP 程序,常用于部署 Java 网站和接口服务。简单来说,别人 Java 写好打包的程序,放到 Tomcat 里就能在服务器上启动。

安装

Docker Compose

services:
  tomcat:
    image: tomcat:9.0
    container_name: tomcat
    volumes:
      - ./webapps:/usr/local/tomcat/webapps
    ports:
      - 8080:8080
    restart: unless-stopped

参数说明(更多参数建议去看文档)

:::9.0(标签版本):适配 Java8,一般企业和旧项目常用

/usr/local/tomcat/webapps(路径):默认的应用部署目录

:::

使用

浏览器中输入 http://NAS的IP:8080 就能看到界面

TIP:打开显示 404 是正常现象,因为目前 webapps 路径下不存在 ROOT 目录时,Tomcat 没有默认页面可展示,所以返回 404。

演示 Demo

其实正常来说,Tomcat 会有一个官方演示 Demo(有人可能会纠结,这里说一下解决方法)

打开 Tomcat 容器的终端

TIP:默认工作目录就是 /usr/local/tomcat,如果不是的话就找到这个路径

cd /usr/local/tomcat

查看当前路径下有什么文件(webapps 映射到外部持久化的,webapps.dist 则是原本自带的欢迎页面和示例程序)

ls

将 webapps.dist 路径下的文件,移动到 webapps 路径

mv webapps.dist/* webapps

来到 webapps 文件夹下,可以看到文件

刷新一下浏览器,就能看到熟悉的示例画面

HTML 项目部署

清空 webapps 下的所有文件,新建一个 ROOT 文件夹

将 HTML 文件放到 ROOT 目录下就行

用 AI 简单写了一个 Hello World 页面

WAR 包部署

部署非常方便,先清空 webapps 目录的文件

TIP:用到的演示文件

https://tomcat.apache.org/tomcat-9.0-doc/appdev/sample/sample.war

先将 WAR 包重命名为 ROOT(因为之后会自动解压后的文件夹,如果不是 ROOT 名称,里面文件就不会识别运行)

将使用 WAR 包放到 webapps 路径即可,就会自动解压数据包的

能看到已经正常运行了

JAR 包部署

JAR 包其实在 Java 环境直接运行会更加方便,但是 Tomcat 上就有点麻烦不建议

TIP:用到的演示文件

//Spring Boot 项目,有 /hi 接口https://github.com/findyou230/hello-java-jar//只有信息打印,没有网页显示https://github.com/jarirajari/helloworld

将 JAR 包放到 webapps 路径下(不会自动解压的)

打开终端,来到 webapps 路径查看文件列表

cd /usr/local/tomcat/webappsls

运行 JAR 包(大概率会看见 8080 端口已经被占用,因为 Tomcat 本身就已经占用 8080,而启动的项目也是 8080 端口)

java -jar hello-0.0.1-SNAPSHOT.jar

解决方法:

  • • 改打包前 JAR 项目的端口(如果你是开发者)
  • • 修改 tomcat 镜像的内部端口

下面演示修改 tomcat 镜像的内部端口,打开终端

拷贝 server.xml 配置文件,复制到 webapps 目录

cp /usr/local/tomcat/conf/server.xml /usr/local/tomcat/webapps

打开编辑 server.xml 文件

找到这一行,把 port="8080" 改成 port="8090"

修改 Docker Compose 模板,重新部署(也可以将 server.xml 不放在 webapps 目录内,另外单独映射)

services:  tomcat:    image: tomcat:9.0    container_name: tomcat    volumes:      - ./webapps:/usr/local/tomcat/webapps      - ./webapps/server.xml:/usr/local/tomcat/conf/server.xml    ports:      - 8080:8080      - 8090:8090    restart: unless-stopped

访问 8090 就能看到界面了

重复上面步骤,重新运行 JAR 包,没有报错了

访问 8080 就能看到有显示,说明已经正常运行了(后期不需要次次手动运行,加上启动命令 command 字段让 JAR 包随容器自动启动)


扩展

下面内容有可能有些地方说得不一定对,仅供参考

WAR 和 JAR 区别

打包成 WAR 包:

需要依赖外部的 Web 服务器(如 Tomcat)才能运行。这种方式下,需要先启动服务器,再部署并启动应用,因此对服务器的资源(如端口号、内存等)占用相对较多。但好处是能够充分利用独立服务器的性能与成熟能力,应用与服务器相互独立,便于利用服务器本身处理复杂的请求转发和集群配置。

打包成 JAR 包:

更加轻量级,不依赖外部服务器。因为 JAR 包内嵌了 Tomcat(或其他 Servlet 容器),所以可以直接通过 java -jar 命令运行,配置简单、上手方便。虽然内嵌的容器在某些高级定制化或运维管理功能上,可能不如独立部署的外部服务器那样强大和灵活,但其便捷性非常适合现代微服务架构的快速交付。

项目打包

现在的 Spring Boot 项目绝大多数都推荐使用 JAR 包的形式进行打包和部署,因为它完美契合了“约定大于配置”和微服务的理念,运维起来也更加省心。

SpringBoot 项目 JAR 打包

https://blog.csdn.net/m0_67392126/article/details/126115957

SpringBoot 项目 WAR 打包

https://www.jb51.net/article/202524.htm

总结

Tomcat 是一款轻量级 Java Web 应用服务器,用于部署 Java 项目。对于普通用户来说日常确实用不上,但有些游戏服务端、开源项目可以部署在 Tomcat 运行。三种部署方式里,WAR 包和 HTML 项目最省心,JAR 包建议直接用 Java 环境跑更方便。

综合推荐:⭐⭐⭐(一般用户用不上)

使用体验:⭐⭐⭐(常规开发工具,WAR/HTML 部署简单)

部署难易:⭐⭐(简单)︎

收藏
送赞
分享
不定时分享 NAS 教程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则