【CentOS8】使用 Tomcat 部署 Java Web 项目(使用 sdkman)

文章目录

    • 配置 Tomcat
    • 将 Tomcat 启动命令设置为 Linux 自定义服务
    • 给 Tomcat 设置管理员账号密码
    • IDEA 打包 Java web 项目

我是使用 sdkman 下载的 jdktomcat,所以接下来的部署配置都是在 sdkman 构建的环境的。想要知道如何下载 sdkman 可以看看这篇文章 — 使用 SDKMAN 管理多版本本地 Java 环境—Centos8 & Windows

配置 Tomcat

# 下载 tomcat
sdk install tomcat xxx# 授予权限
sudo chmod -R 775 /root/.sdkman/candidates/tomcat/# 启动 tomcat--cenrrent 目录下
bin/startup.sh
# 将出现
Using CATALINA_BASE:   /root/.sdkman/candidates/tomcat/current
Using CATALINA_HOME:   /root/.sdkman/candidates/tomcat/current
Using CATALINA_TMPDIR: /root/.sdkman/candidates/tomcat/current/temp
Using JRE_HOME:        /root/.sdkman/candidates/java/current
Using CLASSPATH:       /root/.sdkman/candidates/tomcat/current/bin/bootstrap.jar:/root/.sdkman/candidates/tomcat/current/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.# 本地访问默认为(有开启防火墙需要关闭防火墙或者开放 8080 端口) 8080-即本地 ip + :8080# 关闭 tomcat--cenrrent 目录下
bin/shutdown.sh

这个时候我们就可以通过虚拟机 ip:8080 就可以看到 tomcat 服务的默认页面了
在这里插入图片描述
出现这个页面就算成功了。

将 Tomcat 启动命令设置为 Linux 自定义服务

不过,现在的 tomcat 需要我们自己到 tomcat 目录下使用它的 startup.shshutdown.sh 进行启动和关闭,这就很麻烦,所以我们接下来就将 tomcat 在 centos 中进行设置为 service 服务。

/etc/init.d/ 目录下新建文件,命名为 tomcat

touch /etc/init.d/tomcat

将以下内容粘贴到 tomcat 文件中

#!/bin/bash
# description: Tomcat7 Start Stop Restart
# processname: tomcat7
# chkconfig: 234 20 80
JAVA_HOME=/root/.sdkman/candidates/java/current
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/root/.sdkman/candidates/tomcat/current
case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;; 
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;;   
esac 
exit 0

保存后设置 tomcat 的文件属性,将 tomcat 修改为可运行的文件

chmod a+x tomcat# 设置服务运行级别
chkconfig --add tomcat# 查看自定义服务
chkconfig --list# 将出现
tomcat          0:关    1:关    2:开    3:开    4:开    5:关    6:关# 可使用命令
service tomcat start
service tomcat stop
service tomcat restart# 或则使用
systemctl start tomcat
systemctl stop tomcat
systemctl status tomcat

查看状态是这样的就算成功了!
在这里插入图片描述

给 Tomcat 设置管理员账号密码

完成这个操作以后,我们回到 tomcat 本身上来。一般来说,tomcat 管理页面是进不去的,这是因为我们还没有配置管理员账号密码。
在这里插入图片描述

# 停止 tomcat 服务
systemctl stop tomcat# 修改配置文件
vi /current/conf/tomcat-users.xml# 可以看到该文件基本上都是注释,我们只需要在最后(最后一个标签里)以下代码:
<role rolename="manager"/>  
<role rolename="manager-gui"/>  
<role rolename="admin"/>  
<role rolename="admin-gui"/>  
<role rolename="manager-script"/>  
<role rolename="manager-jmx"/>  
<role rolename="manager-status"/>  
<user username="admin" password="admin" roles="admin-gui,admin,manager-gui,manager,manager-script,manager-jmx,manager-status"/> # 进入 webapps/manager/META-INF/context.xml
# 注释以下内容
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> --># 启动服务
systemctl start tomcat

