centos7配置jdk+tomcat+编译目录+运行环境

前言

对于一台新的服务器,可以这样快速配置java+tomcat项目运行环境。

jdk配置

列举匹配已安装的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

你可以去
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

centos7配置jdk+tomcat+编译目录+运行环境_第1张图片

解压:
# 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项目的编译文件存放目录

请注意,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

tomcat配置网站目录 (收割)

在这里需要有一个概念,假如以后centos有多个tomcat的话,那么端口肯定冲突,以后再说明多个tomcat的启动及多个二级域名的跳转—用nginx。

这里默认为首个tomcat,所有端口不需要设定,现在这需要将网站目录修改为我们设定的目录— /data/www/blue-hat-build即可。

centos7配置jdk+tomcat+编译目录+运行环境_第2张图片

添加一个:

centos7配置jdk+tomcat+编译目录+运行环境_第3张图片

设定以后,请先到阿里云开启8080端口作为测试,这些规则应该不用我说吧?

在阿里云开启完8080端口以后,我们快速新建一个项目–当然,如果这个项目要用服务器上面的svn的话你也可以自行搭建,这里我只作一个最简单的讲解。

idea新建工程项目

如何新建工程项目我就不一一说了,记住新建一个web项目即可。

譬如:
centos7配置jdk+tomcat+编译目录+运行环境_第4张图片

然后—不是编译,接下来的步骤不是编译,而是先从服务端checkout一下编译的svn项目目录,然后在idea设定我们以后编译目录指向svn的编译目录,接下来每次编译后就会自动更新到服务器的data/www里面的项目目录了(还记得不?我们已经将服务器的tomcat的网站目录改为这个了),然后重启一下tomcat就可以看到结果了。

checkout服务器的编译目录
centos7配置jdk+tomcat+编译目录+运行环境_第5张图片

作一下说明,我的构建目录-svn项目是叫52PlayBuild,这个要自行换成自己的目录----随机应变,而我checkout的位置是d盘的java-web目录下的52PlayBuild下面,为什么要提这个,因为这个很重要,等下在idea要将编译目录设定为这里的。

centos7配置jdk+tomcat+编译目录+运行环境_第6张图片
好了,在idea里面设定编译输出目录。

说明,额,我顺便提一下假如没有安装到tomcat,或者jdk位置不对怎么设定吧。。
这电脑新的没有配置过tomcat也没有jdk配置过。。。

请到tomcat官网直接下载然后解压然后放到你希望的目录。
譬如:
centos7配置jdk+tomcat+编译目录+运行环境_第7张图片

centos7配置jdk+tomcat+编译目录+运行环境_第8张图片
这里写图片描述

注意,tomcat目录,jdk的配置这些基本要求就不提了。。自行处理。
下面直接演示如何将编译目录改变。

好了,在idea里面
centos7配置jdk+tomcat+编译目录+运行环境_第9张图片

centos7配置jdk+tomcat+编译目录+运行环境_第10张图片

改为
centos7配置jdk+tomcat+编译目录+运行环境_第11张图片

好了,编译:

centos7配置jdk+tomcat+编译目录+运行环境_第12张图片

编译成功:

centos7配置jdk+tomcat+编译目录+运行环境_第13张图片

看看build目录:

centos7配置jdk+tomcat+编译目录+运行环境_第14张图片

………….没有写任何java后台文件呢。。。
好了,更新到svn。
centos7配置jdk+tomcat+编译目录+运行环境_第15张图片

centos7配置jdk+tomcat+编译目录+运行环境_第16张图片

看看服务器上面的目录是不是有了这个文件?

这里写图片描述

启动tomcat:

centos7配置jdk+tomcat+编译目录+运行环境_第17张图片

访问成功。

centos7配置jdk+tomcat+编译目录+运行环境_第18张图片

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映射这些内容等以后再继续,跟 二级域名,其他网站一起讲解。

nginx映射

你可能感兴趣的:(后端,CI,CD,研发模式及运维)