Thingworx高可用集群部署(九)-Tomcat集群部署

主机:10.10.10.62、10.10.10.63、10.10.10.64、10.10.10.65

用户:root

创建目录

mkdir -p /data/tomcat9.0

解压安装包

cd /data/soft/pkgs
tar -xf apache-tomcat-9.0.48.tar.gz

移动到指定目录

mv apache-tomcat-9.0.48 /data/tomcat9.0/9.0.48

定义环境变量

vim /etc/environment
export JAVA_HOME=/usr/java/jdk-11.0.11
export CATALINA_HOME=/data/tomcat9.0/9.0.48
source /etc/environment

转到文件夹

cd /data/tomcat9.0/9.0.48

添加用户和用户组并更改权限

groupadd -r tomcat9.0
useradd -r -d /data/tomcat9.0 -g tomcat9.0 -s /bin/false tomcat9.0 
chown -R tomcat9.0:tomcat9.0 /data/tomcat9.0

赋予sudoer权限

vi /etc/sudoers
#root ALL=(ALL) ALL下添加
tomcat9.0 ALL=(ALL) ALL

更改bin/、 lib/和webapps/ 的所有者和访问权限

chown -Rh tomcat9.0:tomcat9.0 bin/ lib/ webapps/
chmod 775 bin/ lib/ webapps/

更改usr/share/tomcat9.0/9.0.xx的所有者和访问权限

chown -R tomcat9.0:tomcat9.0 /data/tomcat9.0/9.0.48
chmod -R 775 /data/tomcat9.0/9.0.48

更改conf/的所有者和访问权限

chown -Rh root:tomcat9.0 conf/
chmod -R 640 conf
chown -R tomcat9.0:tomcat9.0 /data/tomcat9.0/9.0.48
chmod -R 777 /data/tomcat9.0/9.0.48

更改logs/、 temp/和work/ 的访问权限

chown -R tomcat9.0:tomcat9.0 logs/ temp/ work/
chmod 760 logs/ temp/ work/

配置context

消对context.xml 中的Manager元素的注释,以防止会话在重新启动后持续存在。在文本编辑器(以 root 用户身份)中打开/data/tomcat9.0/9.0.xx/conf/context.xml并删除<Manager pathname="" />注释。

vim /data/tomcat9.0/9.0.48/conf/context.xml<!--<Manager pathname="" />
--><Manager pathname="" />

安装jsvc

将 Tomcat 设置为启动时启动的服务。首先,如果您的系统上尚未安装 JSVC(以 root 身份)

cd /data/tomcat9.0/9.0.48/bin/tar xvfz commons-daemon-native.tar.gzcd commons-daemon-*-native-src/unix​yum -y install gcc gcc-c++ make net-tools telnet unzip patch wget openssl openssl-devel pcre-devel./configure --with-java=$JAVA_HOMEmakecp jsvc ../..

配置Tomcat服务

touch /usr/lib/systemd/system/tomcat.service

在文本编辑器中(以 root 用户身份)打开/usr/lib/systemd/system/tomcat.service并粘贴以下内容

vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target[Service]
Type=forking
PIDFile=/var/run/tomcat.pid
Environment=HTTP_PORT=8888
Environment=IGNITE_WORK_DIR=/data/ignite/work
Environment=IGNITE_NO_SHUTDOWN_HOOK=true
Environment=CATALINA_PID=/var/run/tomcat.pid
Environment=JAVA_HOME=/usr/java/jdk-11.0.11
Environment=CATALINA_HOME=/data/tomcat9.0/9.0.48
Environment=CATALINA_BASE=/data/tomcat9.0/9.0.48
Environment=CATALINA_OPTS=ExecStart=/data/tomcat9.0/9.0.48/bin/jsvc \-Dcatalina.home=${CATALINA_HOME} \-Dcatalina.base=${CATALINA_BASE} \-Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dserver -XX:+UseNUMA \-XX:+UseG1GC -Dfile.encoding=UTF-8 \-Xms32G \-Xmx32G \-Djava.library.path=${CATALINA_BASE}/webapps/Thingworx/WEB-INF/extensions \-cp ${CATALINA_HOME}/bin/commons-daemon.jar:${CATALINA_HOME}/bin/bootstrap.jar:${CATALINA_HOME}/bin/tomcat-juli.jar \-user tomcat9.0 \-java-home ${JAVA_HOME} \-pidfile /var/run/tomcat.pid \-errfile ${CATALINA_HOME}/logs/catalina.out \-outfile ${CATALINA_HOME}/logs/catalina.out \$CATALINA_OPTS \org.apache.catalina.startup.Bootstrap[Install]
WantedBy=multi-user.target