tomcat-users.xml 修改后应该是这样的:
在这里插入图片描述
context.xml 修改后应该是这样的
在这里插入图片描述
配置完成后,我们再次点击进去没有错误,显示这样的就没有错误
在这里插入图片描述

IDEA 打包 Java web 项目

在 IDEA 中打开需要部署的项目,这里需要注意下:本地 tomcat 的端口需要和虚拟机上的 tomcat 开放的端口一致,我这里因为我虚拟机中开放的端口是 8080,所以我在 IDEA 直接配置 8080 端口了。
在这里插入图片描述
配置好端口以后,接下来就直接打包项目了
在这里插入图片描述
选择以后会弹出一个选择框
在这里插入图片描述
打包以后会生成一个压缩包,这个就是我们打包以后的产物
在这里插入图片描述
将这个压缩包复制到虚拟机中的 webapps 中即可在这里插入图片描述
然后刷新一下 tomcat 服务页面,就可以看见我们刚才上传的打包产物了
在这里插入图片描述
最后,进入这个路径检查一下
在这里插入图片描述
成功!

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

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

相关文章

cv2.error: OpenCV(4.7.0)

运行hsv脚本报错&#xff1a; cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function cv::cvtColor 解决方案&#xff1a; 这个错误信息是在使用OpenCV的cvtColor函…

计网实验7

解决&#xff1a;路由器用rip连接&#xff0c;主机通过域名访问&#xff0c;主机之间发送电子邮件 实验步骤 1.搞好部件 2.配好两台主机的ip,掩码&#xff0c;网关 3.连接一下两台主机&#xff0c;由于两台路由器没有连接&#xff0c;所以两台主机也无法连通&#xff0c;丢包率…

Flink优化——数据倾斜(二)

目录 数据倾斜 判断是否存在数据倾斜 数据倾斜的解决 KeyBy之前发生数据倾斜 KeyBy之后发生的数据倾斜 聚合操作存在数据倾斜 窗口聚合操作存在数据倾斜 数据倾斜 判断是否存在数据倾斜 相同 Task 的多个 Subtask 中&#xff0c;个别 Subtask 接收到的数据量明显大于其…

如何快速移植(从STM32F103到STM32F407)

最近用到F4的地方比较多&#xff0c;网上代码还是F1多一些&#xff0c;便需要移植代码&#xff0c;如何快速移植代码呢&#xff1f; 看下面这篇文章 外设 首先就是STM32的外设了。 STM32F407ZGT6的基本外设 STM32F407ZGT6 作为 MCU&#xff0c;该芯片是 STM32F407 里面配置…

价格突然上涨,anzo Capital跟着专业交易者这样做

当交易市场价格突然上涨&#xff0c;让anzo Capital跟着专业交易者&#xff0c;如何操作进行盈利。 我们就以每日BTCUSD价格图为例。锁定交易区用红色突出显示。接下来有一个绿色区域&#xff0c;标志着当时看涨的专业交易者执行的缺口。此外&#xff0c;交易量有所增加&#…

种群的设计(二)

重新复盘了一下种群的特性&#xff0c;除了内在参数外&#xff0c;种群也对应的兴奋性种群和抑制性种群&#xff0c;兴奋种群的神经元释放的脉冲能够增加后神经元的膜电位&#xff0c;而抑制性神经元则相反。那用程序语言描述就是 enum Population_type {EXC,INH };struct Syn…

Anaconda的虚拟环境

Anaconda是一个用于数据科学和机器学习的开源发行版&#xff0c;其中包含了许多常用的数据科学工具和库。虚拟环境&#xff08;Virtual Environment&#xff09;是Anaconda中的一个重要概念&#xff0c;它允许您在同一台机器上创建多个独立的Python环境&#xff0c;每个环境都可…

