当前位置: 首页 > news >正文

tomcat的安装,管理与配置

目录

Tomcat 服务部署

1.关闭防火墙,将安装 Tomcat 所需软件包上传到虚拟机

2.安装JDK

3.设置JDK环境变量

4.安装启动Tomcat

5.启动tomcat

6.优化tomcat启动速度

Tomcat 服务管理

systemd 管理控制

supervisor 管理控制

Tomcat 虚拟主机配置

1.创建 sunny101 和 sunny102 项目目录和文件

2.修改 Tomcat 主配置文件 server.xml

3.客户端浏览器访问验证

Tomcat多实例部署

2.配置 tomcat 环境变量

3.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号

4.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量

5.启动各 tomcat 中的 /bin/startup.sh

6.浏览器访问测试


Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目。

Tomcat 属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。一般来说,Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样,具有处理 HTML 页面的功能,然而由于其处理静态 HTML 的能力远不及 Apache 或者 Nginx,所以 Tomcat 通常是作为一个 Servlet 和 JSP 容器,单独运行在后端。

Tomcat 由一系列的组件构成,其中核心的组件有三个:Web 容器,Servlet 容器和JSP 容器

Tomcat 服务部署

在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。

1.关闭防火墙,将安装 Tomcat 所需软件包上传到虚拟机

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

apache-tomcat-8.5.16.tar.gz,jdk-8u391-linux-x64.rpm

2.安装JDK

图形化界面自带(可以删除后重新安装)

rpm -ivh jdk-8u391-linux-x64.rpm
java -version

3.设置JDK环境变量

vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/jdk1.8.0-x64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

source /etc/profile.d/java.sh

可用 which java 查找Java的安装目录

java环境测试

vim Hello.java

javac Hello.java
java Hello

4.安装启动Tomcat

tar -xf apache-tomcat-8.5.16.tar.gz

mv apache-tomcat-8.5.16 /usr/local/tomcat

5.启动tomcat

后台启动

方法一

/usr/local/tomcat/bin/startup.sh

方法二

/usr/local/tomcat/bin/catalina.sh start

前台启动

/usr/local/tomcat/bin/catalina.sh run

网页访问Tomcat的默认主页 http://192.168.110.60:8080

6.优化tomcat启动速度

第一次启动tomcat可能会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。

vim /usr/java/jdk1.8.0-x64/jre/lib/security/java.security

重启

/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh 

Tomcat 服务管理

systemd 管理控制

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

[Unit]
Description=tomcat server
Wants=network-online.target
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0-x64"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

可以通过systemctl命令管理tomcat

supervisor 管理控制

supervisor是Python开发的c/s服务,是Linux系统下的进程管理工具。可以监听、启动、停止、重启一个或多个进程。用supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便的做到进程的自动恢复的功能,不在需要自己写脚本来控制。

1.使用yum安装supervisor

yum install -y supervisor

2.修改配置文件

使用yum安装的supervisor会在/etc/会生成一个supervisor.conf文件及一个supervisor.d文件目录

vi /etc/supervisord.conf

也可使用sed -i 's/;chmod=0700/chmod=0766/g' /etc/supervisord.conf修改

也可使用

sed -i '$a [include] \files = /etc/supervisord.d/*.conf' /etc/supervisord.conf

3.supervisor管理服务有两种设置方式

方法一

在 /etc/supervisord.conf 文件中添加

[program:tomcat]
command=/usr/local/tomcat/bin/catalina.sh run
autostart=true
startsecs=10
autorestart=true
startretries=3
user=root
priority=999
redirect_stderr=true
stdout_logfile_maxbytes=200MB
stdout_logfile_backups=20
; stdout
stdout_logfile=/var/log/supervisor/logs/catalina.out
stopasgroup=false
killasgroup=false
environment=JAVA_HOME=/usr/java/jdk1.8.0-x64

方法二

在etc/supervisord.d/目录下创建

vim /etc/supervisord.d/nginx.conf

[program:nginx]
command=/usr/local/nginx/sbin/nginx -g 'daemon off;'
stdout_logfile=/var/log/supervisor/nginx_run.log
stderr_logfile=/var/log/supervisor/nginx_error.log
autostart=true
startsecs=10
autorestart=true
startretries=1
user=root
priority=998
stdout_logfile_maxbytes=200MB
stdout_logfile_backups=20
stopasgroup=true
killasgroup=true
redirect_stderr=true

4.创建存放日志的目录(重要,一定要建立)

mkdir -p /var/log/supervisor/logs/

5.启动supervisord

systemctl start supervisord
systemctl enable supervisord

或者

supervisord -c /etc/supervisor.conf

supervisor常用命令(注意要在服务关闭后再使用supervisord开启管理)