配置tomcat setenv

在Tomcat中创建一个新文件sr/share/tomcat9.0/9.0.xx/bin 文件名为setenv.sh,并添加以下内容到文件中

touch /data/tomcat9.0/9.0.48/bin/setenv.sh
vim /data/tomcat9.0/9.0.48/bin/setenv.sh
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/data/tomcat9.0/9.0.48/webapps/Thingworx/WEB-INF/extensions"chown tomcat9.0:tomcat9.0 /data/tomcat9.0/9.0.48/bin/setenv.sh
chmod +x /data/tomcat9.0/9.0.48/bin/setenv.sh

设置 Tomcat开机自启动

systemctl daemon-reload
systemctl enable tomcat.service

配置tomat错误页面

在Tomcat安装位置,打开CATALINA_HOME/conf/web.xml替换默认错误页面(默认为stacktrace)。将以下内容放在web-app标签中(在welcome-file-list标签之后):

vim $CATALINA_HOME/conf/web.xml
<error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location></error-page>

配置tomcat端口

在 Tomcat 安装位置,打开CATALINA_HOME/conf/server.xml。在<Host> </Host>标签中添加以下内容:

vim $CATALINA_HOME/conf/server.xml

端口:8888

<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />

注释JSP

在Tomcat安装位置,打开conf/server.xml,搜索下面一行。如果找到,将其注释掉并保存文件: < Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

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

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

相关文章

如何把PNG图片转换成CAD图纸DWG格式

环境&#xff1a; CAD2021 PNG图片 问题描述&#xff1a; 如何把PNG图片转换成CAD图纸DWG格式 解决方案&#xff1a; 将PNG图像转换为CAD文件&#xff08;如DXF或DWG格式&#xff09;是设计和工程领域中常见的需求之一。幸运的是&#xff0c;有几种工具和软件可以帮助完成…

【考研数学】跟张宇,一看就会,一做就废,换老师有用吗?

宇哥的1000题其实很多同学在刷的时候都会觉得有点吃力&#xff0c;特别是基础不是很牢固一类的 我的感觉是如果基础很差的按照宇哥的做法可能会没有什么思路&#xff0c;基础题可能有的都分析不出来 张宇的30讲还是不太适合零基础的考研党去听...因为宇哥整体节奏较快&#x…

阿里云CentOS7安装ZooKeeper单机模式

前提条件 阿里云CentOS7安装好jdk&#xff0c;可参 hadoop安装 的jdk安装部分 下载 [hadoopnode1 ~]$ cd softinstall [hadoopnode1 softinstall]$ wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz 解压 [hadoopnode1 …

全网最全的幻兽帕鲁服务器价格表查询系统,一键报价

2024年全网最全的幻兽帕鲁服务器租用价格表&#xff0c;阿里云幻兽帕鲁游戏服务器26元1个月、腾讯云32元一个月、京东云26元一个月、华为云24元1个月&#xff0c;阿腾云atengyun.com整理最新幻兽帕鲁专用4核16G、8核16G、8核32G游戏服务器租用价格表大全&#xff1a; 阿里云幻…

智驾芯片“独角兽”地平线流血冲刺上市,三年累计亏损47亿元

3月26日&#xff0c;Horizon Robotics&#xff08;下称“地平线”&#xff09;向港交所递交招股书&#xff0c;高盛、摩根士丹利、中信建投国际为其联席保荐人。 据介绍&#xff0c;成立于2015年的地平线是一家人工智能计算平台公司&#xff0c;专注于为智能汽车提供高级辅助驾…

算法---动态规划练习-8(打家劫舍2)

打家劫舍2 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;点这里 2. 讲解算法原理 首先&#xff0c;给定一个非负整数数组 nums&#xff0c;其中 nums[i] 表示第 i 家的财物价值。 定义两个辅助数组 f 和 g&#xff0c;长度都为 n&#xff08;n 是…

【FedCoin: A Peer-to-Peer Payment System for Federated Learning】

在这篇论文中&#xff0c;我们提出了FedCoin&#xff0c;一个基于区块链的点对点支付系统&#xff0c;专为联邦学习设计&#xff0c;以实现基于Shapley值的实际利润分配。在FedCoin系统中&#xff0c;区块链共识实体负责计算SV&#xff0c;并且新的区块是基于“Shapley证明”&a…

自定义类型:【结构体】

