Tomcat的安装与配置

tomcat安装在公网IP为x.x.x.x的服务器上

tomcat安装

第一步,下载server-jre-8u202-linux-x64.tar.gz和apache-tomcat-8.5.55.tar.gz安装包。

登录地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html下载server-jre-8u202-linux-x64.tar.gz安装包。登录地址:https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.55/bin下载apache-tomcat-8.5.55.tar.gz安装包。然后使用WinSCP将安装包上传到/usr/local/src文件夹中。也可以使用wget命令下载。

命令:cd /usr/local/src

wget https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html/jre-8u202-linux-x64.tar.gz

wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.55/bin/apache-tomcat-8.5.55.tar.gz

第二步,解压server-jre-8u202-linux-x64.tar.gz和apache-tomcat-8.5.55.tar.gz安装包。

命令:cd /usr/local/src

tar -zxvf server-jre-8u202-linux-x64.tar.gz -C /usr/local

tar -zxvf apache-tomcat-8.5.55.tar.gz -C/usr/local

cd /usr/local

mv apache-tomcat-8.5.55 tomcat1

第三步,将/usr/local/jdk1.8.0_202和/usr/local/tomcat1的所有者及所属组改为tomcat。

命令:useradd tomcat

chown -R tomcat:tomcat /usr/local/jdk1.8.0_202

chown -R tomcat:tomcat /usr/local/tomcat1

第四步,配置环境变量。

配置/etc/profile文件,在文件添加下面的代码:

export JAVA_HOME=/usr/local/jdk1.8.0_202

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib/rt.jar:$JRE_HOME/lib/ext:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

# 刷新profile文件

命令:source /etc/profile

第五步,测试server-jre是否配置成功。

# 查看jdk版本

命令:java -version

若结果显示server-jre的版本,则说明server-jre配置成功。

tomcat配置及启动

第一步,编辑配置/usr/local/tomcat1中的server.xml文件。

进入文件夹/usr/local/tomcat1/conf,server.xml编辑完成后代码如下:

<?xml version="1.0" encoding="UTF-8"?>

    ...

<Server port="8105" shutdown="SHUTDOWN"> #port设置为8105

  ...

    <!--The connectors can use a shared executor, you can define one or more named thread pools-->

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

        maxThreads="800" minSpareThreads="100" prestartminSpareThreads="true" maxQueueSize="100"/>

...

    <Connector executor="tomcatThreadPool" port="8081" protocol="org.apache.coyote.http11.Http11Nio2Protocol"

              connectionTimeout="20000"

              redirectPort="8443" URIEncoding="UTF-8"

              maxPostSize="-1" maxHttpHeaderSize ="102400"/>

<!-- A "Connector" using the shared thread pool-->

   ...

</Server>

第二步,编辑配置/usr/local/tomcat1/bin下的 catalina.sh文件。

为防止出错,先提前备份一下,然后在第117行添加下面的代码:

JAVA_HOME=/usr/local/jdk1.8.0_202

JRE_HOME=/usr/local/jdk1.8.0_202/jre

JAVA_OPTS="$JAVA_OPTS -server -Xms1024m -Xmx1024m"

把UMASK="0027"修改为UMASK="0022"。

最后赋予权限。

命令:cd /usr/local/tomcat1/bin

chmod a+x catalina.sh

第三步,测试tomcat1是否配置成功。

命令:cd /usr/local/tomcat1/bin

./startup.sh

netstat -ntl | grep 8081

若结果成功显示“Tomcat started”,则说明tomcat成功启动。

若tomcat启动失败,则可能是启动时使用的端口被其他应用程序占用了,可以查看端口被哪个应用程序占用了。

命令:lsof -i:端口号

ps -ef | grep 进程号PID

tomcat成功启动后,然后直接根据http://x.x.x.x:8081http://x.x.x.x/index.jsp)在本地浏览器访问。

若页面成功显示“Apache Tomcat/8.5.55”,则说明tomcat配置成功。

若发现访问不到,则可以查看防火墙是否开着。

# 查看防火墙的状态

命令:systemctl status firewalld.service

# 临时将防火墙关闭

命令:systemctl stop firewalld.service

# 关闭tomcat

命令:./shutdown.sh

第四步,复制tomcat1文件夹7次并都粘贴在/usr/local/文件夹中。

cp -pr  /usr/local/tomcat1 /usr/local/tomcat2

cp -pr  /usr/local/tomcat1 /usr/local/tomcat3

cp -pr  /usr/local/tomcat1 /usr/local/tomcat4

cp -pr  /usr/local/tomcat1 /usr/local/tomcat5

cp -pr  /usr/local/tomcat1 /usr/local/tomcat6

cp -pr  /usr/local/tomcat1 /usr/local/tomcat7

cp -pr  /usr/local/tomcat1 /usr/local/tomcat8

第五步,重复“tomcat配置及启动”中的第一、二和三步。

在配置文件server.xml中更改端口号,编辑配置 catalina.sh文件。

关机重启,tomcat会自动启动

第一步,编辑配置/etc/rc.d/rc.local,在/etc/rc.d/rc.local文件最后一行另起一行,添加下面的代码:

export JAVA_HOME=/usr/local/jdk1.8.0_202

export JRE_HOME=$JAVA_HOME/jre

/usr/local/tomcat1/bin/startup.sh  start

/usr/local/tomcat2/bin/startup.sh  start

/usr/local/tomcat3/bin/startup.sh  start

/usr/local/tomcat4/bin/startup.sh  start

/usr/local/tomcat5/bin/startup.sh  start

/usr/local/tomcat6/bin/startup.sh  start

/usr/local/tomcat7/bin/startup.sh  start

/usr/local/tomcat8/bin/startup.sh  start

第二步,编辑rc.local文件为可执行。

命令:chmod +x /etc/rc.d/rc.local

第三步,重启服务器,然后查看tomcat是否启动。

命令:reboot 或 shutdown -r now 或 shutdown -r 10 或 init 6

           lsof -i:[tomcat端口号]

           netstat -ntl | grep [tomcat端口号]

不进入tomcat根目录即可进行相应的操作

第一步,进入/etc/rc.d/init.d文件夹,新建文件,命名为tomcat,并在文件中编写脚本。文件的脚本如下:

#!/bin/bash

#

# tomcat startup script for the Tomcat server

#

#

# chkconfig: 2345 80 20

# description: start the tomcat deamon

#

# Source function library

. /etc/rc.d/init.d/functions

prog=tomcat

case "$1" in

start)

    echo "Starting Tomcat1..."

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

    echo "Starting Tomcat2..."

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

    echo "Starting Tomcat3..."

    /usr/local/tomcat3/bin/startup.sh

    echo "Starting Tomcat4..."

    /usr/local/tomcat4/bin/startup.sh

    echo "Starting Tomcat5..."

    /usr/local/tomcat5/bin/startup.sh

    echo "Starting Tomcat6..."

    /usr/local/tomcat6/bin/startup.sh

    echo "Starting Tomcat7..."

    /usr/local/tomcat7/bin/startup.sh

    echo "Starting Tomcat8..."

    /usr/local/tomcat8/bin/startup.sh

    ;;

stop)

    echo "Stopping Tomcat1..."

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

    echo "Stopping Tomcat2..."

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

    echo "Stopping Tomcat3..."

    /usr/local/tomcat3/bin/shutdown.sh

    echo "Stopping Tomcat4..."

    /usr/local/tomcat4/bin/shutdown.sh

    echo "Stopping Tomcat5..."

    /usr/local/tomcat5/bin/shutdown.sh

    echo "Stopping Tomcat6..."

    /usr/local/tomcat6/bin/shutdown.sh

    echo "Stopping Tomcat7..."

    /usr/local/tomcat7/bin/shutdown.sh

    echo "Stopping Tomcat8..."

    /usr/local/tomcat8/bin/shutdown.sh

    ;;

res)

    echo "Stopping Tomcat1..."

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

    echo "Stopping Tomcat2..."

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

    echo "Stopping Tomcat3..."

    /usr/local/tomcat3/bin/shutdown.sh

    echo "Stopping Tomcat4..."

    /usr/local/tomcat4/bin/shutdown.sh

    echo "Stopping Tomcat5..."

    /usr/local/tomcat5/bin/shutdown.sh

    echo "Stopping Tomcat6..."

    /usr/local/tomcat6/bin/shutdown.sh

    echo "Stopping Tomcat7..."

    /usr/local/tomcat7/bin/shutdown.sh

    echo "Stopping Tomcat8..."

    /usr/local/tomcat8/bin/shutdown.sh

    sleep 10

    echo "Starting Tomcat1..."

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

    echo "Starting Tomcat2..."

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

    echo "Starting Tomcat3..."

    /usr/local/tomcat3/bin/startup.sh

    echo "Starting Tomcat4..."

    /usr/local/tomcat4/bin/startup.sh

    echo "Starting Tomcat5..."

    /usr/local/tomcat5/bin/startup.sh

    echo "Starting Tomcat6..."

    /usr/local/tomcat6/bin/startup.sh

    echo "Starting Tomcat7..."

    /usr/local/tomcat7/bin/startup.sh

    echo "Starting Tomcat8..."

    /usr/local/tomcat8/bin/startup.sh

    ;;

*)

    echo "Usage: $prog {start|stop|res}"

    ;;

