1. 程式人生 > 實用技巧 >CentOS7 + JDK8 + Tomcat8.5 實現HTTP/2服務

CentOS7 + JDK8 + Tomcat8.5 實現HTTP/2服務

需要在作業系統中安裝libtcnative

一、環境準備

1.1 安裝APR

下載apr-1.7.0.tar.gz、apr-util-1.6.1.tar.gz ,下載地址https://mirror.bit.edu.cn/apache/apr/

上傳至/home 目錄下後解壓;

執行:

#cd /home/apr-1.7.0
#./configure
#make
#make install
cd /home/apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
make install

1.2 下載安裝openSSL,地址

https://www.openssl.org/source/

cd /home/openssl
./config
make
make install

1.3 下載安裝Tomcat Native,地址http://tomcat.apache.org/download-native.cgi

同樣解壓後執行:

cd /home/tomcat-native-1.2.24-src/native
./configure --with-apr=/usr/local/apr --with-ssl=/usr/local/openssl --with-java-home=${JAVA_HOME}
make
make install

1.4 配置 /etc/profile 檔案,在末尾追加紅色資訊:

unset i
unset -f pathmunge

if [ -n "${BASH_VERSION-}" ] ; then
        if [ -f /etc/bashrc ] ; then
                # Bash login shells run only /etc/profile
                # Bash non-login shells run only /etc/bashrc
                # Check for double sourcing is done in /etc/bashrc.
                . /etc/bashrc
       fi
fi

export JAVA_HOME
=/usr/java/jdk1.8.0_131 export JRE_HOME=${JAVA_HOME}/jre export HADOOP_HOME=/home/hadoop-3.3.0 export HIVE_HOME=/home/hive-3.1.2 export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH:$HIVE_HOME/bin:$JAVA_HOME/bin export LD_LIBRARY_PATH=/usr/local/apr/lib:$LD_LIBRARY_PATH

二、配置tomcat 8.5

1、在/home/apache-tomcat-8.5-jjdemo/bin 目錄中建立setenv.sh檔案, 內容如下:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
export LD_LIBRARY_PATH

2、修改server.xml 檔案的Connector 節點資訊:

    <Connector port="996"               keepAliveTimeout="15"
               maxKeepAliveRequests="200"
               maxThreads="5000"
               minSpareThreads="50"
               acceptCount="500" 
               acceptorThreadCount="500"
               URIEncoding="UTF-8"
               enableLookups="false"
               compression="on"
               compressionMinSize="10240"
               noCompressionUserAgents="gozilla,traviata"
               compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
               connectionTimeout="20000"
               disableUploadTimeout="true"
               protocol="org.apache.coyote.http11.Http11Nio2Protocol"
               SSLEnabled="true" >
         <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
         <SSLHostConfig>
            <Certificate certificateKeyFile="conf/cert/4016613_jjdemo.xuetz.com.key"
                         certificateFile="conf/cert/4016613_jjdemo.xuetz.com.pem"
                         type="RSA" />
         </SSLHostConfig>
    </Connector>    

其中證書從阿里雲SSL證書的“其他”類別中下載:

3、重啟tomcat 檢視日誌資訊,出現以下資訊表示配置成功:

27-Aug-2020 11:01:51.545 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/home/apache-tomcat-8.5-jjdemo/temp
27-Aug-2020 11:01:51.545 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.24] using APR version [1.7.0].
27-Aug-2020 11:01:51.545 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
27-Aug-2020 11:01:51.545 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
27-Aug-2020 11:01:51.552 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.0.2u  20 Dec 2019]
27-Aug-2020 11:01:51.662 INFO [main] org.apache.coyote.http11.AbstractHttp11Protocol.configureUpgradeProtocol The ["https-openssl-nio2-996"] connector has been configured to support negotiation to [h2] via ALPN
27-Aug-2020 11:01:51.663 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["https-openssl-nio2-996"]

4、訪問頁面後,檢視localhost_access_log.2020-08-27.txt 檔案,出現HTTP/2.0表示執行成功:

110.87.56.235 - - [27/Aug/2020:11:02:38 +0800] "GET /jjdemo/page/main.jsp HTTP/2.0" 302 -
110.87.56.235 - - [27/Aug/2020:11:02:39 +0800] "GET /jjdemo/page/loginXuetz.jsp HTTP/2.0" 200 8425
110.87.56.235 - - [27/Aug/2020:11:02:39 +0800] "GET /jjdemo/base/user/imageCode?width=150 HTTP/2.0" 200 1979
110.87.56.235 - - [27/Aug/2020:11:02:45 +0800] "POST /jjdemo/base/user/doLogin HTTP/2.0" 200 29
110.87.56.235 - - [27/Aug/2020:11:02:45 +0800] "GET /jjdemo/page/main.jsp HTTP/2.0" 200 15956
110.87.56.235 - - [27/Aug/2020:11:02:45 +0800] "GET /rescore/easyui/themes/default/images/loading.gif HTTP/2.0" 404 1048
110.87.56.235 - - [27/Aug/2020:11:02:45 +0800] "GET /rescore/easyui/themes/default/images/loading.gif HTTP/2.0" 404 1048
110.87.56.235 - - [27/Aug/2020:11:02:45 +0800] "POST /jjdemo/esm/api/visit/count HTTP/2.0" 200 60
110.87.56.235 - - [27/Aug/2020:11:02:45 +0800] "POST /jjdemo/esm/api/visit/week HTTP/2.0" 200 51