对于一台新的服务器,可以这样快速配置java+tomcat项目运行环境。
列举匹配已安装的java的软件包:
yum list installed | grep java
卸载安装的jdk
yum -y remove java-1.7.0-openjdk*
yum -y remove java-1.8.0-openjdk*
安装jdk:
查看yum库中的java安装包 :
yum -y list java*
安装需要的jdk版本的所有java程序:
yum -y install java-1.8.0-openjdk*
(安装完之后,默认的安装目录是在: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64)
当结果出现了完毕!即安装完成。
查看java版本:java -version
你可以去
tomcat官网
下载,然而你可以直接下载安装tomcat8
# 资源失效了。
# wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.29/bin/apache-tomcat-8.5.29.tar.gz
# 换成
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz
解压:
# tar -zvxf apache-tomcat-8.5.29.tar.gz
tar -zvxf apache-tomcat-8.5.32.tar.gz
移动到你认为方便的地方,注意,我认为比较好的保存路径是:
# mv apache-tomcat-8.5.29 /usr/local/tomcat-product
mv apache-tomcat-8.5.32 /usr/local/tomcat-product
在
apr官网 找到下载链接,我的是:
wget http://mirrors.hust.edu.cn/apache//apr/apr-1.6.3.tar.gz
tar -zxvf apr-1.6.3.tar.gz
cd apr-1.6.3
./configure
make
make install
-- 注意,安装完以后,发现 /usr/local/apr下面才是安装的默认目录
wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
tar -zxvf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1
./configure --with-apr=/usr/local/apr
make
报错:
xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
安装:
yum install expat-devel
继续:
make
make install
变量配置:
# vi /etc/profile
添加:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
# source /etc/profile
下面的内容在centos下是不行的。。。。删掉
Linux下,Tomcat启用APR需要三个组件:
apr
apr-util
tomcat-native.tar.gz(Tomcat自带,在bin目录下)
1、查看是否已经安装了apr和apr-util
# rpm -qa apr
apr-1.4.8-3.el7.x86_64
# rpm -qa apr-util
apr-util-1.5.2-6.el7.x86_64
2、查看是否有最新版的apr和apr-util
# yum list | grep apr
apr.x86_64 1.4.8-3.el7 @anaconda
apr-util.x86_64 1.5.2-6.el7 @anaconda
3、如果还没安装,用yum安装:
# yum install apr-devel apr apr-util
4、安装tomcat-native:
搜索tomcat-native安装包:
# yum list | grep tomcat-native
如果已经存在,直接安装:
# yum install tomcat-native
……
正在安装 : tomcat-native-1.1.30-1.el7.x86_64 1/1
验证中 : tomcat-native-1.1.30-1.el7.x86_64 1/1
已安装:
tomcat-native.x86_64 0:1.1.30-1.el7
完毕!
查看是否安装成功:
# rpm -qa tomcat-native
tomcat-native-1.1.30-1.el7.x86_64
配置相关的全局变量:
# vi /etc/profile
添加:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
# source /etc/profile
5、重启Tomcat,看看是否可以成功使用APR
如果一切正常:
APR启动:
[main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-18080"]
[main] org.apache.catalina.startup.Catalina.start Server startup in 13617 ms
相比NIO模式的启动,速度快了一些(~15%):
NIO启动:
[main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-18080"]
[main] org.apache.catalina.startup.Catalina.start Server startup in 15671 ms
如果发现异常log,比如:
06-Aug-2015 14:46:04.949 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.init An incompatible version 1.1.30 of the APR based Apache Tomcat Native library is installed, while Tomcat requires version 1.1.32
说明系统自带的tomcat-native版本太低。
删除:
# yum erase tomcat-native
用yum检查有没有最新版:
# yum update tomcat-native
如果yum找不到最新版,则下载或从Tomcat/bin中解压安装。
从Tomcat/bin目录中,解压tomcat-native.tar.gz文件:
# tar -zxvf tomcat-native.tar.gz
得到文件夹:tomcat-native-1.1.33-src
# cd tomcat-native-1.1.33-src/jni/native/
# ./configure --with-apr=/usr/local/apr (官网中例子的其他参数不需要,会自动找到)
# make && make install
进入tomcat的目录:
cd /usr/local/tomcat-product/bin/
解压:
tar -zxvf tomcat-native.tar.gz
cd tomcat-native-1.1.32-src/jni/native
请注意,java编译以后放到一个输出目录,然后输出svn目录,然后将编译好的文件更新到线上,重启tomcat服务器。
这里将项目名称暂定为blue-hat-build
sudo mkdir -p /var/svn/blue-hat-build
sudo svnadmin create /var/svn/blue-hat-build
sudo vim /var/svn/blue-hat-build/conf/svnserve.conf
sudo vim /var/svn/blue-hat-build/conf/passwd
sudo vim /var/svn/blue-hat-build/conf/authz
sudo systemctl restart svnserve
配置相关web 目录。
mkdir -p /data/www/blue-hat-build
svn checkout svn://localhost/blue-hat-build /data/www/blue-hat-build --username testuser --password abc --non-interactive
需要写钩子
接下来我们要修改hook脚本的post commit,
首先先将post-coomit.tmpl复制一份成为post-commit,
svn每次更新完以后将会执行post-commit脚本
然后给脚本执行权限,接下来将脚本内容添加进去–就是下面的脚本例子了。
然后保存,再重启svn服务,然后测试是否成功。
cd /var/svn/blue-hat-build/hooks
cp post-commit.tmpl post-commit
chmod +x post-commit
vi post-commit
内容如下:
#!/bin/sh
# 库的路径
REPOS="$1"
# 新提交的版本号
REV="$2"
WEB=/data/www/blue-hat-build
SVN=/usr/bin/svn
LOG=/data/www/blue-hat-build/auto_svn.log
export LC_ALL=zh_CN.UTF-8
changed=$(svnlook changed -r $REV $REPOS)
log=$(svnlook log -r $REV $REPOS)
# echo "now the changed is:$changed">>$LOG
n=$'\n'
$SVN update $WEB --username testuser --password abc --non-interactive #更新到我们的目标网站目录。
请重启一下svn。
sudo systemctl restart svnserve
在这里需要有一个概念,假如以后centos有多个tomcat的话,那么端口肯定冲突,以后再说明多个tomcat的启动及多个二级域名的跳转—用nginx。
这里默认为首个tomcat,所有端口不需要设定,现在这需要将网站目录修改为我们设定的目录— /data/www/blue-hat-build即可。
添加一个:
设定以后,请先到阿里云开启8080端口作为测试,这些规则应该不用我说吧?
在阿里云开启完8080端口以后,我们快速新建一个项目–当然,如果这个项目要用服务器上面的svn的话你也可以自行搭建,这里我只作一个最简单的讲解。
如何新建工程项目我就不一一说了,记住新建一个web项目即可。
然后—不是编译,接下来的步骤不是编译,而是先从服务端checkout一下编译的svn项目目录,然后在idea设定我们以后编译目录指向svn的编译目录,接下来每次编译后就会自动更新到服务器的data/www里面的项目目录了(还记得不?我们已经将服务器的tomcat的网站目录改为这个了),然后重启一下tomcat就可以看到结果了。
作一下说明,我的构建目录-svn项目是叫52PlayBuild,这个要自行换成自己的目录----随机应变,而我checkout的位置是d盘的java-web目录下的52PlayBuild下面,为什么要提这个,因为这个很重要,等下在idea要将编译目录设定为这里的。
说明,额,我顺便提一下假如没有安装到tomcat,或者jdk位置不对怎么设定吧。。
这电脑新的没有配置过tomcat也没有jdk配置过。。。
请到tomcat官网直接下载然后解压然后放到你希望的目录。
譬如:
注意,tomcat目录,jdk的配置这些基本要求就不提了。。自行处理。
下面直接演示如何将编译目录改变。
好了,编译:
编译成功:
看看build目录:
………….没有写任何java后台文件呢。。。
好了,更新到svn。
看看服务器上面的目录是不是有了这个文件?
启动tomcat:
访问成功。
yum install rng-tools # 安装rngd服务(熵服务,增大熵池)
systemctl start rngd # 启动服务
现象
在一次CentOS 7系统中安装Tomcat,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的。Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥。为了提高安全性Tomcat在启动的时候回通过随机生成一个密钥。
技术分享
20-Jul-2017 02:54:56.797 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /application/apache-tomcat-8.0.27/webapps/manager
20-Jul-2017 02:54:56.848 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/manager has finished in 51 ms
20-Jul-2017 02:54:56.864 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [“http-nio-8080”]
20-Jul-2017 02:54:56.873 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [“ajp-nio-8009”]
20-Jul-2017 02:54:56.874 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 34487 ms
View Code
分析结果
主要原因是生成随机数的时候卡住了,导致tomcat启动不了。
是否有足够的熵来用于产生随机数,可以通过如下命令来查看
[root@tomcat tools]# cat /proc/sys/kernel/random/entropy_avail
7
为了加速/dev/random提供随机数的速度,你可以通过操作设备的外设,让其产生大量的中断(如网络传输数据,按键,移动鼠标,在命令行敲几个不同的命令,俗称聚气。
cat /dev/random 会消耗能量。
经过检查,发现原因是因为最小换安装系统的时候,是没有rng-tools这个包的。
技术分享
[root@tomcat ~]# rpm -qa rng-tools
[root@tomcat ~]#
View Code
解决方案
方案一
技术分享
vim $JAVA_HOME/jre/lib/security/java.security
securerandom.source=file:/dev/random
改为
securerandom.source=file:/dev/urandom
View Code
方案二
技术分享
vim TOMCATHOME/bin/catalina.shif[[“ T O M C A T H O M E / b i n / c a t a l i n a . s h i f [ [ “ JAVA_OPTS” != -Djava.security.egd= ]]; then
JAVA_OPTS=”$JAVA_OPTS -Djava.security.egd=file:/dev/urandom”
fi
View Code
这个系统属性egd表示熵收集守护进程(entropy gathering daemon)。
方案三
技术分享
yum install rng-tools # 安装rngd服务(熵服务,增大熵池)
systemctl start rngd # 启动服务
View Code
CentOS7下Tomcat启动慢的原因及解决方案
标签:splay local emctl str 安全性 ati root host home
原文地址:http://www.cnblogs.com/jie-fang/p/7211574.html
CentOS7下Tomcat启动慢的原因及解决方案
nginx映射这些内容等以后再继续,跟 二级域名,其他网站一起讲解。