centos7 tomcat?centos怎么安装软件包
各位老铁们,大家好,今天由我来为大家分享centos7 tomcat,以及centos怎么安装软件包的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
如何在CentOS7上安装Tomcat9
1通过 SecureCRT连接到阿里云 CentOS7服务器;
2进入到目录/usr/local/中:
cd/usr/local/
3创建目录/usr/local/tools,如果有则忽略:
mkdir-p tools
4创建/usr/local/tomcat目录,如果已存在则忽略:
mkdir-p tomcat
5进入到目录/usr/local/tools中:
cd tools/
6下载 apache-tomcat-9.0.0.M4.tar.gz文件:
wget
7解压缩 apache-tomcat-9.0.0.M4.tar.gz:
tar-zxvf apache-tomcat-9.0.0.M4.tar.gz
8将通过解压得到的 apache-tomcat-9.0.0.M4文件复制到/usr/local/tomcat目录中:
mv apache-tomcat-9.0.0.M4../tomcat/
9打开文件/etc目录下的 profile文件:
vim/etc/profile
将如下代码追加到 profile文件末尾:
# idea- tomcat9 config start- 2016-05-01
CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.0.M4
CATALINA_BASE=/usr/local/tomcat/apache-tomcat-9.0.0.M4
PATH=$PATH:$CATALINA_BASE/bin
export PATH CATALINA_BASE
# idea- tomcat9 config end- 2016-05-01
保持并推出:wq!
10修改 tomcat的端口号和字符编码:
进入到/usr/local/tomcat/apache-tomcat-9.0.0.M4/conf目录中:
cd../tomcat/apache-tomcat-9.0.0.M4/conf
打开 tomcat服务的配置文件 server.xml:
vi server.xml
找到如下代码:
将其中的 8080改成 HTTP协议的默认端口 80,改后的代码如下:
11增加 manager-gui图形化管理界面的访问权限(不需要的话,此步骤可忽略):
打开 tomcat的用户配置文件 tomcat-users.xml:
vi tomcat-users.xml
在标签前加入如下代码:
这里设置的 username和 password都是 password,角色为 manager-gui;
键入 Esc并输入“:wq!”保持并退出;
12进入到/usr/local/tomcat/apache-tomcat-9.0.0.M4/bin目录中:
cd../bin/
13打开 vi catalina.sh文件:
在# OS specific support.前面加入如下代码:
JAVA_HOME=/usr/local/jdk/jdk1.8.0_91
JRE_HOME=$JAVA_HOME/jre
键入 Esc并输入“:wq!”保持并退出;
14启动 tomcat服务:
./startup.sh
打印如下信息则表明启动 Tomcat服务成功:
Using CATALINA_BASE:/usr/local/tomcat/apache-tomcat-9.0.0.M4
Using CATALINA_HOME:/usr/local/tomcat/apache-tomcat-9.0.0.M4
Using CATALINA_TMPDIR:/usr/local/tomcat/apache-tomcat-9.0.0.M4/temp
Using JRE_HOME:/usr/local/jdk/jdk1.8.0_91/jre
Using CLASSPATH:/usr/local/tomcat/apache-tomcat-9.0.0.M4/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-9.0.0.M4/bin/tomcat-juli.jar
Tomcat started.
打开浏览器输入 IP地址看看吧!如果出现了我们的可爱的“小黄猫”则表明我们的 Tomcat已提供服务啦!
15关闭 tomcat服务:
./shutdown.sh
打印如下信息则表明关闭 Tomcat服务成功:
Using CATALINA_BASE:/usr/local/tomcat/apache-tomcat-9.0.0.M4
Using CATALINA_HOME:/usr/local/tomcat/apache-tomcat-9.0.0.M4
Using CATALINA_TMPDIR:/usr/local/tomcat/apache-tomcat-9.0.0.M4/temp
Using JRE_HOME:/usr/local/jdk/jdk1.8.0_91/jre
Using CLASSPATH:/usr/local/tomcat/apache-tomcat-9.0.0.M4/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-9.0.0.M4/bin/tomcat-juli.jar
注意:不可连续执行多次./shutdown.sh命令,多次后报如下错误:
SEVERE: Catalina.stop:
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.(Socket.java:434)
at java.net.Socket.(Socket.java:211)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:476)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:408)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:497)
16将 tomcat9加入到系统服务列表中:
进入到/etc/init.d目录中:
cd/etc/init.d
创建 tomcat9服务配置文件:
vi tomcat9
将如下代码加入写入到 tomcat9配置文件中:
# idea- tomcat config start- 2016-05-01
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 2345 20 80
JAVA_HOME=/usr/local/tomcat/apache-tomcat-9.0.0.M4/
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.0.M4/
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
#chmod 755 tomcat
#chkconfig--add tomcat
#chkconfig--level 2345 tomcat on
#chkconfig--list tomcat
# idea- tomcat config end- 2016-05-01
键入 Esc并输入“:wq!”保持并退出;
其中的注意点是将 JAVA_HOME和 CATALINA_HOME变量设置成与我们当前配置相一致的路径;
17为 tomcat9分配可执行权限:
chmod+x tomcat9
18将 tomcat9纳入到系统的服务列表中,即添加 tomcat9为系统服务:
chkconfig--add tomcat9
19查看当前系统服务都有哪些:
chkconfig--list
也可以查看指定的系统服务,如这里我们指定 tomcat9这个服务:
chkconfig--list tomcat9
打印如下信息:
tomcat9 0:off 1:off 2:on 3:on 4:on 5:on 6:off
则表明已将 tomcat9设置为系统服务,2、3、4、5都为 on表示可随系统自动启动;
20我们可以在任意目录下执行关闭、启动、重启 Tomcat9服务啦:
20.1关闭 tomcat9服务:
service tomcat9 stop
20.2启动 tomcat9服务:
service tomcat9 start
20.3重启 tomcat9服务:
service tomcat9 restart
后记:
linux系统中的/etc目录表示“设备”,意为与硬件设备相关的信息;
/etc/init.d目录下的文件表示当前设备的初始化配置信息;
命令 chkconfig表示添加(--add)、删除(--del)、查看(--list)系统服务;
centos7怎样查看tomcat安装路径
方法如下:
在Tomcat默认安装后,tomcat的主目录是webapps/root目录。
如果想改变tomcat的主目录的话可以如下所做:
1、(假设tomcat安装在C盘下,项目名为bidding)打开C:/Tomcat/conf/server.xml,在<host></host>之间加入代码:<Context docBase="C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps/bidding" path="" debug="0" reloadable="true"/>这样重新启动tomcat,我们的主目录就被设置为bidding这个项目了。
2、将tomcat安装目录下的ROOT下的所有文件全部删除,
然后将工程的解压后的文件全部拷进去。
CentOS 7 下Tomcat启动超慢的原因及解决方案
CentOS 7系统中安装好openjdk和Tomcat后,启动过程很慢,长达数分钟,日志如下:
tomcat启动耗时278084ms折合278秒,对于刚刚安装的干净tomcat,这肯定是不对劲的。
其中有一条日志引起了笔者的注意:
显然tomcat执行到这里时出问题了,google了一下,经过一番搜索明白了其中的缘由。
在tomcat官方wiki文档的 HowToFasterStartUp章节中,Entropy Source部分有一段这样的说明:
从这里我们得知Tocmat的Session ID是通过SHA1PRNG算法计算得到的,计算Session ID的时候必须有一个密钥,为了提高安全性Tomcat在启动的时候会通过随机生成一个密钥,它强依赖于获取熵池中的随机数来进行创建。
那么什么是/dev/random?什么是熵池?
/dev/random
从维基百科得知,在UNIX操作系统(包括类UNIX系统)中,/dev/random是一个特殊的设备文件,可以用作随机数生成器或伪随机数生成器。
Linux内核中的是第一个以背景噪声产生真正的随机数产生的实现,它允许程序访问来自设备驱动程序或其它来源的背景噪声。
Linux上有两个通用的随机设备:/dev/random和/dev/urandom。其中/dev/random的随机性最好,因为它是一个阻塞的设备。而/dev/random的一个副本是/dev/urandom(“unblocked”,非阻塞的随机数生成器),它会重复使用熵池中的数据以产生伪随机数据。这表示对/dev/urandom的读取操作不会产生阻塞,但其输出的熵可能小于/dev/random的。所以它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。
熵池
熵池本质上是若干字节,/proc/sys/kernel/random/entropy_avail中存储了熵池现在的大小,/proc/sys/kernel/random/poolsize是熵池的最大容量,单位都是bit。如果 entropy_avail的值小于要产生的随机数bit数,那么/dev/random就会堵塞。
为什么熵池不够用?
熵池实际上是从各种noice source中获取数据,noice source可能是键盘事件、鼠标事件、设备时钟中等。linux内核从2.4升级到2.6时,处于安全性的考虑,废弃了一些source。source减少了,熵池补给的速度当然也变慢,进而不够用。
其实,通过消耗熵池,可以构造DDOS攻击。原理很简单,熵池空了,依赖随机数的业务(SSL,加密等)就不能正常进行。
通过以上信息,笔者得知该问题是由于熵池不足导致的。怎么解决?
使用非阻塞性的生成器/dev/urandom代替/dev/random。
1、可在JVM环境中配置
通过配置发生器指定熵收集守护进程
修改$JAVA_PATH/jre/lib/security/java.security中参数 securerandom.source为:
2、也可在Tomcat环境中配置
通过配置JRE使用非阻塞的Entropy Source获取熵
在$TOMCAT_HOME/bin/catalina.sh中加入:
这个系统属性egd表示熵收集守护进程(entropy gathering daemon)。
1、[硬件随机数生成器]安装并使用rng-tools作为额外的熵随机数生成器(推荐)
cat/dev/random命令会消耗熵池, rngd守护进程会补充熵池,可使用如下命令来测试随机数生成的情况:
2、[软件随机数生成器]在rng-tools仍不满足的情况下,可使用haveged作为额外的熵随机数生成器
要检查是否需要 Haveged,可使用下面命令查看当前收集到的熵:
如果结果比较低(<1000),建议安装 haveged,否则加密程序会处于等待状态,直到系统有足够的熵。
安装 haveged之后,可以再次查看系统熵看下有无提升。
因为方法一存在一定的不安全性,且需要对环境进行配置,为了满足熵的需要,这里笔者选择了第二种方法,使用rng-tools作为额外的熵随机数生成器,同以上操作后顺利解决了问题。
操作后重启tomcat日志如下,启动速度快了两个数量级:
参考文档: