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

news/2024/4/28 14:30:42/文章来源:https://blog.csdn.net/weixin_39973810/article/details/136943169

在这篇指南中,我们将一步步介绍如何在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.luyixian.cn/news_show_1026957.aspx

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

相关文章

高防DNS和高防IP一样吗?

高防DNS和高防IP在功能和目标上有所不同,因此它们并不完全相同。 高防DNS是一种针对DNS服务的防护措施,旨在保护域名解析免受DDoS攻击等网络威胁的影响。它利用高防服务器和高防机房的资源,对无效流量进行清洗,保障DNS服务器的安…

零基础学习挖掘PHP网站漏洞

教程介绍 本套课程,分为三个阶段:第一阶段:基础篇 学习PHP开发的基础知识,对PHP常见的漏洞进行分析,第二阶段:进阶篇 实战PHP漏洞靶场,了解市面上的PHP主流网站开发技术,并对市面上…

图解MySQL目录

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 一 .图解MySQL介绍 重点突击 MySQL 索引、事务、锁、日志等面试常问知识。 二 . 基础篇 执行一条 select 语句,期间发生了什么? : 执行一条 select 语句,期间发生了什…

SQL的事务及其ACID属性

目录 SQL中的事务简介事务和ACID属性SQL事务中的关键命令示例SQL事务的隔离层级1. 未提交读取2. 提交后读取3. 可重复读取4. 可序列化脏读、不可重复读或虚读脏读取不可重复读取(未提交读取)虚读取推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速…

使用express Vue+Node搭建的网上购物商城

前言 项目采用的技术栈: VueNodeMySQL 前端:用Vue-cli搭建,使用Vue全家桶element-ui 后端:express框架 数据库:MySQL 一、功能 普通用户 注册、登录(图形验证码)定位 (腾讯地图定位功能&#…

查找中常见的树数据结构

查找中常见的树数据结构 一、排序二叉树二、平衡二叉树三、红黑树(自平衡二叉树)四、B树五、B树 在动态查找中常见的树相关的数据结构包括: 排序二叉树(Binary Search Trees)平衡二叉树(AVL Trees&#xff…

ssh 公私钥

一、生成ssh公私钥 生成自定义名称的SSH公钥和私钥对,需要使用ssh-keygen命令,这是大多数Linux和Unix系统自带的标准工具。下面,简单展示如何使用ssh-keygen命令来生成具有自定义名称的SSH密钥对。 步骤 1: 打开终端 首先,打开我…

鸿蒙HarmonyOS应用开发之在NDK工程中使用预构建库

在NDK工程中,可以通过CMake语法规则引入并使用预构建库。在引用预构建库时,模块libs目录中的预构建库,以及在CMakeList.txt编译脚本中声明的预构建库都会被打包。 例如在项目中需要使用预构建库libavcodec_ffmpeg.so,其开发态存放…

【数据库管理操作】Mysql 创建学生数据库及对数据表进行修改

MySQL 创建学生成绩数据库 1.创建数据库 create database studentscore;创建完成之后,如果需要使用该数据,使用use命令 use studentscore;创建表前查看当前数据库中包含的表 show tables; 2.创建bclass表 create table bclass( class_id char(8) …

蓝桥杯刷题day09——霓虹【算法赛】

一、问题描述 晚上,小蓝正无聊的走在大路上,小蓝所在的街区是—个带有赛博朋克风格的街区。 他抬头—看,看到了很多霓虹灯牌。在其中的某一个店铺前,挂着一排的数字灯牌,每一个数字的显示都依靠7段LED管,亮着的灯管组成数字,具体来说如下图所示: 小蓝刚学过数字电路,他…

数据库系统概论-第3章 关系数据库标准语言SQL

3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 空值的处理 3.7 视图 3.8 小结

Java_19 罗马数字转整数

罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1…

vue3+threejs新手从零开发卡牌游戏(十三):上场手牌添加攻击力文字

在utils/common.ts下新建渲染场上手牌文字方法: // 渲染场上手牌文字 const renderSiteCardText (mesh: any, font: any) > {return new Promise((resolve, reject) > {let pos mesh.positionconst geometry new TextGeometry( ATK ${mesh.userData._ATK}…

蓝桥杯2023省赛:矩阵总面积|模拟、数学(几何)

题目链接: 0矩形总面积 - 蓝桥云课 (lanqiao.cn) 说明: 参考文章:矩形总面积计算器:计算两个矩形的总面积,包括重叠区域_矩形r1的左下角坐标为x1, yl 、宽度为w1、高度为h1, 矩形r2的左下角坐标为x2,y2、宽-CSDN博客…

面试算法-93-交错字符串

题目 给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串 &#xff1a; s s1 s2 … sn t t1 t2 … tm |n - m| < 1 交错…

如何用联合(共用体)union验证系统大小端

一&#xff1a;思路 由联合体的特点&#xff0c;可知上图&#xff0c;char c 和 int i 共用四个字节&#xff0c;假设是小端&#xff0c;则由左到右是低地址到高地址&#xff0c;四个字节的内容如图所示01 00 00 00 代码展示&#xff1a; 如果第一个字节是1&#xff0c;则证明…

爱上数据结构:顺序表和链表

一、线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条…

NAT---网络地址转换技术

Network Address Translation 1、起源&#xff1a;ip地址不够用 2、作用&#xff1a;让私网地址映射成公网地址&#xff0c;进而访问网络。 3、私网Ip地址的范围&#xff1a; A类&#xff1a;10.0.0.0-10.255.255.255 B类&#xff1a;172.16.0.0-172.31.255.255 C类&…

Vue3更新Package.json版本号

由于我之前已经更新过了&#xff0c;下面的方法提示我已经是最新的了&#xff0c;记录一下&#xff0c;过段时间在测试一下 npm install -g vue/clivue upgrade

数据库被.[Goodmorningfriends@onionmail.org].faust勒索病毒加密,能恢复吗?

.faust勒索病毒有什么特点及危害&#xff1f; .faust勒索病毒是一种恶意软件&#xff0c;以其复杂的加密技术和勒索行为而闻名。这种病毒的主要目标是通过加密受害者的数据文件&#xff0c;然后勒索赎金以解密这些文件。它通常通过恶意附件、恶意链接或潜在的不安全下载源传播&…