tomcat安装及使用详解(代码片段)

machangwei-8 machangwei-8     2023-03-09     433

关键词:

 

  常用软件安装及使用目录

 

资料链接:https://pan.baidu.com/s/1XOUlneFqt-_1tOLSmc-E1g     网盘分享的文件在此

1. Tomcat简介

Tomcat是一个web服务器

web服务器:httpdnginx

web 处理静态文件:html cssjsjpgpng

Tomcat 处理 html文件

php软件解析php文件

jdk处理jsp文件

tomcat+JDK

JDK java开发者工具包

java 写一次,处处使用

jdk  java虚拟机

跨平台

2. tomcat软件版本选择

生产环境版本和开发协商

tomcatjdk版本要并行  tomcat8 -- jdk 8  

3. 安装JDK(以后所有涉及到java应用都需要安装)

环境 hostname web03   ip 10.0.0.17/172.16.1.17

mkdir -p /application/tools/

技术图片

tar xf jdk-8u60-linux-x64.tar.gz -C /application/
ln -s /application/jdk1.8.0_60 /application/jdk

sed -i.ori $a export JAVA_HOME=/application/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar /etc/profile

/etc/profile
source /etc/profile
java -version

技术图片

4. 安装tomcat

 

tar xf apache-tomcat-8.0.27.tar.gz -C /application/
ln -s /application/apache-tomcat-8.0.27 /application/tomcat
echo export TOMCAT_HOME=/application/tomcat>>/etc/profile
source /etc/profile
chown -R root.root /application/jdk/ /application/tomcat/

 

 

/application/tomcat/bin/version.sh

技术图片

5. tomcat的目录结构

 

[[email protected] tools]# cd /application/tomcat/
[[email protected] tomcat]# tree -L 1
.
├── bin  startup.sh shutdown.sh catalina.sh(核心)
├── conf  server.xml(主配置文件) tomcat-users.xml
├── lib
├── LICENSE
├── logs 日志目录  catalina.out tomcat实时日志
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp
├── webapps  站点目录
└── work
7 directories, 4 files
6. 启动关闭tomcat
/application/tomcat/bin/startup.sh
/application/tomcat/bin/shutdown.sh
netstat -tunlp|grep java

 

访问http://10.0.0.17:8080/  

技术图片

冒号中文无法显示

6、遇到tomcat启动慢的问题:

1.现象

CentOS7启动Tomcat时,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的。TocmatSession ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥。为了提高安全性Tomcat在启动的时候会通过随机生成一个密钥。

22-Apr-2017 19:33:07.623 INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of

 SecureRandom instance for session ID generation using [SHA1PRNG] took [55,507] milliseconds.

22-Apr-2017 19:33:07.653 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web appli

cation directory /application/apache-tomcat-8.0.27/webapps/ROOT has finished in 55,935 ms

主要原因是生成随机数的时候卡住了,导致tomcat启动不了。

是否有足够的熵来用于产生随机数,可以通过如下命令来查看

[[email protected] tools]# cat /proc/sys/kernel/random/entropy_avail

