1. 程式人生 > >開發人員學Linux(3):CentOS7中安裝JDK8和Tomcat8

開發人員學Linux(3):CentOS7中安裝JDK8和Tomcat8

java tomcat jdk service centos

題外話:直到今天開始寫本系列的第三篇時本人才想好為這個系列取一個名字,本系列不是為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運行時的使用用

本文出自 “周公(周金橋)的專欄” 博客,請務必保留此出處http://zhoufoxcn.blog.51cto.com/792419/1929559

開發人員學Linux(3):CentOS7中安裝JDK8和Tomcat8