如何在Tomcat 9上部署前端和后端项目

在这篇指南中,我们将一步步介绍如何在Apache Tomcat 9服务器上部署一个前端项目(我们的示例项目名为“dist”,常见于Vue.js、React等前端框架构建的产物)和一个后端Java Web应用程序(以WAR包形式)。无论您是开发新手还是希望复习基础知识,本文都将为您提供所需的全部信息。

准备工作

在开始之前,请确保您的服务器上已经安装了Java和Tomcat 9。如果尚未安装,您可以参考以下资源:

  • Java安装指南
  • Tomcat 9安装指南

确保Java和Tomcat安装无误后,我们可以开始部署项目。

部署后端Java项目

后端项目通常是以WAR(Web Application Archive)文件形式存在。WAR文件是一个包含JSP、Servlet、Java类、XML和其他资源的打包文件,用于分发和部署Java Web应用程序。

  1. 上传WAR文件:将您的后端项目WAR文件上传到服务器。您可以使用FTP、SCP或任何其他文件传输方法。假设我们的WAR文件名为backend.war

  2. 部署WAR文件:将WAR文件复制或移动到Tomcat的webapps目录中。Tomcat将自动解压WAR文件并启动应用程序。假设您的Tomcat安装在/opt/tomcat目录:

    sudo cp /path/to/backend.war /opt/tomcat/webapps/
    
  3. 验证部署:启动(或重启)Tomcat服务器,然后在浏览器中访问您的后端项目。假设服务器地址是http://yourserver.com,Tomcat默认端口是8080,那么您可以通过以下URL访问您的应用:

    http://yourserver.com:8080/backend
    

    如果应用部署成功,您应该能看到应用的欢迎页面或API响应。

部署前端项目

