CentOS系統(tǒng)自帶的軟件版本比較陳舊,比如Tomcat官方有已經(jīng)更新到了Tomcat 9,內(nèi)置的還是Tomcat 7。使用起來十分不便,最近因?yàn)轫?xiàng)目需求,下載安裝了Tomcat 8,特把過程記錄如后。
1、安裝Java開發(fā)運(yùn)行環(huán)境
CentOS 7軟件倉(cāng)庫(kù)中內(nèi)置有Java 1.7、1.8,我們可以直接通過yum指令安裝。
1.1 安裝
# 安裝Java 1.8運(yùn)行環(huán)境
sudo yum install java-1.8.0-openjdk
1.2 查看Java版本
java -version
1.3 配置Java環(huán)境變量
編輯/etc/profile文件:
sudo vi /etc/profile
在文件的最后加入以下幾行,用來設(shè)置JAVA_HOME、CLASS_PATH和PATH環(huán)境變量:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/
export CLASS_PATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
2、安裝Tomcat
2.1 下載Tomcat 8.5.34
通過wget指令,下載Tomcat 8.5.34:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz
2.2 解壓縮
tar -zxvf apache-tomcat-8.5.34.tar.gz
mv apache-tomcat-8.5.34 /opt/
2.3 配置Tomcat運(yùn)行參數(shù)
在tomcat/bin目錄下,新建setenv.sh文件,內(nèi)容如下:
# Set Catalina Base
export CATALINA_BASE=/opt/apache-tomcat-8.5.34/
# Set Tomcat Pid file
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
# Set JAVA Options
JAVA_OPTS="-server -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=1024m -Xms1024M -Xmx2048M -XX:MaxNewSize=256m"
2.4 創(chuàng)建Tomcat用戶并授權(quán)
getent group tomcat || groupadd -r tomcat
getent passwd tomcat || useradd -r -d /opt -s /bin/nologin -g tomcat tomcat
chown -R tomcat:tomcat /opt/apache-tomcat-8.5.34
2.5 配置Tomcat
在/usr/lib/systemd目錄下,新建一個(gè)tomcat.service:
vi /usr/lib/systemd/system/tomcat8.service
內(nèi)容如下(注意把下面的/opt/apache-tomcat-8.5.34/路徑修改為你的Tomcat實(shí)際安裝路徑):
[Unit]
Description=Apache Tomcat 8
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/opt/apache-tomcat-8.5.34/bin/tomcat.pid
ExecStart=/opt/apache-tomcat-8.5.34/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
2.6 啟用、啟動(dòng)Tomcat服務(wù)器
systemctl enable tomcat8 # 啟用Tomcat8服務(wù)
systemctl start tomcat8 # 啟動(dòng)Tomcat8服務(wù)
2.7 打開防火墻
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
3、其他幾個(gè)小問題
手工下載、解壓縮、配置安裝的Tomcat,會(huì)碰到幾個(gè)小問題。雖然解決起來不算麻煩,但還是記錄下來,方便參考。
3.1 APR 問題
Tomcat啟動(dòng)時(shí)提示找不到APR:
info [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
主要是缺少APR、tomcat-native,安裝上就可以了:
sudo yum install apr apr-util tomcat-native
另外,APR即時(shí)安裝了,還是沒有啟用的。你看看Tomcat的啟動(dòng)日志catalina.out,如果里面有http-nio-8080表示使用的還是NIO模式。我們還需要修改Tomcat安裝目錄的conf/server.xml文件。
將默認(rèn)值:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改為:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
redirectPort="8443" />
將默認(rèn)值:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改為:
<Connector port="8009" protocol="org.apache.coyote.ajp.AjpAprProtocol" redirectPort="8443" />
3.2 啟動(dòng)特別慢問題
Tomcat啟動(dòng)的特別慢,需要60多秒,看了下日志信息,發(fā)現(xiàn)有如下提示:
22-Sep-2018 14:48:28.359 WARNING [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [56,009] milliseconds.
主要是tomcat的session id的生成慢了(通過java.security.SecureRandom生成隨機(jī)數(shù)來實(shí)現(xiàn)),在setenv.sh文件中加入以下參數(shù),問題解決:
# 使用file:/dev/./urandom, 加快啟動(dòng)速度
export JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"