为了加速/dev/random提供随机数的速度,你可以通过操作设备的外设,让其产生大量的中断(如网络传输数据,按键,移动鼠标,在命令行敲几个不同的命令,俗称聚气。

cat /dev/random 会消耗能量

方法1

vim $JAVA_HOME/jre/lib/security/java.security

securerandom.source=file:/dev/random

改为

securerandom.source=file:/dev/urandom

方法2

vim $TOMCAT_HOME/bin/catalina.sh

if [[ "$JAVA_OPTS" != *-Djava.security.egd=* ]]; then

    JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom"

fi

这个系统属性egd表示熵收集守护进程(entropy gathering daemon)

方法3:(推荐)

yum install rng-tools # 安装rngd服务(熵服务,增大熵池)

systemctl start rngd  # 启动服务

7. tomcat 管理功能

 

vim /application/tomcat/conf/tomcat-users.xml
[[email protected] webapps]# tail -4 /application/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
</tomcat-users>
/application/tomcat/bin/shutdown.sh
/application/tomcat/bin/startup.sh

 

从管理网页可以上传war包,因为是root用户,别人可以上传木马病毒,所以不安全,不建议生产环境使用web界面,不建议公网访问web界面,不安全。测试环境可以给开发使用,省事

技术图片

http://10.0.0.17:8080/memtest/meminfo.jsp

8.Tomcat主配置文件

 

vim /application/tomcat/conf/server.xml
#三个端口
    <Server port="8005" shutdown="SHUTDOWN"> 
#将shutdown 传给8005会直接停掉tomcat,不安全,可以改掉SHUTDOWN这个默认口令
#echo shutdown|nc 10.0.0.17 8805
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

    <!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" 

/>-->

 

9. 自定义url规则(nginx location

 

cp /application/tomcat/conf/server.xml,.ori

 

 

cp /application/tomcat/conf/server.xml,.ori

vim /application/tomcat/conf/server.xml +125

<Context path="" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>

<Context path="/40team" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>

/application/tomcat/bin/shutdown.sh
/application/tomcat/bin/startup.sh

访问并测试:http://10.0.0.17:8080/meminfo.jsp

http://10.0.0.17:8080/

http://10.0.0.17:8080/40team/meminfo.jsp

# 相当于nginx server root html;

=============

nginx  location

root html

location   /

location  /oldboy/

  root /data/oldboy/

=====

      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

<Context path="" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>

<Context path="/40team" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>

技术图片

1应该是虚拟主机 ,2是默认站点目录,不建议直接修改站点目录,想让服务器访问指定目录可以用类似nginxlocation的功能,如下。34war包在站点目录下自动解压的配置   5是相当于locationp匹配/,后面6是相当于 root  html; 即是访问的目录。7是访问这个目录时自动定位到目录8去,由此可以知道,访问的目录并不一定是真实存在的,有可能是重定位的,这样一来,站点目录结构的安全性能够得到加强,

比较差别:

 

diff /application/tomcat/conf/server.xml,.ori

技术图片

技术图片

10. 搭建Jpress

类似wordpess博客站点

环境:Linux Tomcat JDK MySQL(Mariadb)

yum -y install mariadb-server
systemctl start mariadb.service
mysql
create database jpress DEFAULT CHARACTER SET utf8;
grant all on jpress.* to [email protected]localhost identified by 123456;

上传jpresswar到站点目录/application/tomcat/webapps  下,由于tomcat主配置文件设置,他会自动解压war包,当然只要解压包目录还在,内容无论有没有,就不会重新解压

技术图片

访问目录 http://10.0.0.17:8080/jpress-web-newest/

技术图片

技术图片

/application/tomcat/bin/shutdown.sh
/application/tomcat/bin/startup.sh

首页:  http://10.0.0.17:8080/jpress-web-newest/
管理页:  http://10.0.0.17:8080/jpress-web-newest/admin

jpress bug,要先启数据库,不然tomcat的日志会在开机时一直报错,然后过一段时间磁盘空间全被填满

 

mv jpress-web-newest/* /tmp/jpress

 

11.参考资料

JAVA企业级应用TOMCAT实战   http://blog.oldboyedu.com/java-tomcat/ 

原文链接:http://www.zyops.com/java-tomcat

 

1. Tomcat多实例

多虚拟主机:nginx 多个Server标签(域名,ip,端口)  进程数量固定 master+worker

多实例(多进程):同一个程序启动多次,分为两种情况:第一种:一台机器跑多个站点;第二种:一个机器跑一个站点多个实例,配合负载均衡

 

cd /application/tools/
tar xf apache-tomcat-8.0.27.tar.gz
cp -a apache-tomcat-8.0.27 tomcat8_1
cp -a apache-tomcat-8.0.27 tomcat8_2
sed -i s#8005#8011#;s#8080#8081# tomcat8_1/conf/server.xml
sed -i s#8005#8012#;s#8080#8082# tomcat8_2/conf/server.xml
diff tomcat8_1/conf/server.xml tomcat8_2/conf/server.xml

 

# 将多实例tomcat模板打包备用

tar zcf muti_tomcat8.tar.gz ./tomcat8_1 ./tomcat8_2
cp -a tomcat8_1 tomcat8_2 /application/

/application/tomcat8_1/bin/startup.sh
/application/tomcat8_2/bin/startup.sh

netstat -tunlp|grep java

技术图片

# 将每个实例的网页差异化

echo 8081 >>/application/tomcat8_1/webapps/ROOT/index.jsp 
echo 8082 >>/application/tomcat8_2/webapps/ROOT/index.jsp 

2. Tomcat反向代理集群

nginx反向代理:LNMP机器  tomcat

Nginx + LNMP机器

 

upstream server_pools
   server 10.0.0.7:80;
   server 10.0.0.8:80;

 

server

……

   location /

   ……

     proxy_pass http://server_pools;

   

 

 

 

Nginx + Tomcat

 

upstream server_pools

   server 10.0.0.17:8081;

   server 10.0.0.17:8082;

   server 10.0.0.18:8081;

   server 10.0.0.18:8082;  

 

server

……

   location /

   ……

     proxy_pass http://server_pools;

   

 

 

 

CentOS6 CentOS7 融合

 

# CentOS6lb01操作

 

mv /application/nginx/conf/nginx.conf,.ori
egrep -v #|^$ /application/nginx/conf/nginx.conf.default  > /application/nginx/conf/nginx.conf

 技术图片

[[email protected] ~]# cat /application/nginx/conf/nginx.conf
worker_processes  1;
events 
    worker_connections  1024;

http 
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream web_pools 
        server 10.0.0.17:8081;
        server 10.0.0.17:8082;
    
    server 
        listen       80;
        server_name  localhost;
        location / 
             root   html;
             index  index.jsp index.html index.htm;
         proxy_pass http://web_pools;
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html 
            root   html;
        
    

3. Tomcat监控

jps -lvm   

排除tomcat故障步骤:

a. 查看catalina.out

技术图片

b. sh show-busy-java-threads.sh       ============       

远程监控tomcat

windows软件监控            先安装Java C:Program FilesJavajdk1.8.0_31in

zabbix 监控

技术图片

3.1 tomcat开启远程监控功能

 

vim /application/tomcat8_1/bin/catalina.sh +97

CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=12345  
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Djava.rmi.server.hostname=10.0.0.17"

echo "10.0.0.17 web03" >>/etc/hosts
 
/application/tomcat8_1/bin/shutdown.sh 
/application/tomcat8_1/bin/startup.sh 
netstat -tunlp|grep 12345

 技术图片

技术图片

右击

技术图片

3.2 zabbix监控tomcat

3.2.1 zabbix Server 需要开启java监控功能(做1次)

 

sed -i -e 220a JavaGateway=127.0.0.1 -e 236a StartJavaPollers=5 /etc/zabbix/zabbix_server.conf

systemctl restart zabbix-server.service

sed -e 可以执行多条命令,a后面不能用;会被当成字符加进去的

zabbix c ,tomcat java ,javagateway 翻译官

 

3.2.2 安装zabbix_java_gateway(java程序),也需要jdkopenjdk)  (做1次)

yum  install zabbix-java-gateway
systemctl start zabbix-java-gateway.service 
netstat -tunlp|grep java

需要zabbix安装源的

3.2.3 tomcat需要开启远程监控功能  (每一个实例都要做)

技术图片

技术图片

4. Tomcat优化

4.1 安全优化

关闭端口保护     8005  SHUTDOWN

ajp连接端口保护  8009 注释

禁用管理端     ###webapps的内容全移走,再建一个ROOT目录

降权启动  降低用户权限启动

技术图片

[[email protected] ~]# pkill java
[[email protected] ~]# useradd tomcat
[[email protected] ~]# cp -a /application/tools/tomcat8_1 /home/tomcat/
[[email protected] ~]# chown -R tomcat.tomcat /home/tomcat/tomcat8_1/
[[email protected] ~]# su -c /home/tomcat/tomcat8_1/bin/startup.sh tomcat
Using CATALINA_BASE:   /home/tomcat/tomcat8_1
Using CATALINA_HOME:   /home/tomcat/tomcat8_1
Using CATALINA_TMPDIR: /home/tomcat/tomcat8_1/temp
Using JRE_HOME:        /application/jdk
Using CLASSPATH:       /home/tomcat/tomcat8_1/bin/bootstrap.jar:/home/tomcat/tomcat8_1/bin/tomcat-juli.jar
Tomcat started.
[[email protected] ~]# ps -ef|grep tomcat

4.2 性能优化   ###瓶颈主要不在cpu,而是内存

tomcat性能取决于你的内存大小

上策:优化代码

中策:jvm优化机制  垃圾回收机制 把不需要的内存回收

优化jvm--优化垃圾回收策略

 

优化catalina.sh配置文件。在catalina.sh配置文件中添加以下代码:

 

#tomcat分配1G内存模板

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"

 

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms800m -Xmx800m -XX:NewSize=400m -XX:MaxNewSize=400m -XX:PermSize=400m -XX:MaxPermSize=400m"

 

下策:加足够大的内存

下下策:每天0点定时重启tomcat

 

vim /home/tomcat/tomcat8_1/bin/catalina.sh +97
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms800m -Xmx800m -XX:NewSize=400m -XX:MaxNewSize=400m -XX:PermSize=400m -XX:MaxPermSize=400m"

 

 

su -c /home/tomcat/tomcat8_1/bin/shutdown.sh tomcat
su -c /home/tomcat/tomcat8_1/bin/startup.sh tomcat

 

tomcat使用详解--技术流ken(代码片段)

 tomcat简介 Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,... 查看详情

tomcat使用详解(代码片段)

1.Tomcat  Tomcat是apache软件基金会(apacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由apache、Sun和其他一些公司及个人共同开发而成。  Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中... 查看详情

tomcat原理详解及请求过程(转)(代码片段)

https://www.cnblogs.com/hggen/p/6264475.htmlTOMCAT原理详解及请求过程Tomcat:  Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。Tomcat目录:tomcat  |---bin:存放... 查看详情

tomcat常用配置详解及优化(代码片段)

....xml。 /logs:存放日志文件。 /server/webapps:来管理Tomcat-web服务用的。仅对TOMCAT可见,对所有的WEBAPP都不可见(使用Catalina类加载器加载)。 /shared/lib:仅对所有WEBAPP可见,对TOMCAT不可见(使用Shared类加载器加载)。&nbs... 查看详情

svn的安装配置及详解svn的使用(代码片段)

什么是SVN(subversion)SVN是近年来非常优秀的版本管理工具,与CSV管理工具一样,SVN是一个跨平台开元版本控制系统,但是SVN与众不同的是,SVN会备份并记录每个文件每一次的修改更新变动。这样我们可以把任意一个时间点档案... 查看详情

tomcat的安装配置与使用,及常用端口大全(代码片段)

...来我的个人博客看看:eyes++的个人空间零:Tomcat的介绍Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规... 查看详情

springboot内置tomcat启动全流程详解及处理请求详解(代码片段)

(1518条消息)springboot内置tomcat之NIO处理流程详解_CRUD的W的博客-CSDN博客_springboottomcatniohttps://blog.csdn.net/qq_31086797/article/details/107703053前言springboot默认内置了tomcat容器,启动时可以直接启动内置tomcat来启动应用本文要介绍的内容... 查看详情

tomcat部署及优化(代码片段)

目录引言一、Tomcat介绍1、Tomcat概述2、Tomcat核心组件3、Tomcat的组件构成4、使用Tomcat前提条件二、Tomcat介绍1、Tomcat核心组件2、Tomcat处理请求过程三、tomcat部署1、关闭防火墙,将安装Tomcat所需软件包上传到/opt目录下2、安装jdk&... 查看详情

图文详解linux基础经典教程(07)——centos安装tomcat(代码片段)

...在CentOS中安装了JDK;接下来,我们在CentOS中安装Tomcat。安装步骤在此,详细介绍Tomcat的安装步骤。第一步:上传Tomcat使用XFTP将Tomcat压缩包上传至/o 查看详情

cobbler图文详解安装及遇到的问题说明(代码片段)

 一、介绍Cobbler是一个使用Python开发的开源项目,通过将部署系统所涉及的所有服务集中在一起,来提供一个全自动批量快速建立linux系统的网络环境,Cobbler提供了DHCP管理,YUM管理,电源管理等功能,除此之外还支持命令行... 查看详情

jenkins安装及常见问题分析定位(代码片段)

前置条件JDK、tomcat安装tomcat下载地址:https://tomcat.apache.org/download-90.cgiuseraddtomcat--新增一个名为tomcat的用户passwdtomcat--给tomcat用户设置密码本次统一使用一个账户,不再常见tomcat用户,下面用户都以tomcat为例,不建议使用roottar-zxv... 查看详情

nginx安装详解及虚拟主机(代码片段)

nginx安装详解及虚拟主机1、编译安装Nginx1)、安装支持软件Nginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保Nginx的安装顺利完... 查看详情

lnmp中一些隐藏的安装脚本及目录详解(代码片段)

伏笔VPS一向在用军哥的LNMP一键script搭建站点,使用的人挺多的,而许多人只晓得script是部署Nginx、MySQL/MariaDB、PHP、phpMyAdmin等建站主要环境的,却不晓得该部署包的别的功能script,这里就说下隐蔽的别的软件script及部署目录。scri... 查看详情

lamp源码搭建详解及wordpress搭建(代码片段)

文章目录LAMP架构LAMP概述实验环境实验步骤Apache源码安装Mysql源码安装PHP源码安装搭建WordPressLAMP架构优化LAMP架构LAMP概述Linux下LAMP(Linux+Apache+MySQL/MariaDB+PerI/PHP/Python)是一组用来搭建动态网站的开源软件架构,本身是各自独... 查看详情

2023版最新metasploit(msf)下载安装及使用详解,永久免费使用,环境配置和使用技巧指南(代码片段)

...费福利一、实验环境:二、简介:三、Metasploit的安装和更新升级:1.一键安装MSF:2.MSF的更新升级:2.1非kali环境下更新升级MSF:2.2 kali环境下更新升级MSF:四、使用方法:1.基础使用:2.MSF中加... 查看详情

ansible自动化运维详解ansible的安装部署参数使用清单管理配置文件参数及用户级ansible操作环境构建(代码片段)

文章目录ansible自动化运维详解(一)ansible的安装部署、参数使用、清单管理、配置文件参数及用户级ansible操作环境构建一、ansible的安装部署1.1、ansible简介1.2、实验环境1.3、安装部署ansible二、ansible的基本信息和参数使... 查看详情

psiprobe安装及使用说明(代码片段)

  这是一款Tomcat管理和监控工具,前身是LambdaProbe。由于LambdaProbe2006不再更新,所以PSIProbe算是对其的一个Fork版本并一直更新至今。github:https://github.com/psi-probe/psi-probe/releasesTomcat版本:apache-tomcat-9.0.6(免安装版)下载prob... 查看详情

干货丨hadoop安装步骤!详解各目录内容及作用(代码片段)

...写时较为稳定的Hadoop2.7.4版本为例,详细讲解Hadoop的安装。先将下载的hadoop-2.7.4.tar.gz安装包上传到主节点hadoop01的/export/software/目录下,然后将文件解压到/ 查看详情