supervisorctl是supervisord的命令行工具

查看所有进程的状态supervisorctl status


停止进程:supervisorctl stop <name>  

   
启动进程:supervisorctl start <name>    


重启进程:supervisorctl restart <name>  
配置文件修改后可以使用该命令加载新的配置:supervisorctl update          
重新启动配置中的所有程序:supervisorctl reload          

nginx状态:supervisorctl status nginx
停止nginx:supervisorctl stop nginx
启动nginx:supervisorctl start nginx
重启nginx:supervisorctl restart nginx
重载nginx:supervisorctl reload nginx

测试supervisord的自动恢复的功能

Tomcat 虚拟主机配置

很多时候公司会有多个项目需要运行,一般不会是在一台服务器上运行多个 Tomcat 服务,这样会消耗太多的系统资源。此时, 就需要使用到 Tomcat 虚拟主机。

例如现在新增两个域名 www.sunny101.com 和 www.sunny.com, 希望通过这两个域名访问到不同的项目内容。

1.创建 sunny101 和 sunny102 项目目录和文件

mkdir /usr/local/tomcat/webapps/sunny101

mkdir /usr/local/tomcat/webapps/sunny102

echo "This is sunny101 page!" > /usr/local/tomcat/webapps/sunny101/index.jsp

echo "This is sunny102 page!" > /usr/local/tomcat/webapps/sunny102/index.jsp

2.修改 Tomcat 主配置文件 server.xml

vim /usr/local/tomcat/conf/server.xml

<Host name="www.sunny101.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/sunny101" path="" reloadable="true" />
 </Host>

<Host name="www.sunny102.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/sunny102" path="" reloadable="true" />

重启

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

3.客户端浏览器访问验证

修改hosts文件

网页访问

Tomcat多实例部署

1.创建tomcat1,2

tar -xf apache-tomcat-8.5.16.tar.gz

mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1

cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2

2.配置 tomcat 环境变量

vim /etc/profile.d/tomcat.sh

#tomcat1
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1

#tomcat2
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2

source /etc/profile.d/tomcat.sh

3.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号

vim /usr/local/tomcat/tomcat2/conf/server.xml

4.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量

export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1

vim /usr/local/tomcat/tomcat1/bin/shutdown.sh

vim /usr/local/tomcat/tomcat2/bin/startup.sh

vim /usr/local/tomcat/tomcat2/bin/shutdown.sh

5.启动各 tomcat 中的 /bin/startup.sh

/usr/local/tomcat/tomcat1/bin/startup.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

netstat -natp | grep java

6.浏览器访问测试

http://www.sunny101.com:8080

http://192.168.110.60:8081/

相关文章:

  • ECMAScript与Python、Java和C++比较的详细的代码案例
  • Excel中查找某个值的位置,用位置取值
  • 浅谈stm32的GPIO引脚配置模式
  • 在Ubuntu 16.04上安装Virtualmin与Webmin、LAMP、BIND和PostFix的方法
  • Swagger配置且添加小锁(asp.net)(笔记)
  • 遥感图像语义分割数据集制作(使用ArcGIS Pro)
  • 只申请一块sizeofimage的内存能否实现PE文件的拉伸
  • 【PyTorch】生成对抗网络
  • C++游戏开发详解:从入门到实践
  • c++primier第十二章类和动态内存
  • openKylin--安装 .net6.0
  • 锁住K8S集群版本和系统内核版本
  • 生产环境升级mysql流程及配置主从服务
  • 【深度学习】ubuntu系统下docker部署cvat的自动标注功能(yolov8 segmentation)
  • 投影算子 Projection
  • 分享的文章《人生如棋》
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 5、React组件事件详解
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Angularjs之国际化
  • C# 免费离线人脸识别 2.0 Demo
  • Create React App 使用
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • leetcode46 Permutation 排列组合
  • React 快速上手 - 07 前端路由 react-router
  • SpringBoot 实战 (三) | 配置文件详解
  • sublime配置文件
  • vuex 笔记整理
  • 番外篇1:在Windows环境下安装JDK
  • 关于Flux,Vuex,Redux的思考
  • 好的网址,关于.net 4.0 ,vs 2010
  • 精彩代码 vue.js
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 聊聊redis的数据结构的应用
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 使用SAX解析XML
  • 无服务器化是企业 IT 架构的未来吗?
  • 函数计算新功能-----支持C#函数
  • #define用法
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #控制台大学课堂点名问题_课堂随机点名
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (一) springboot详细介绍
  • (一)基于IDEA的JAVA基础1
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)jQuery 基础
  • (转)程序员技术练级攻略
  • ..回顾17,展望18
  • .net core Redis 使用有序集合实现延迟队列