我们知道C语言中有许多的类型&#xff0c;比如char&#xff0c;short&#xff0c;int等等类型。像是这些C语言本身就支持的类型叫做内置类型&#xff0c;但是有一些复杂对象&#xff0c;只有这些类型是完全不够的。比如人&#xff0c;或者一本书。那么我们就可以自己定义一些类…

mysql--事务四大特性与隔离级别

事务四大特性与隔离级别 mysql事务的概念事务的属性事务控制语句转账示例 并发事务引发的问题脏读脏读场景 不可重复读幻读幻读场景 事务的隔离级别读未提交读已提交可重复读&#xff08;MySQL默认&#xff09; 总结 mysql事务的概念 事务就是一组操作的集合&#xff0c;他是一…

鸿蒙OS开发实例:【手撸服务卡片】

介绍 服务卡片指导文档位于“开发/应用模型/Stage模型开发指导/Stage模型应用组件”路径下&#xff0c;说明其极其重要。 本篇文章将分享实现服务卡片的过程和代码 准备 请参照[官方指导]&#xff0c;创建一个Demo工程&#xff0c;选择Stage模型 鸿蒙OS开发更多内容↓点击…

面试经典150题【111-120】

文章目录 面试经典150题【111-120】67.二进制求和190.颠倒二进制位191.位1的个数136.只出现一次的数字137.只出现一次的数字II201.数字范围按位与5.最长回文子串97.交错字符串72.编辑距离221.最大正方形 面试经典150题【111-120】 六道位运算&#xff0c;四道二维dp 67.二进制…

PCB损耗来源

信号经过PCB板会产生损耗&#xff0c;主要包括导体损耗&#xff0c;介电损耗和辐射损耗 导体损耗&#xff1a;导体损耗是由于电流流动过程中产生电阻损耗而发热。 介电损耗&#xff1a;介电损耗是由于电场通过介质时分子的交替极化和晶格碰撞造成的。 辐射损耗&#xff1a;辐…

YOLOv9 实战指南:打造个性化视觉识别利器,从零开始训练你的专属测试集

论文地址&#xff1a;YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information GitHub&#xff1a;WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information (github.com)…

Linux---多线程(下)

前情提要&#xff1a;Linux---多线程(上) 七、互斥 临界资源&#xff1a;多线程执行流共享的资源就叫做临界资源临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区互斥&#xff1a;任何时刻&#xff0c;互斥保证有且只有一个执行流进入临…

PL/SQL的词法单元

目录 字符集 标识符 分隔符 注释 oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 PL/SQL块中的每一条语句都必须以分号结束。 一个SQL语句可以跨多行&#xff0c;但分号表示该语句的结束:一行中也可以有多条 SQL语句&…

3.28(迭代搜索算法 + java学习总结)

迭代加深搜索 迭代加深算法是一在DFS的基础上添加搜索深度限制的搜索方法&#xff1b; 其核心思想是从深度为0的地方开始搜索&#xff0c;然后逐步加深搜索深度&#xff0c;重新搜索一遍&#xff1b;这对于那些已知答案在浅层&#xff0c;但整个树或图存在极多分支的情况&#…

【前端Vue】HR-saas中台项目开发md文档第1篇:vuex基础-介绍,vuex基础-初始化功能【附代码文档】

HR-saas中台管理项目开发完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;vuex基础-介绍,vuex基础-初始化功能,vuex基础-state,vuex基础-mutations,vuex基础-actions,vuex基础-getters。项目课设计&#xff0c;人力资源的环境搭建vue-element-admin的了解和…

[flask]http请求//获取请求头信息+客户端信息

在网站中查询请求头信息&#xff0c;可以通过以下操作进行 右键然后选择检查 进入改页面后选择文档&#xff0c;刷新一下页面就好了 获取所有的请求头信息 print(request.headers, type(request.headers)) 在flask模块中&#xff0c;使用上面的输出函数就可以查看到有关于请求…

Qt 窗口MainWindow(上)

Qt 窗口是通过 QMainWindow 类来实现的。 QMainWindow 是一个为用户提供主窗口程序的类&#xff0c;继承自 QWidget 类&#xff0c;并且提供了⼀个预定义的布局。QMainWindow 包含一个菜单栏&#xff08;menubar&#xff09;、多个工具栏(toolbars)、多个浮动窗口&#xff08;…

第十四届蓝桥杯JavaA组省赛真题 - 特殊日期

解题思路&#xff1a; 暴力秒了 public class Main {public static void main(String[] args) {int cnt 0;for (int i 1900; i < 9999; i) {for (int j 1; j < 12; j) {for (int k 1; k < days(i, j); k) {if (sum(i) sum(j) sum(k)) cnt;}}}System.out.print…