linux上部署與配置tomcat

本文首發於我的個人網站: https://hewanyue.com/
本文作者: Hechao
本文鏈接: https://hewanyue.com/blog/b365780e.html

  Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器。因爲Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟件開發商的認可,成爲目前比較流行的Web 應用服務器。本文將詳細講解tomcat在linux環境(以CentOS爲例)中的安裝與配置。

安裝jdk

  JDK是java Development Kit的縮寫,即java語言的軟件開發包,是javac、javap、jdb等開發、調試、編譯工具。
  OpenJDK是Sun公司採用GPL v2協議發佈的JDK開源版本,可以用於商業用途,於2009年正式發佈。它是基於JDK7的beta版開發,但爲了也將java SE 6開源,從OpenJDK7的b20構建反向分之開發,從中剝離了不符合java SE 6規範的代碼,發佈了OpenJDK 6。所以OpenJDK6和JDK6沒有關係。
  在CentOS中,可以選擇yum安裝openjdk

yum install java-1.8.0-openjdk

  通過java -version可以看到版本信息爲

openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8,0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04,mixed mode)

  也可以去Oracle官網下載JDK 8的rpm包安裝(需要註冊)

yum install jdk-8u191-linux-x64,rpm

  而通過java -version看到版本信息爲

[root@localhost ~]#  java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

部署tomcat

  確定JDK版本之後,我們就可以準備開始部署tomcat了。
  首先要去官網下載源碼包,國內用的是清華大學的鏡像下載地址,下載速度還是可以接受的。
  生產中我們一般不會選用最新版的tomcat9,而是選用tomcat8更爲穩妥。tomcat8的下載鏈接是http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.tar.gz

wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.tar.gz

  解壓到想要安裝的任意指定目錄,例如/apps/tomcat/目錄

tar xvf apache-tomcat-8.5.47.tar.gz -C /apps/

  更改目錄名稱(也可以用軟連接方式)。

mv /apps/apache-tomcat-8.5.47 /apps/tomcat

配置環境變量

  jdk需要配置環境變量纔可以找到,否則會無法訪問jsp文件。
  需要在環境變量配置文件中加入

export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH

  於是,運行下面命令即可

cat > /etc/profile.d/jdk.sh <<"END"
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
END

  運行命令使環境變量生效

. /etc/profile.d/jdk.sh

