开发人员学Linux(3):CentOS7中安装JDK8和Tomcat8

题外话:直到今天开始写本系列的第三篇时本人才想好为这个系列取一个名字,本系列不是为Linux运维人员准备的,而是主要为开发人员准备的,包括但不限于:
希望了解Linux的开发人员;
需要在Linux上部署一些组件的开发人员,如Memcached/Nginx/Redis等;
需要使用一些在Linux上部署运行效果可能会更好的效果的系统,如Jetkins、SVN、JavaMelody等。
希望了解一些当前较热的技术,想在虚拟机里搭建个环境把玩一番的,如.Net Core/Hadoop等。
因此在本系列文章中不会去讲Linux及各个分支的历史,也不会去讲Linux与Windows相比的优缺点,更不会讲Linux Shell如何编程,涉及到这些知识也会较快带过,本系列文章主要是讲如何在虚拟机快速搭建起一个可运行和观察效果的环境。

书接前两回,前面已经讲了如何安装配置免费开源的虚拟机软件VirtualBox以及如何在VirtualBox中安装并配置CentOS7。在本篇将讲述如何在CentOS7中安装JDK和Tomcat,为今后的需要,本篇将介绍如何安装Oracle JDK8和Tomcat8。

软件准备
本篇采用tar.gz安装,当然也可以采用rpm方式安装或yum方式安装,至于后两种安装方式感兴趣的请自行查阅相关文章。
JDK文件:jdk-8u131-linux-x64.tar.gz
官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Tomcat文件:apache-tomcat-8.5.15.tar.gz
官方下载地址:http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.15/bin/apache-tomcat-8.5.15.tar.gz
或:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
注意:因为在前两篇文章中都是以CentOS7 x64来介绍的,所以这里下载的压缩包也都是x64的。

安装Oracle JDK
卸载OpenJDK
采用前面的方式安装CentOS7时,默认安装了OpenJDK1.8的,OpenJDK其实就是也是在Java规范上的另一种实现,就如同Mono也是按照微软的.NET规范实现的一样,在一个平台上编译后的文件可以直接在另一个平台上运行,反正几年前我就干过在Windows上用Microsoft Visual Studio编写ASP.NET程序然后放在Linux系统上借助Apache+Mono+xsp运行。
因为后面还有更多内容依赖于Java,所以这里就卸载OpenJDK而安装Oracle JDK了。
检查当前系统是否安装JDK,运行命令:
rpm -qa | grep jdk
得到结果如下:
java-1.8.0-openjdk-headless-1.8.0.131-2.b11.el7_3.x86_64
java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64
copy-jdk-configs-1.2-1.el7.noarch
卸载OpenJDK,运行命令:

yum remove java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64
yum remove java-1.8.0-openjdk-headless-1.8.0.131-2.b11.el7_3.x86_64

此时如果再运行rpm -qa | grep jdk就会看到java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64被卸载了。

安装Oracle JDK
按照本文提供的地址将jdk-8u131-linux-x64.tar.gz下载到宿主机,然后借助SSH客户端软件SSHSecureShellClient上传到/root目录。
解压文件:

tar –zxf /root/ jdk-8u131-linux-x64.tar.gz

解压后会在/root目录下多出一个jdk1.8.0_131文件夹来,然后通过下面的命令将其移动到/usr/local目录下:

mv ./jdk1.8.0_131/ /usr/local

注意:/usr/local/ jdk1.8.0_131这个目录在设置JDK环境变量时会用到。

下面就需要配置环境变量了,告诉系统Java的相关信息,如安装路径、类库路径等。这里有两种配置方式:一种是为指定用户配置,一种是为所有用户配置,如果只为某个用户配置那么只需在该用户目录下的.bashrc文件中设置即可,如果需要给所有用户设置,那么就需要在/etc/profile中设置,这里以全局设置为例,打开/etc/profile文件在最后添加如下内容:

export JAVA_HOME=/usr/local/jdk1.8.0_131
export JRE_HOME=/usr/local/jdk1.8.0_131 
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$PATH:$JAVA_HOME/bin

然后使配置生效,执行如下命令:

source /etc/profile