Python实现FA萤火虫优化算法优化XGBoost回归模型(XGBRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

【Python常用函数】一文让你彻底掌握Python中的numpy.all函数

大数据时代的到来,使得很多工作都需要进行数据挖掘,从而发现更多有利的规律,或规避风险,或发现商业价值。而大数据分析的基础是学好编程语言。本文和你一起来探索Python中的all函数,让你以最短的时间明白这个函数的原理。也可以利用碎片化的时间巩固这个函数,让你在处理工…

基于yolov2深度学习网络的人员跌倒检测识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 YOLOv2深度学习网络 4.2 人员跌倒检测识别原理 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 clc; clear; close all; warning off; a…

0基础学java-day15

一、泛型 1 泛型的理解和好处 1.1 看一个需求 【不小心加入其它类型&#xff0c;会导致出现类型转换异常】 package com.hspedu.generic;import java.util.ArrayList;/*** author 林然* version 1.0*/ public class Generic01 {SuppressWarnings("all")public st…

汽车网络安全--ISO\SAE 21434解析(二)

1.风险评估方法 书接上文,我们正式开始对车灯系统的TARA分析,首先回顾下整车关于车灯系统描述: 可以比较肯定的是,我们定义的item为车灯系统,因此可以看到上图中画出了item boundary;同时定义出运行环境,个人理解,这块就是为TARA分析提供足够的环境支撑,不管是直接还…

【keepalived】高可用神器,实现应用的自动主备切换

目录 1.概述 2.配置 3.效果 4.keepalived主备切换原理 5.联系作者 1.概述 什么是keepalived&#xff1a; keepalived是一个基于VRRP协议来实现的服务高可用方案。VRRP协议&#xff0c;即虚拟路由冗余协议&#xff0c;其一开始提出来是为了解决局域网中配置静态网关出现单…

CSS中区分行高,行间距

行高&#xff08;line height&#xff09; —文字占有的实际高度 —使用line-height来设置行高 行高类似于我们上学单线本&#xff0c;单线本是一行一行&#xff0c;线与线之间的距离就是行高&#xff0c;控制文字行与行之间的距离&#xff0c; 网页中的文字实际上也是写在一个…

Flink State 状态原理解析 | 京东物流技术团队

一、Flink State 概念 State 用于记录 Flink 应用在运行过程中&#xff0c;算子的中间计算结果或者元数据信息。运行中的 Flink 应用如果需要上次计算结果进行处理的&#xff0c;则需要使用状态存储中间计算结果。如 Join、窗口聚合场景。 Flink 应用运行中会保存状态信息到 …

IDEA加载阿里Java规范插件

IDEA加载阿里巴巴Java开发手册插件&#xff0c;在写代码的时候会自动扫描代码规范。 1、打开Settings 2、打开Plugins 3、搜索Alibaba Java Code Guidelines&#xff08;XenoAmess TPM&#xff09;插件&#xff0c;点击Install进行安装&#xff0c;然后重启IDE生效。 4、鼠标右…

测试新手百科:Postman简介、安装、入门使用方法详细攻略!

一、Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的&#xff0c;用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网…

要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 12 章:多选提示

要求CHATGPT高质量回答的艺术&#xff1a;提示工程技术的完整指南—第 12 章&#xff1a;多选提示 这种技术会向模型提出一个问题或任务&#xff0c;并将一组预定义的选项作为可能的答案。 该技术可用于生成仅限于特定选项集的文本&#xff0c;并可用于问题解答、文本补全和其…

记录一个困难(python)

在从一个网页跳转另一个网页&#xff08;该网页是登录页面&#xff09; 采用python的selenium库对网页进行自动化登录 import time from selenium import webdriver path chromedriver.exe driver webdriver.Chrome(path) driver.get("url") time.sleep(2) driver.f…

显存优化 Trick(gradient_accumulation、gradient_checkpointing、xformers)

目录 Out of MemoryGradient AccumulationGradient CheckpointingXformersDiffusers的显存优化 Out of Memory 先来说下OOM问题&#xff0c;其实也是日常会遇到的情况。模型申请的显存超过了设备实际显存大小&#xff0c;则会报错Out of Memory。一般情况下&#xff0c;batch …