esac

exit 0

第二步,添加执行权限并设置开机自启

命令 :chmod +x /etc/init.d/tomcat

# 设置开机自启

命令:chkconfig --add tomcat

chkconfig tomcat on

# 检查tomcat命令

命令:service tomcat

/etc/init.d/tomcat: line 20: [: =: unary operator expected

Usage: tomcat {start|stop|restart|reload|status|help}

第三步,检查一下脚本是否有用。

命令:/sbin/chkconfig tomcat on

sudo /sbin/chkconfig --list tomcat

如果结果显示“tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off”,则说明脚本文件有用。

第四步,nginx启动、关闭以及重启命令。

命令:service tomcat start

service tomcat stop

service tomcat restart

第五步,再新建8个文件,分别命名为tomcat1、tomcat2、...和tomcat8,重复执行第一、二、三和四步。

设置tomcat服务启动速度非常快

种解决办法:

1)在tomcat环境中解决

可以通过配置JRE使用非阻塞的Entropy Source。

在/usr/local/tomcat1/bin/catalina.sh中加入这么一行:

-Djava.security.egd=file:/dev/./urandom

加入后再启动tomcat,启动速度就非常快。

2)在JVM环境中解决

打开$JAVA_HOME/jre/lib/security/java.security文件,找到

“securerandom.source=file:/dev/urandom”,并把它修改成

“securerandom.source=file:/dev/./urandom”。(对所有使用JVM的应用生效)修改之后启动tomcat,启动速度就非常快。

3)增大/dev/random的熵池

# 可以查看现在的熵池大小(45)

cat /proc/sys/kernel/random/entropy_avail

# 要增大熵池的值,CPU要支持DRNG特性,可以充分利用硬件来提高熵池产生的速度,查看服务器是否支持DRNG特性

cat /proc/cpuinfo | grep rdrand

# 安装rng-tools(安装rngd服务(熵服务))

yum -y install rng-tools

systemctl enable  rngd

systemctl start  rngd

# 查看熵池的值是否会变大(3097)

cat  /proc/sys/kernel/random/entropy_avail

安装rng-tools之后可以直接使用random生成随机数,而不需要修改$JAVA_HOME/jre/lib/security/java.security中的生成随机数。

最后启动tomcat, 会发现启动速度就非常快。

如果CPU不支持DRNG特性或者使用虚拟机,可以使用/dev/unrandom来模拟。

cp /usr/lib/systemd/system/rngd.service /etc/systemd/system

编辑配置/etc/systemd/system/rngd.service文件,设置“ExecStart=/sbin/rngd -f -r /dev/urandom”。

systemctl daemon-reload    #重新载入服务

systemctl restart rngd     #重启服务

# 可以查看现在的熵池大小(基本上在3000左右)

cat /proc/sys/kernel/random/entropy_avail

# 可以测试随机数的生成速度

watch -n 1 cat /proc/sys/kernel/random/entropy_avail

#重新打开一个shell,用dd命令测试随机数(5秒产生了40960个随机数,/proc/sys/kernel/random/entropy_avail会有剧烈的变化,所有随机数产生之后它又会保持在3000左右)

dd if=/dev/random of=random.dat count=40960

最好选择第三种方式,熵池不仅仅tomcat使用,Linux下的所有应用程序产生随机数都会用到这个,因此不仅仅是tomcat可能被阻塞。根治的方法应该是通过rngd提高随机数生成的速度。

如何重现故障

systemctl stop rngd   #停止rngd服务(如果你有启动rngd)

# 查看当前熵池的大小

cat /proc/sys/kernel/random/entropy_avail

# 强制消费1024个随机数,系统会长时间没有反应,然后直接Ctrl+C

head -c 1024 /dev/random

# 再次查看熵池的大小,保证它的大小在尽可能的小

cat /proc/sys/kernel/random/entropy_avail

最后启动tomcat,会发现会长时间等待。

4)tomcat 需要部署的web应用程序太多

tomcat启动比较慢是因为它需要部署的web应用程序太多,但是其中有些应用程序是不需要的,可以将不需要的webapps删除,然后再进行发布。如果想并行启动多个web应用程序且服务器是多核的,那么可以设置Host的属性startStopThreads值设置大于1,但不超过内核数。

5)tomcat启动内存不足

如果项目比较大,使用默认的参数去启动的tomcat是很有可能内存不足的,这样的话,需要设置JVM,将内存调整,JVM的最大值和最小值建议是不要相差太大(最好一致)。

在启动脚本/usr/local/tomcat1/bin/catalina.sh文件加上:

JAVA_OPTS='-server -Xms1024m -Xmx1024m'

具体的内存大小,可以根据业务调整。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值