现在可以检查Java环境变量是否配置正确了,通过java –version命令,在本人机器上得到如下输出:
[[email protected] ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

至此,Oracle JDK已正确安装。

安装Tomcat8
按照本文提供的地址将apache-tomcat-8.5.15.tar.gz下载至本地宿主机(注:也可在能访问互联网的虚拟机上直接用wget下载到虚拟机上),然后借助SSH客户端软件SSHSecureShellClient上传到/root目录。

解压文件:

tar –zxf /root/ jdk-8u131-linux-x64.tar.gz

解压后会在/root目录下多出一个apache-tomcat-8.5.15文件夹来,然后通过下面的命令将其移动到/usr/local目录下:

mv ./apache-tomcat-8.5.15/ /usr/local

注意:/usr/local/ apache-tomcat-8.5.15这个目录在设置Tomcat环境变量时会用到。当然,也可以不设置Tomcat相关的环境变量,使用相关脚本对Tomcat进行操作时会自动检测这些环境变量。
至此,Tomcat已经安装完成。
通过如下命令启动Tomcat:

/usr/local/ apache-tomcat-8.5.15/bin/startup.sh

如果要关闭Tomcat也很简单,执行如下命令:

/usr/local/ apache-tomcat-8.5.15/bin/stop.sh

注意:使用/usr/local/ apache-tomcat-8.5.15/bin/catalina.sh加上参数也可以启动或者停止Tomcat,如 /usr/local/ apache-tomcat-8.5.15/bin/catalina.sh start来启动Tomcat,/usr/local/ apache-tomcat-8.5.15/bin/catalina.sh stop来停止Tomcat,除此之外还可以使用debug/run/configtest/version参数,不过没有restart参数来重启Tomcat。

可以在虚拟机打开http://localhost:8080观看那个属性的Tomcat起始页了,在宿主机中则要以虚拟机的IP地址来访问了(前提是虚拟机至少有一个网卡是桥接模式),在本人机器上虚拟机有个网卡是桥接的,IP地址为:192.168.60.198,与宿主机在一个网段,因此可以以http://192.168.60.198:8080来查看了,如下图所示:
注意:如果可以通过ssh连接虚拟机但不能打开http://192.168.60.198:8080,那么很有可能是防火墙问题,执行如下命令关闭防火墙:

systemctl disable firewalld

重启后即可访问。

在CentOS7为Tomcat添加服务(使用systemctl来操作Tomcat)
为了能让Tomcat能够随CentOS7启动,其实就是能够通过systemctl start/stop/restart来控制Tomcat。在网上有不少在CentOS7以前版本中的例子,都是通过在/etc/rc.d/init.d或/etc/init.d目录中添加脚本来实现的,在CentOS7中提供了另外一种方式,使用systemctl来替代了service,具体就是在/usr/lib/systemd/system或/etc/systemd/system/目录添加控制命令。
Systemctl用法

在CentOS7中有关系统服务的命令有:
systemctl list-units(等同于systemctl):列出激活的服务
systemctl --failed:列出运行失败的服务
systemctl daemon-reload:扫描新的或有变动的服务
systemctl status A.serivice:查看A这个服务的启动信息(注意在运行时需要将A这个名称改为具体的service的名字,下同,如SSH服务对应的sshd.service),这个命令在启动服务失败时查看原因非常有用
systemctl enable A.service:设置A这个service随系统一起启动
systemctl disable A.service:禁止A这个service随系统一起启动
systemctl start A.service:启动A这个service
systemctl stop A.service:停止A这个service
systemctl restart A.service:重新启动A这个service

注意:在实际操作中,上述命令中A.service可简化为A,如systemctl enable A.service可简化为systemctl enable A。

给Tomcat增加启动参数
前面的讲述了如何安装Oracle JDK8和Tomcat8.5,并展示了使用Tomcat安装位置下的bin目录中的startup.sh/stop.sh或catalina.sh start/catalina.sh stop来启动或者关闭Tomcat。但在实际开发中我们还是希望Tomcat能够在系统启动的时候自动启动,而不是手工通过命令行来启动,下面就讲述如何将Tomcat添加到CentOS7的启动服务中。
首先我们记住以下三点:
1.Oracle JDK8安装目录:/usr/local/jdk1.8.0_131
2.Tomcat8安装目录:/usr/local/apache-tomcat-8.5.15
3.并且在/etc/profile中配置了Java相关的环境变量:

export JAVA_HOME=/usr/local/jdk1.8.0_131
export JRE_HOME=/usr/local/jdk1.8.0_131 
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$PATH:$JAVA_HOME/bin

首先需要在Tomcat的安装目录下的bin目录下增加setenv.sh文件,可以通过vim /usr/local/ apache-tomcat-8.5.15/bin/setenv.sh来创建文件,并将如下内容粘贴进去后保存:

#set JAVA_HOME and JRE_HOME and CATALINA_HOME and CATALINA_BASE
export JAVA_HOME=/usr/local/jdk1.8.0_131
export JRE_HOME=/usr/local/jdk1.8.0_131/jre
export CATALINA_HOME=/usr/local/apache-tomcat-8.5.15
export CATALINA_BASE=/usr/local/apache-tomcat-8.5.15
#set JAVA_HOME and JRE_HOME and CATALINA_HOME and CATALINA_BASE

#add tomcat pid
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
#add Java opts
JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"

也就是设置JAVA_HOME /JRE_HOME/CATALINA_HOME/CATALINA_BASE/CATALINA_PID五个环境变量。
注意:
1.刚刚建立的setenv.sh文件会在通过执行catalina.sh来启动Tomcat时被自动调用。
2.之前学习时在网上看到有不少文章提到仅设置CATALINA_HOME/CATALINA_BASE/CATALINA_PID三个环境变量的,本人一直没成功,通过systemctl status命令查看说是缺少JAVA_HOME /JRE_HOME配置信息,配置JAVA_HOME /JRE_HOME之后就可以成功启动。前面也说了,本人在/etc/profile中也配置了JAVA_HOME /JRE_HOME的。
3.另外因为配置了tomcat.pid文件,所以在启动Tomcat时会在Tomcat根目录自动生成tomcat.pid文件,停止Tomcat之后tomcat.pid文件会自动被删除。使用tomcat.pid可以做到防止多次执行catalina.sh或startup.sh启动Tomcat时会启动多个实例的情形。

创建tomcat.service文件
接着增加tomcat.service文件,可以通过/usr/lib/systemd/system/tomcat.service来创建文件并下以下内容粘贴进去,然后保存:

[Unit]
Description=Apache Tomcat 8.5.15
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/apache-tomcat-8.5.15/tomcat.pid
ExecStart=/usr/local/apache-tomcat-8.5.15/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

然后可以执行如下命令来检验是否配置正确:
systemctl enable tomcat.service:设置tomcat这个service随系统一起启动
systemctl disable tomcat.service:禁止tomcat这个service随系统一起启动
systemctl start tomcat.service:启动tomcat这个service
systemctl stop tomcat.service:停止tomcat这个service
systemctl restart tomcat.service:重新启动tomcat这个service

tomcat.service文件结构说明
上面讲述的tomcat.service文件包含[unit]、[service]、[install]三部分,其中:
[unit]配置了tomcat服务的描述和启动顺序,在本实例中规定了在network启动之后执行
[service]配置tomcat服务的pid,服务的启动,停止,重启命令
[install]配置了tomcat运行时的使用用

时间: 2024-12-14 10:13:58

开发人员学Linux(3):CentOS7中安装JDK8和Tomcat8的相关文章

开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube6.4

1.前言上一章讲述了如何配置使用源代码管理工具SVN并使之与Apache集成,从而实现代码的变更可追溯,虽然在大多数团队里强调代码提交之前必须找团队中经验丰富的人来审核通过后方可提交,但这一条有时候不是所有时候都能得到满足,有没有依赖于机制而不是人来保证代码质量呢,我们知道计算机的缺点也是优点之一就是可以忠实执行指令.答案是有的,那就是SonarQube,其官方网址为:https://www.sonarqube.org/,目前最新版本为6.4.SonarQube是一个开源平台,用于管理源代码的质

开发人员学Linux(4):使用JMeter对网站和数据库进行压力测试

前言表面看来,JMeter与本系列课程似乎关系不大,但实际上在后面的很多场景中起着重要作用:如何获知修改了某些代码或者设置之后系统性能是提升了还是下降了呢?商业的压力测试工具LoadRunner确实很高大上,但是据说费用也不便宜且体积也不小,而目前最高版本的开源免费压力测试工具JMeter3.2压缩包体积才不到53M,而且对于开发人员而非专业测试人员来说,JMeter提供的测试功能已经够强大了.要完整地介绍JMeter,即使把JMeter自带的文档翻译成中文就是一本厚厚的书了.但是在本篇只讲述如

开发人员学Linux之终结篇:大型系统开发经验谈

1.前言这篇文章来源于我的一个ppt,而这个ppt是源于一个朋友的一次邀请,朋友邀请我为一个公司做一堂大约2小时的技术讲座,我选定的方向是如何开发一个大型系统,在这里我对大型系统的定义为日均PV在千万级以上,而京东和淘宝这类则属于巨型系统了.因此在本篇中讲述的都是基于一些开源免费的技术实现,至于那些通过F5硬件加速.DNS来实现负载均衡.CDN加速等需要花钱购买的技术或者服务则不再本篇介绍范围之类.本来此篇是作为<开发人员学Linux>系列的终结篇最后出现的,但是考虑到在此过程中我可能会由于时

centos7下安装Jdk8、Tomcat8小计

申请到一台 三 丰 云 免 费 主 机,安装centos操作系统,记录一下centos7下安装Jdk8.Tomcat8的操作 一.JDK1.8 环境搭建 1.上传文件解压 [[email protected] mysoft]# tar -zxvf jdk-8u161-linux-x64.tar.gz[[email protected] mysoft]# pwd/usr/local/mysoft[[email protected] mysoft]# mv jdk1.8.0_161 jdk1.8 2

开发人员学Linux(13):CentOS7安装配置IT设备监控系统Zabbix

1.前言 在前一篇讲述了如何安装Memcached和Redis,在这一篇主要讲述如何安装企业级IT设备监控系统Zabbix.本人曾在某大型集团公司信息化部门工作,公司在多个城市以及一个城市的多个区有办公区,在那里不仅会开发软件系统,还需要对大量的软件系统.操作系统及IT设备进行监控,以保证IT基础设施能够7×24小工作.在没有实施系统之前,经常接到电话被告知网络中断了或是某个应用程序无法使用了,每次接到电话之后首先要排除是否误报,然后再分析是哪里出了问题,最终找出解决办法.每次处理事情的周期很长

开发人员学Linux(2):VirtualBox中安装CentOS7系统设置

上一篇<VirtualBox中安装CentOS7过程记录>中讲述了如何安装VirtualBox和在VirtualBox中安装CentOS7,但是限于篇幅有很多问题没有展开,在本篇将展开介绍VirtualBox和CentOS的设置问题.VirtualBox支持的虚拟机文件类型VDI: Virtual Disk Image,这是VirtualBox默认使用的虚拟机文件类型.VMDK:这是VMware默认使用的虚拟机文件类型.VHD:这是微软出品虚拟机软件默认使用的虚拟机文件类型.在创建虚拟机时选择

开发人员学Linux(6):CentOS7编译安装MySQL5.17.8多实例及主从复制

1.前言上一篇讲述了如何在CentOS7下编译安装Nginx-1.12.0并如何配置反向代理,本篇将讲述如何编译安装MySQL5.7.18并配置多实例.2.准备2.1下载MySQL5.7.18源码注意最新版本的MySQL需要Boost才能编译安装,在MySQL提供的下载中有不带boost的源码,还有带boost的源码,如果下载不带boost的源码还需要再去下载boost源码,为省事起见,建议下载带boost的源码,下载地址:https://cdn.mysql.com//Downloads/MyS

开发人员学Linux(9):CentOS7编译安装Git-2.13.1及使用

1.前言在上一篇讲述了如何在CentOS7上编译安装Subversion1.9.5和Apache2.4.25,并与Apache2.4.25集成,达到多个SVN版本库集中授权控制的效果.在传统的企业里面使用SVN来作为源代码版本工具的比例是比较高的,但在一些互联网企业里面很多已经在使用git来作为源代码版本管理工具了.网上关于SVN和Git的比较说明是很多的,其中最重要一个区别就是SVN是集中式的,git是分布式的,比如要查看版本库的历史提交记录,在SVN中必须要在能够连接到SVN服务器才可以,而

开发人员学Linux(8):CentOS7编译安装Subversion1.9.5及Apache2.4.25并集成

1.前言本篇将介绍如何编译安装SVN服务器端管理软件subverion和Web服务器Apache.本来在前面的系列文章已经讲过使用Nginx作为Web服务器的,所以我一直在找有关subverion集成nginx的资料,在此过程中找到了Nginx作者Igor Sysoev在回答别人类似问题的网址,网址是http://mailman.nginx.org/pipermail/nginx/2007-January/000504.html,不过按照Igor Sysoev的回答并没有成功,因此仍回到Apac