前端项目通常包含静态资源,如HTML、CSS和JavaScript文件。我们的示例前端项目名为“dist”,是许多现代前端框架构建产物的默认目录名。

  1. 准备前端文件:确保您的前端项目已经构建,且所有文件都位于dist目录中。

  2. 上传前端文件:使用您喜欢的文件传输方法将dist目录中的文件上传到服务器。为了简化访问,我们将直接将这些文件部署到Tomcat的webapps目录中的ROOT文件夹(这会使您的前端应用成为服务器的默认首页)。

    如果您希望前端应用位于不同的路径(例如/frontend),则需要在webapps下创建一个名为frontend的文件夹,并将dist目录中的所有文件复制到该文件夹中。

    对于部署到ROOT的情况,操作如下:

    sudo rm -rf /opt/tomcat/webapps/ROOT/*  # 清空ROOT目录
    sudo cp -r /path/to/dist/* /opt/tomcat/webapps/ROOT/  # 将dist中的文件复制到ROOT
    
  3. 验证部署:一旦您将前端文件复制到了Tomcat的ROOT目录(或您选择的其他目录),就需要重启Tomcat服务器以应用更改。可以通过以下命令重启Tomcat:

    sudo systemctl restart tomcat
    

    或者,如果您没有使用systemctl,可以直接使用Tomcat的shutdown.shstartup.sh脚本:

    /opt/tomcat/bin/shutdown.sh
    /opt/tomcat/bin/startup.sh
    

    重启Tomcat后,打开浏览器并访问您的服务器地址。如果您将前端文件部署到了ROOT目录,您应该能够直接通过服务器地址访问前端应用,如:

    http://yourserver.com:8080/
    

    如果部署到了其他目录,比如frontend,则访问路径将类似于:

    http://yourserver.com:8080/frontend/
    

    您应该能看到您的前端项目的首页,这意味着部署成功。

常见问题及解决方案

  • 应用无法访问:如果您无法访问您的前端或后端应用,首先检查Tomcat服务器是否正在运行。您还需要确认您的防火墙设置允许访问Tomcat的端口(默认是8080)。

  • 静态文件显示404:如果您的前端应用的某些静态资源无法加载(返回404错误),请检查这些文件是否正确地上传到了服务器的相应目录,并确认Tomcat有权限访问这些文件。

  • 应用运行缓慢:如果您的应用运行缓慢,可能是因为Tomcat的默认配置不足以满足您的需求。您可以尝试调整Tomcat的内存设置和连接池设置,这些配置位于/opt/tomcat/bin/setenv.sh(如果不存在,您可能需要创建这个文件)。

结论

恭喜您!现在您已经成功在Tomcat 9服务器上部署了前端和后端项目。这将是您向世界展示您的应用的基础。随着您对Tomcat和服务器管理的进一步了解,您将能够更加灵活和高效地部署和管理您的应用。

希望这篇指南对您有所帮助。如果您在部署过程中遇到任何问题,不要害怕寻求帮助。社区和文档是非常宝贵的资源。

祝您的项目成功!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/769370.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java标签提高for循环运行效率,减少资源开销

一&#xff0c;Java标签提高for循环运行效率,减少资源开销 少说先看代码再讲解 List<Long> lefts new ArrayList<>(); List<Long> rights new ArrayList<>(); lefts.add(0L); lefts.add(1L); lefts.add(2L); lefts.add(3L); lefts.add(4L); lefts.…

修改Linux系统时间与网络同步

文章目录 1、安装ntpdate2、修改时区3、设置系统时间与网络时间同步4、将系统时间写入硬件时间 1、安装ntpdate # Red Hat和Cent OS系统 sudo yum install ntpdate # 乌班图 sudo apt-get install ntpdate2、修改时区 1&#xff09;运行tzselect tzselect2&#xff09;选择A…

Ubuntu篇——Ubuntu修改网卡优先级

背景&#xff1a;网线接了不能上互联网的局域网&#xff0c;WIFI连了可以上互联网的热点&#xff0c;但是发现上不了网&#xff0c;原因是网线的网卡优先级更高。 用指令临时修改网卡优先级的方法&#xff1a; 1.先看一下网卡基本信息 ip route show 显示内容如下&#xff…

通过socketpair()函数实现同一进程内部的进程间通信(IPC)

在某些情况下&#xff0c;我们可能需要将不同的进程之间进行数据传输或通信&#xff0c;而这些进程又在同一台计算机上运行。使用套接字&#xff08;socket&#xff09;是一种常用的IPC机制。通过创建一对文件描述符&#xff0c;可以在同一进程内模拟两个不同的套接字&#xff…

52、Qt/窗口、常用类、ui相关学习20240321

一、使用Qt 自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面。 要求&#xff1a; 1. 需要使用Ui界面文件进行界面设计 2. ui界面上的组件相关设置&#xff0c;通过代码实现 3. 需要添加适当的动图。 代码&#xff1a; #include "widget.h" #incl…

@Bean和@Component相似与区别

在Spring框架中&#xff0c;Bean和Component都是重要的注解&#xff0c;但它们之间存在一些明显的区别。 首先&#xff0c;它们的用途不同。Component是一个泛化的概念&#xff0c;用于标识一个普通的类&#xff0c;并将其声明为Spring组件。Spring可以扫描到配置了这个注解的…

两台不同账号同一区域阿里云服务器如何实现内网互通?

登录阿里云平台 [开通peer对等] 点击右上角的控制台&#xff0c;然后进行搜索专有网络VPC。 点击进入专有网络VPC界面操作步骤如下&#xff1a; &#xff08;1&#xff09;点击VPC对等连接&#xff0c;然后开通VPC对等连接后创建对等连接。 &#xff08;2&#xff09;在另…

霍夫变换找直线python代码以及从极坐标到笛卡尔坐标的转换

图像霍夫变换找直线 霍夫变换&#xff08;Hough Transform&#xff09;是图像分析中用于检测几何形状&#xff08;如直线、圆等&#xff09;的方法。最常用的是直线检测的霍夫变换&#xff0c;它可以从霍夫空间&#xff08;参数空间&#xff09;到笛卡尔空间&#xff08;图像空…

【计算机】——51单片机——持续更新

单片机是一种内部包含CPU、存储器和输入/输出接口等电路的集成电路&#xff08;IC芯片&#xff09; 单片机是单片微型计算机&#xff08;Single Chip Microcomputer&#xff09;的简称&#xff0c;用于控制领域&#xff0c;所以又称为微型控制器&#xff08;Microcontroller U…

【java基础】Java 的主要特性

Java语言是简单的 ● Java语言的语法与C语言和C语言很接近&#xff0c;使得大多数程序员很容易学习和使用。另一方面&#xff0c;Java丢弃了C中很少使用的、很难理解的、令人迷惑的那些特性&#xff0c;如操作符重载、多继承、自动的强制类型转换。特别地&#xff0c;Java语言不…

038—pandas 重采样线性插补

前言 在数据处理时&#xff0c;由于采集数据量有限&#xff0c;或者采集数据粒度过小&#xff0c;经常需要对数据重采样。在本例中&#xff0c;我们将实现一个类型超分辨率的操作。 思路&#xff1a; 首先将原始数据长度扩展为 3 倍&#xff0c;可以使用 loc[] 方法对索引扩…

OpenCV4.9.0开源计算机视觉库安装教程

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 引言&#xff1a;OpenCV系列文章中的安装部分今天全部完成了&#xff0c;为了读者更方便阅读&#xff0c;大家可以按下列索引前往&#xff0c;成文较为仓促有错漏在所难免&#xff0c;欢迎大家指正…

【C#】使用C#窗体应用开启/停止Apache、MySQL服务

目录 一、前言 二、效果图 三、配置文件 四、代码 五、一键启动/停止所有服务 一、前言 使用C#窗体应用开启Apache、MySQL服务&#xff0c;不仅仅是Apache、MySQL&#xff0c;其他服务也可以使用同样的方法操作&#xff0c;包括开启自己写的脚本服务。 二、效果图 两种状…

JavaSE—IO流之字符流

&#x1f4cc; 字符流中的常用类及基本方法&#xff1a; 输入字符流 Reader输出字符流 Writer ○ Reader 的基本方法&#xff1a; • 读取一个字符并以整数的形式返回, 如果返回-1已到输入流的末尾。 int read() throws IOException • 读取一系列字符并存储到一个数组buff…

BufferedInputStream解读

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java之IO流啦&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好习惯&am…

安卓Java面试题 206- 210

206. 简述如何统计Activity的工作时间 ?如何统计Activity启动所用的时间? 可以通过分析Log得到(这个就是DDMS的那个Log)。 当我们点击触摸时会了类似以下的Log A: 03-06 03:36:47.865: VERBOSE/InputDevice(2486): ID[0]=0(0) Dn (0=>1) 03-06 03:36:47.865: INFO/Powe…

继承和多态(2)(多态部分)

提前讲的重要知识点 一个类在没有父类的情况下默认有一个父类为Object类。 而当在有父类情况下&#xff0c;如果你那父类没有父类&#xff0c;则其父类的父类默认为object类&#xff0c;所以即使一个类有父类&#xff0c;其内部还是有object类。 object类都是隐藏起来的&…

[蓝桥杯 2023 省 A] 填空问题--幸运数

[蓝桥杯 2023 省 A] 填空问题 题目描述 A. 幸运数 小蓝认为如果一个数含有偶数个数位&#xff0c;并且前面一半的数位之和等于后面一半的数位之和&#xff0c;则这个数是他的幸运数字。例如 2314 2314 2314 是一个幸运数字&#xff0c;因为它有 4 4 4 个数位&#xff0c;并…

LangGraph 入门与实战

原文&#xff1a;LangGraph 入门与实战 - 知乎 大家好&#xff0c;我是雨飞。LangGraph 是在 LangChain 基础上的一个库&#xff0c;是 LangChain 的 LangChain Expression Language &#xff08;LCEL&#xff09;的扩展。能够利用有向无环图的方式&#xff0c;去协调多个LLM或…

【周总结】

周总结 完成项目混合版时区改造 完成相关jira问题的修改 完成老版本APP数据保存接口的兼容&#xff0c;手动赋值时区 2024/03/24 天气阴 一点不冷 1.Its time to go、Spring is coming&#xff01; 2. Its a nice day that staying with friends in a peaceful …