修改進程屬主

  一般來說,tomcat服務如果以root身份啓動,風險還是很高的,因爲tomcat本身bug還是有不少的,如果被別有用心之人加以利用,入侵進來,就可以獲得root權限,這造成的後果絕對是災難級的,這甚至會威脅到其他服務器的安全。爲了規避這一風險,我們一般都會將tomcat服務以一個系統用戶的身>份啓動,例如java用戶。
  創建java用戶useradd -r java
  更改服務目錄的屬主屬組chown -R tomcat/*
  啓動服務時,我們使用命令su - java -c '/apps/tomcat/bin/startup.sh'來啓動,就可以以java用戶的身份來啓動進程了。

配置文件

  tomcat中配置文件目錄在tomcat/conf/server.xml,其中需要注意的是:

<Server port="8005" shutdown="SHUTDOWN">

  這代表管理端監聽在8005端口,向管理端發送SHUTDOWN指令就會是tomcat直接終止,而且這是不需要密碼權限控制的。如果在生產環境中,如果有任何人有意或者無意向tomcat服務器的8005端口發送了SHUTDOWN指令,整個服務都會被終止掉,,而且還不需要密碼驗證,這對我們的影響無疑是巨大的,所以我們通常都會將此處的管理監聽端口改掉,或將shutdown指令設爲別的複雜口令,讓別人無法輕易或不小心將我們的服務器shutdown~
  可採取MD5值的方式,選任一文件做MD5運算後得到的隨機數值即爲口令。

sed -i "s@SHUTDOWN@`md5sum /root/.ssh/authorized_keys |cut -d' ' -f1`@" tomcat/conf/server.xml

  此時,就可以通過安裝目錄下的tomcat/bin/startup.sh來啓動tomcat服務了。

su - java -c '/apps/tomcat/bin/startup.sh'

  然後查看端口

ss -tanl

  即可看到8080端口已經處於監聽狀態了

[root@localhost ~]# ss -tanl
State       Recv-Q Send-Q                     Local Address:Port                                    Peer Address:Port              
LISTEN      0      128                                    *:22                                                 *:*                  
LISTEN      0      100                            127.0.0.1:25                                                 *:*                  
LISTEN      0      100                                   :::8009                                              :::*                  
LISTEN      0      100                                   :::8080                                              :::*                  
LISTEN      0      128                                   :::22                                                :::*                  
LISTEN      0      100                                  ::1:25                                                :::*                  
LISTEN      0      1                       ::ffff:127.0.0.1:8005                                              :::*                  
[root@localhost ~]# 

  訪問tomcat服務器的ip的8080端口,可看到如下圖所示界面,即表示tomcat安裝成功。
在這裏插入圖片描述
  不過,想使用tomcat自帶的Manager App及Host Manager工具,還需要做一些額外的配置,此時如果直接訪問會顯示403權限拒絕,如下圖所示。
在這裏插入圖片描述

修改應用訪問控制

  錯誤提示說明已經說得很明白了,首先確保已經修改了應用的反問控制權限,,如果還沒有,you’ll need to edit the Manager’s context.xml file。
  那這個context.xml在哪裏呢?它是指應用的上下文設置文件,路徑就是tomcat目錄下的webapps/manager/META-INF/context.xml文件,另一個應用Host Manager的路徑就是tomcat目錄下的webapps/host-manager/META-INF/context.xml
  所以我們要修改這兩個配置文件中的訪問控制,將我們的訪問IP加到裏面,這樣我們的訪問IP纔有權限去訪問這兩個管理應用。

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|172.18.*|192.168.32.*" />

  在allow=標籤後面,加上我們的ip,支持通配符寫法和PCRE格式的正則表達式寫法,用|隔開。兩個應用的配置文件都要修改。

創建權限角色

光將我們的來訪IP加入許可白名單還是不夠的,我們還需要一個有權限的賬戶纔可以訪問這些管理工具
路徑是tomcat目錄下的conf/tomcat-users.xml文件。

<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
    <role rolename="manager-gui"/>
    <role rolename="admin-gui"/>
    <user username="admin" password="123456" roles="manager-gui,admin-gui"/>

  在下面加入後三行,先創建角色"manager-gui""admin-gui",分別是Manager App的管理員和Host Manager的管理員。然後設置用戶名密碼及其所處的角色,也可以設置兩個不同的用戶來分別充當這兩個角色。用戶名密碼可自行設置。

    <role rolename="manager-gui"/>
    <role rolename="admin-gui"/>
    <user username="admin" password="123456" roles="manager-gui,admin-gui"/>

  有了管理員權限的賬戶,在被允許的客戶端上就可以訪問Manager AppHost Manager這兩個工具了。點擊圖標訪問,出現如下圖所示的提示輸入用戶名密碼彈窗,說明配置正確。
在這裏插入圖片描述

附:一鍵部署tomcat腳本

  附上我自己用的tomcat腳本供大家參考(未配置管理工具)

DST="/apps"
[ -a jdk-8u231-linux-x64.rpm ] || { echo ' the absence of jdk' ;exit 1;}
[ -d $DST/*tomcat* ] && { echo "tomcat is aready installed into $DST/tomcat" ;exit 2;}
id java &>/dev/null && { echo 'user java is exist,redis is aready installed' ; exit 3;}
iptables -F
systemctl disable firewalld
sed -i '@SELINUX=enforcing@SELINUX=disabled@' /etc/selinux/config
setenforce 0
mkdir -p /data$DST
#mkdir -p $DST
ln -s /data$DST $DST
yum install jdk-8u231-linux-x64.rpm
tar xf *tomcat-*.tar.* -C $DST/
mv $DST/*tomcat-* $DST/tomcat
sed -i "s@SHUTDOWN@`md5sum /root/.ssh/authorized_keys |cut -d' ' -f1`@" $DST/tomcat/conf/server.xml
cat > /etc/profile.d/jdk.sh <<"END"
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
END
. /etc/profile.d/jdk.sh
useradd -r java
chown -R java.java $DST/tomcat/*
su - java -c '$DST/tomcat/bin/startup.sh'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章