debian-base

docker run -it --rm debian:10 bash

sed -i "s|deb.debian.org|mirrors.huaweicloud.com|g" /etc/apt/sources.list && \
sed -i "s|security.debian.org|mirrors.huaweicloud.com|g" /etc/apt/sources.list && \
apt-get clean && \
apt-get update




apt-get install \
jq \
gnupg2 \
lsb-release \
git \
locales \
ca-certificates \
curl \
wget \
vim \
psmisc \
procps \
autoconf \
gcc \
make \
tcl \
gettext \
difference \
iproute2 \
tree \
-yq

innstall-jdk-and-tomcat

mkdir -p /usr/local/java && mkdir -p /usr/local/tomcat;

curl -fksSL https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz | tar -xvz --strip-components 1 -C /usr/local/java;

curl -fksSL https://mirrors.huaweicloud.com/apache/tomcat/tomcat-8/v8.5.61/bin/apache-tomcat-8.5.61.tar.gz | tar -xvz --strip-components 1 -C /usr/local/tomcat;


echo "JAVA_HOME=/usr/local/java" >> /etc/profile.d/myenv.sh; \
echo "TOMCAT_HOME=/usr/local/tomcat" >> /etc/profile.d/myenv.sh; \
echo "PATH=\$PATH:\$JAVA_HOME/bin:\$TOMCAT_HOME/bin" >> /etc/profile.d/myenv.sh;


. /etc/profile

java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

install-apr

make-and-install

mkdir -p /opt/src/openssl;
mkdir -p /opt/src/apr;
mkdir -p /opt/src/apr-util;
mkdir -p /opt/src/apr-iconv;

curl -fksSL https://www.openssl.org/source/openssl-1.1.1i.tar.gz |tar -xvz --strip-components 1 -C /opt/src/openssl;
curl -fksSL https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.7.0.tar.gz | tar -xvz --strip-components 1 -C /opt/src/apr;
curl -fksSL https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.6.1.tar.gz | tar -xvz --strip-components 1 -C /opt/src/apr-util;
curl -fksSL https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-iconv-1.2.2.tar.gz | tar -xvz --strip-components 1 -C /opt/src/apr-iconv;


cd /opt/src/openssl;

./config --prefix=/usr/local/openssl;
make && make install;


cd /opt/src/apr;
## 默认--prefix=/usr/local/apr
./configure --prefix=/usr/local/apr;
make && make install;


cd /opt/src/apr-iconv;

## 默认--prefix=/usr/local/apache2
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr;
make && make install;


cd /opt/src/apr-util;
## 默认--prefix=/usr/local/apr
./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr --with-openssl=/usr/local/openssl --with-apr-iconv=../apr-iconv;
make && make install;
xml/apr_xml.c:35:10: fatal error: expat.h: No such file or directory
 #include <expat.h>
          ^~~~~~~~~
compilation terminated.
make[1]: *** [/opt/src/apr-util/build/rules.mk:206: xml/apr_xml.lo] Error 1
make[1]: Leaving directory '/opt/src/apr-util'
make: *** [/opt/src/apr-util/build/rules.mk:118: all-recursive] Error 1



apt-get install libexpat1-dev -y

installed

全部安装完后的目录结构

root@0df6339ce1c4:/# tree /usr/local/apr/
+ tree /usr/local/apr/
/usr/local/apr/
├── bin
│   ├── apr-1-config
│   ├── apriconv
│   └── apu-1-config
├── build-1
│   ├── apr_rules.mk
│   ├── libtool
│   ├── make_exports.awk
│   ├── make_var_export.awk
│   └── mkdir.sh
├── include
│   └── apr-1
│       ├── api_version.h
│       ├── apr.h
│       ├── apr_allocator.h
│       ├── apr_anylock.h
│       ├── apr_atomic.h
│       ├── apr_base64.h
│       ├── apr_buckets.h
│       ├── apr_crypto.h
│       ├── apr_cstr.h
│       ├── apr_date.h
│       ├── apr_dbd.h
│       ├── apr_dbm.h
│       ├── apr_dso.h
│       ├── apr_encode.h
│       ├── apr_env.h
│       ├── apr_errno.h
│       ├── apr_escape.h
│       ├── apr_file_info.h
│       ├── apr_file_io.h
│       ├── apr_fnmatch.h
│       ├── apr_general.h
│       ├── apr_getopt.h
│       ├── apr_global_mutex.h
│       ├── apr_hash.h
│       ├── apr_hooks.h
│       ├── apr_iconv.h
│       ├── apr_inherit.h
│       ├── apr_ldap.h
│       ├── apr_ldap_init.h
│       ├── apr_ldap_option.h
│       ├── apr_ldap_rebind.h
│       ├── apr_ldap_url.h
│       ├── apr_lib.h
│       ├── apr_md4.h
│       ├── apr_md5.h
│       ├── apr_memcache.h
│       ├── apr_mmap.h
│       ├── apr_network_io.h
│       ├── apr_optional.h
│       ├── apr_optional_hooks.h
│       ├── apr_perms_set.h
│       ├── apr_poll.h
│       ├── apr_pools.h
│       ├── apr_portable.h
│       ├── apr_proc_mutex.h
│       ├── apr_queue.h
│       ├── apr_random.h
│       ├── apr_redis.h
│       ├── apr_reslist.h
│       ├── apr_ring.h
│       ├── apr_rmm.h
│       ├── apr_sdbm.h
│       ├── apr_sha1.h
│       ├── apr_shm.h
│       ├── apr_signal.h
│       ├── apr_siphash.h
│       ├── apr_skiplist.h
│       ├── apr_strings.h
│       ├── apr_strmatch.h
│       ├── apr_support.h
│       ├── apr_tables.h
│       ├── apr_thread_cond.h
│       ├── apr_thread_mutex.h
│       ├── apr_thread_pool.h
│       ├── apr_thread_proc.h
│       ├── apr_thread_rwlock.h
│       ├── apr_time.h
│       ├── apr_uri.h
│       ├── apr_user.h
│       ├── apr_uuid.h
│       ├── apr_version.h
│       ├── apr_want.h
│       ├── apr_xlate.h
│       ├── apr_xml.h
│       ├── apu.h
│       ├── apu_errno.h
│       ├── apu_version.h
│       └── apu_want.h
└── lib
    ├── apr.exp
    ├── aprutil.exp
    ├── iconv
    │   ├── _tbl_simple.a
    │   ├── _tbl_simple.la
    │   ├── _tbl_simple.so
    │   ├── adobe-stdenc.a
    │   ├── adobe-stdenc.la
    │   ├── adobe-stdenc.so
    │   ├── adobe-symbol.a
    │   ├── adobe-symbol.la
    │   ├── adobe-symbol.so
    │   ├── adobe-zdingbats.a
    │   ├── adobe-zdingbats.la
    │   ├── adobe-zdingbats.so
    │   ├── big5.a
    │   ├── big5.la
    │   ├── big5.so
    │   ├── cns11643-plane1.a
    │   ├── cns11643-plane1.la
    │   ├── cns11643-plane1.so
    │   ├── cns11643-plane14.a
    │   ├── cns11643-plane14.la
    │   ├── cns11643-plane14.so
    │   ├── cns11643-plane2.a
    │   ├── cns11643-plane2.la
    │   ├── cns11643-plane2.so
    │   ├── cp037.a
    │   ├── cp037.la
    │   ├── cp037.so
    │   ├── cp038.a
    │   ├── cp038.la
    │   ├── cp038.so
    │   ├── cp10000.a
    │   ├── cp10000.la
    │   ├── cp10000.so
    │   ├── cp10006.a
    │   ├── cp10006.la
    │   ├── cp10006.so
    │   ├── cp10007.a
    │   ├── cp10007.la
    │   ├── cp10007.so
    │   ├── cp10029.a
    │   ├── cp10029.la
    │   ├── cp10029.so
    │   ├── cp1006.a
    │   ├── cp1006.la
    │   ├── cp1006.so
    │   ├── cp10079.a
    │   ├── cp10079.la
    │   ├── cp10079.so
    │   ├── cp10081.a
    │   ├── cp10081.la
    │   ├── cp10081.so
    │   ├── cp1026.a
    │   ├── cp1026.la
    │   ├── cp1026.so
    │   ├── cp273.a
    │   ├── cp273.la
    │   ├── cp273.so
    │   ├── cp274.a
    │   ├── cp274.la
    │   ├── cp274.so
    │   ├── cp275.a
    │   ├── cp275.la
    │   ├── cp275.so
    │   ├── cp277.a
    │   ├── cp277.la
    │   ├── cp277.so
    │   ├── cp278.a
    │   ├── cp278.la
    │   ├── cp278.so
    │   ├── cp280.a
    │   ├── cp280.la
    │   ├── cp280.so
    │   ├── cp281.a
    │   ├── cp281.la
    │   ├── cp281.so
    │   ├── cp284.a
    │   ├── cp284.la
    │   ├── cp284.so
    │   ├── cp285.a
    │   ├── cp285.la
    │   ├── cp285.so
    │   ├── cp290.a
    │   ├── cp290.la
    │   ├── cp290.so
    │   ├── cp297.a
    │   ├── cp297.la
    │   ├── cp297.so
    │   ├── cp420.a
    │   ├── cp420.la
    │   ├── cp420.so
    │   ├── cp423.a
    │   ├── cp423.la
    │   ├── cp423.so
    │   ├── cp424.a
    │   ├── cp424.la
    │   ├── cp424.so
    │   ├── cp437.a
    │   ├── cp437.la
    │   ├── cp437.so
    │   ├── cp500.a
    │   ├── cp500.la
    │   ├── cp500.so
    │   ├── cp737.a
    │   ├── cp737.la
    │   ├── cp737.so
    │   ├── cp775.a
    │   ├── cp775.la
    │   ├── cp775.so
    │   ├── cp850.a
    │   ├── cp850.la
    │   ├── cp850.so
    │   ├── cp851.a
    │   ├── cp851.la
    │   ├── cp851.so
    │   ├── cp852.a
    │   ├── cp852.la
    │   ├── cp852.so
    │   ├── cp855.a
    │   ├── cp855.la
    │   ├── cp855.so
    │   ├── cp856.a
    │   ├── cp856.la
    │   ├── cp856.so
    │   ├── cp857.a
    │   ├── cp857.la
    │   ├── cp857.so
    │   ├── cp860.a
    │   ├── cp860.la
    │   ├── cp860.so
    │   ├── cp861.a
    │   ├── cp861.la
    │   ├── cp861.so
    │   ├── cp862.a
    │   ├── cp862.la
    │   ├── cp862.so
    │   ├── cp863.a
    │   ├── cp863.la
    │   ├── cp863.so
    │   ├── cp864.a
    │   ├── cp864.la
    │   ├── cp864.so
    │   ├── cp865.a
    │   ├── cp865.la
    │   ├── cp865.so
    │   ├── cp866.a
    │   ├── cp866.la
    │   ├── cp866.so
    │   ├── cp868.a
    │   ├── cp868.la
    │   ├── cp868.so
    │   ├── cp869.a
    │   ├── cp869.la
    │   ├── cp869.so
    │   ├── cp870.a
    │   ├── cp870.la
    │   ├── cp870.so
    │   ├── cp871.a
    │   ├── cp871.la
    │   ├── cp871.so
    │   ├── cp874.a
    │   ├── cp874.la
    │   ├── cp874.so
    │   ├── cp875.a
    │   ├── cp875.la
    │   ├── cp875.so
    │   ├── cp880.a
    │   ├── cp880.la
    │   ├── cp880.so
    │   ├── cp891.a
    │   ├── cp891.la
    │   ├── cp891.so
    │   ├── cp903.a
    │   ├── cp903.la
    │   ├── cp903.so
    │   ├── cp904.a
    │   ├── cp904.la
    │   ├── cp904.so
    │   ├── cp905.a
    │   ├── cp905.la
    │   ├── cp905.so
    │   ├── cp918.a
    │   ├── cp918.la
    │   ├── cp918.so
    │   ├── cp932.a
    │   ├── cp932.la
    │   ├── cp932.so
    │   ├── cp936.a
    │   ├── cp936.la
    │   ├── cp936.so
    │   ├── cp949.a
    │   ├── cp949.la
    │   ├── cp949.so
    │   ├── cp950.a
    │   ├── cp950.la
    │   ├── cp950.so
    │   ├── dec-mcs.a
    │   ├── dec-mcs.la
    │   ├── dec-mcs.so
    │   ├── ebcdic-at-de-a.a
    │   ├── ebcdic-at-de-a.la
    │   ├── ebcdic-at-de-a.so
    │   ├── ebcdic-at-de.a
    │   ├── ebcdic-at-de.la
    │   ├── ebcdic-at-de.so
    │   ├── ebcdic-ca-fr.a
    │   ├── ebcdic-ca-fr.la
    │   ├── ebcdic-ca-fr.so
    │   ├── ebcdic-dk-no-a.a
    │   ├── ebcdic-dk-no-a.la
    │   ├── ebcdic-dk-no-a.so
    │   ├── ebcdic-dk-no.a
    │   ├── ebcdic-dk-no.la
    │   ├── ebcdic-dk-no.so
    │   ├── ebcdic-es-a.a
    │   ├── ebcdic-es-a.la
    │   ├── ebcdic-es-a.so
    │   ├── ebcdic-es-s.a
    │   ├── ebcdic-es-s.la
    │   ├── ebcdic-es-s.so
    │   ├── ebcdic-es.a
    │   ├── ebcdic-es.la
    │   ├── ebcdic-es.so
    │   ├── ebcdic-fi-se-a.a
    │   ├── ebcdic-fi-se-a.la
    │   ├── ebcdic-fi-se-a.so
    │   ├── ebcdic-fi-se.a
    │   ├── ebcdic-fi-se.la
    │   ├── ebcdic-fi-se.so
    │   ├── ebcdic-fr.a
    │   ├── ebcdic-fr.la
    │   ├── ebcdic-fr.so
    │   ├── ebcdic-it.a
    │   ├── ebcdic-it.la
    │   ├── ebcdic-it.so
    │   ├── ebcdic-pt.a
    │   ├── ebcdic-pt.la
    │   ├── ebcdic-pt.so
    │   ├── ebcdic-uk.a
    │   ├── ebcdic-uk.la
    │   ├── ebcdic-uk.so
    │   ├── ebcdic-us.a
    │   ├── ebcdic-us.la
    │   ├── ebcdic-us.so
    │   ├── euc-jp.a
    │   ├── euc-jp.la
    │   ├── euc-jp.so
    │   ├── euc-kr.a
    │   ├── euc-kr.la
    │   ├── euc-kr.so
    │   ├── euc-tw.a
    │   ├── euc-tw.la
    │   ├── euc-tw.so
    │   ├── gb12345.a
    │   ├── gb12345.la
    │   ├── gb12345.so
    │   ├── gb2312.a
    │   ├── gb2312.la
    │   ├── gb2312.so
    │   ├── gb_2312-80.a
    │   ├── gb_2312-80.la
    │   ├── gb_2312-80.so
    │   ├── hp-roman8.a
    │   ├── hp-roman8.la
    │   ├── hp-roman8.so
    │   ├── iso-10646-ucs-2.a
    │   ├── iso-10646-ucs-2.la
    │   ├── iso-10646-ucs-2.so
    │   ├── iso-10646-ucs-4.a
    │   ├── iso-10646-ucs-4.la
    │   ├── iso-10646-ucs-4.so
    │   ├── iso-2022-cn.a
    │   ├── iso-2022-cn.la
    │   ├── iso-2022-cn.so
    │   ├── iso-2022-jp-2.a
    │   ├── iso-2022-jp-2.la
    │   ├── iso-2022-jp-2.so
    │   ├── iso-2022-jp.a
    │   ├── iso-2022-jp.la
    │   ├── iso-2022-jp.so
    │   ├── iso-2022-kr.a
    │   ├── iso-2022-kr.la
    │   ├── iso-2022-kr.so
    │   ├── iso-8859-1.a
    │   ├── iso-8859-1.la
    │   ├── iso-8859-1.so
    │   ├── iso-8859-10.a
    │   ├── iso-8859-10.la
    │   ├── iso-8859-10.so
    │   ├── iso-8859-13.a
    │   ├── iso-8859-13.la
    │   ├── iso-8859-13.so
    │   ├── iso-8859-14.a
    │   ├── iso-8859-14.la
    │   ├── iso-8859-14.so
    │   ├── iso-8859-15.a
    │   ├── iso-8859-15.la
    │   ├── iso-8859-15.so
    │   ├── iso-8859-2.a
    │   ├── iso-8859-2.la
    │   ├── iso-8859-2.so
    │   ├── iso-8859-3.a
    │   ├── iso-8859-3.la
    │   ├── iso-8859-3.so
    │   ├── iso-8859-4.a
    │   ├── iso-8859-4.la
    │   ├── iso-8859-4.so
    │   ├── iso-8859-5.a
    │   ├── iso-8859-5.la
    │   ├── iso-8859-5.so
    │   ├── iso-8859-6.a
    │   ├── iso-8859-6.la
    │   ├── iso-8859-6.so
    │   ├── iso-8859-7.a
    │   ├── iso-8859-7.la
    │   ├── iso-8859-7.so
    │   ├── iso-8859-8.a
    │   ├── iso-8859-8.la
    │   ├── iso-8859-8.so
    │   ├── iso-8859-9.a
    │   ├── iso-8859-9.la
    │   ├── iso-8859-9.so
    │   ├── iso-ir-10.a
    │   ├── iso-ir-10.la
    │   ├── iso-ir-10.so
    │   ├── iso-ir-102.a
    │   ├── iso-ir-102.la
    │   ├── iso-ir-102.so
    │   ├── iso-ir-103.a
    │   ├── iso-ir-103.la
    │   ├── iso-ir-103.so
    │   ├── iso-ir-11.a
    │   ├── iso-ir-11.la
    │   ├── iso-ir-11.so
    │   ├── iso-ir-111.a
    │   ├── iso-ir-111.la
    │   ├── iso-ir-111.so
    │   ├── iso-ir-121.a
    │   ├── iso-ir-121.la
    │   ├── iso-ir-121.so
    │   ├── iso-ir-122.a
    │   ├── iso-ir-122.la
    │   ├── iso-ir-122.so
    │   ├── iso-ir-123.a
    │   ├── iso-ir-123.la
    │   ├── iso-ir-123.so
    │   ├── iso-ir-128.a
    │   ├── iso-ir-128.la
    │   ├── iso-ir-128.so
    │   ├── iso-ir-13.a
    │   ├── iso-ir-13.la
    │   ├── iso-ir-13.so
    │   ├── iso-ir-139.a
    │   ├── iso-ir-139.la
    │   ├── iso-ir-139.so
    │   ├── iso-ir-14.a
    │   ├── iso-ir-14.la
    │   ├── iso-ir-14.so
    │   ├── iso-ir-141.a
    │   ├── iso-ir-141.la
    │   ├── iso-ir-141.so
    │   ├── iso-ir-142.a
    │   ├── iso-ir-142.la
    │   ├── iso-ir-142.so
    │   ├── iso-ir-143.a
    │   ├── iso-ir-143.la
    │   ├── iso-ir-143.so
    │   ├── iso-ir-146.a
    │   ├── iso-ir-146.la
    │   ├── iso-ir-146.so
    │   ├── iso-ir-147.a
    │   ├── iso-ir-147.la
    │   ├── iso-ir-147.so
    │   ├── iso-ir-15.a
    │   ├── iso-ir-15.la
    │   ├── iso-ir-15.so
    │   ├── iso-ir-150.a
    │   ├── iso-ir-150.la
    │   ├── iso-ir-150.so
    │   ├── iso-ir-151.a
    │   ├── iso-ir-151.la
    │   ├── iso-ir-151.so
    │   ├── iso-ir-152.a
    │   ├── iso-ir-152.la
    │   ├── iso-ir-152.so
    │   ├── iso-ir-153.a
    │   ├── iso-ir-153.la
    │   ├── iso-ir-153.so
    │   ├── iso-ir-154.a
    │   ├── iso-ir-154.la
    │   ├── iso-ir-154.so
    │   ├── iso-ir-155.a
    │   ├── iso-ir-155.la
    │   ├── iso-ir-155.so
    │   ├── iso-ir-158.a
    │   ├── iso-ir-158.la
    │   ├── iso-ir-158.so
    │   ├── iso-ir-16.a
    │   ├── iso-ir-16.la
    │   ├── iso-ir-16.so
    │   ├── iso-ir-17.a
    │   ├── iso-ir-17.la
    │   ├── iso-ir-17.so
    │   ├── iso-ir-18.a
    │   ├── iso-ir-18.la
    │   ├── iso-ir-18.so
    │   ├── iso-ir-19.a
    │   ├── iso-ir-19.la
    │   ├── iso-ir-19.so
    │   ├── iso-ir-2.a
    │   ├── iso-ir-2.la
    │   ├── iso-ir-2.so
    │   ├── iso-ir-21.a
    │   ├── iso-ir-21.la
    │   ├── iso-ir-21.so
    │   ├── iso-ir-25.a
    │   ├── iso-ir-25.la
    │   ├── iso-ir-25.so
    │   ├── iso-ir-27.a
    │   ├── iso-ir-27.la
    │   ├── iso-ir-27.so
    │   ├── iso-ir-37.a
    │   ├── iso-ir-37.la
    │   ├── iso-ir-37.so
    │   ├── iso-ir-4.a
    │   ├── iso-ir-4.la
    │   ├── iso-ir-4.so
    │   ├── iso-ir-47.a
    │   ├── iso-ir-47.la
    │   ├── iso-ir-47.so
    │   ├── iso-ir-49.a
    │   ├── iso-ir-49.la
    │   ├── iso-ir-49.so
    │   ├── iso-ir-50.a
    │   ├── iso-ir-50.la
    │   ├── iso-ir-50.so
    │   ├── iso-ir-51.a
    │   ├── iso-ir-51.la
    │   ├── iso-ir-51.so
    │   ├── iso-ir-54.a
    │   ├── iso-ir-54.la
    │   ├── iso-ir-54.so
    │   ├── iso-ir-55.a
    │   ├── iso-ir-55.la
    │   ├── iso-ir-55.so
    │   ├── iso-ir-57.a
    │   ├── iso-ir-57.la
    │   ├── iso-ir-57.so
    │   ├── iso-ir-60.a
    │   ├── iso-ir-60.la
    │   ├── iso-ir-60.so
    │   ├── iso-ir-61.a
    │   ├── iso-ir-61.la
    │   ├── iso-ir-61.so
    │   ├── iso-ir-69.a
    │   ├── iso-ir-69.la
    │   ├── iso-ir-69.so
    │   ├── iso-ir-70.a
    │   ├── iso-ir-70.la
    │   ├── iso-ir-70.so
    │   ├── iso-ir-8-1.a
    │   ├── iso-ir-8-1.la
    │   ├── iso-ir-8-1.so
    │   ├── iso-ir-8-2.a
    │   ├── iso-ir-8-2.la
    │   ├── iso-ir-8-2.so
    │   ├── iso-ir-84.a
    │   ├── iso-ir-84.la
    │   ├── iso-ir-84.so
    │   ├── iso-ir-85.a
    │   ├── iso-ir-85.la
    │   ├── iso-ir-85.so
    │   ├── iso-ir-86.a
    │   ├── iso-ir-86.la
    │   ├── iso-ir-86.so
    │   ├── iso-ir-88.a
    │   ├── iso-ir-88.la
    │   ├── iso-ir-88.so
    │   ├── iso-ir-89.a
    │   ├── iso-ir-89.la
    │   ├── iso-ir-89.so
    │   ├── iso-ir-9-1.a
    │   ├── iso-ir-9-1.la
    │   ├── iso-ir-9-1.so
    │   ├── iso-ir-9-2.a
    │   ├── iso-ir-9-2.la
    │   ├── iso-ir-9-2.so
    │   ├── iso-ir-90.a
    │   ├── iso-ir-90.la
    │   ├── iso-ir-90.so
    │   ├── iso-ir-91.a
    │   ├── iso-ir-91.la
    │   ├── iso-ir-91.so
    │   ├── iso-ir-92.a
    │   ├── iso-ir-92.la
    │   ├── iso-ir-92.so
    │   ├── iso-ir-93.a
    │   ├── iso-ir-93.la
    │   ├── iso-ir-93.so
    │   ├── iso-ir-94.a
    │   ├── iso-ir-94.la
    │   ├── iso-ir-94.so
    │   ├── iso-ir-95.a
    │   ├── iso-ir-95.la
    │   ├── iso-ir-95.so
    │   ├── iso-ir-96.a
    │   ├── iso-ir-96.la
    │   ├── iso-ir-96.so
    │   ├── iso-ir-98.a
    │   ├── iso-ir-98.la
    │   ├── iso-ir-98.so
    │   ├── iso-ir-99.a
    │   ├── iso-ir-99.la
    │   ├── iso-ir-99.so
    │   ├── iso646-dk.a
    │   ├── iso646-dk.la
    │   ├── iso646-dk.so
    │   ├── iso646-kr.a
    │   ├── iso646-kr.la
    │   ├── iso646-kr.so
    │   ├── jis_x0201.a
    │   ├── jis_x0201.la
    │   ├── jis_x0201.so
    │   ├── jis_x0208-1983.a
    │   ├── jis_x0208-1983.la
    │   ├── jis_x0208-1983.so
    │   ├── jis_x0212-1990.a
    │   ├── jis_x0212-1990.la
    │   ├── jis_x0212-1990.so
    │   ├── johab.a
    │   ├── johab.la
    │   ├── johab.so
    │   ├── koi8-r.a
    │   ├── koi8-r.la
    │   ├── koi8-r.so
    │   ├── koi8-ru.a
    │   ├── koi8-ru.la
    │   ├── koi8-ru.so
    │   ├── koi8-u.a
    │   ├── koi8-u.la
    │   ├── koi8-u.so
    │   ├── ksx1001.a
    │   ├── ksx1001.la
    │   ├── ksx1001.so
    │   ├── mac-ce.a
    │   ├── mac-ce.la
    │   ├── mac-ce.so
    │   ├── mac-croatian.a
    │   ├── mac-croatian.la
    │   ├── mac-croatian.so
    │   ├── mac-cyrillic.a
    │   ├── mac-cyrillic.la
    │   ├── mac-cyrillic.so
    │   ├── mac-dingbats.a
    │   ├── mac-dingbats.la
    │   ├── mac-dingbats.so
    │   ├── mac-greek.a
    │   ├── mac-greek.la
    │   ├── mac-greek.so
    │   ├── mac-iceland.a
    │   ├── mac-iceland.la
    │   ├── mac-iceland.so
    │   ├── mac-japan.a
    │   ├── mac-japan.la
    │   ├── mac-japan.so
    │   ├── mac-roman.a
    │   ├── mac-roman.la
    │   ├── mac-roman.so
    │   ├── mac-romania.a
    │   ├── mac-romania.la
    │   ├── mac-romania.so
    │   ├── mac-thai.a
    │   ├── mac-thai.la
    │   ├── mac-thai.so
    │   ├── mac-turkish.a
    │   ├── mac-turkish.la
    │   ├── mac-turkish.so
    │   ├── mac-ukraine.a
    │   ├── mac-ukraine.la
    │   ├── mac-ukraine.so
    │   ├── macintosh.a
    │   ├── macintosh.la
    │   ├── macintosh.so
    │   ├── osd_ebcdic_df04_1.a
    │   ├── osd_ebcdic_df04_1.la
    │   ├── osd_ebcdic_df04_1.so
    │   ├── osd_ebcdic_df04_15.a
    │   ├── osd_ebcdic_df04_15.la
    │   ├── osd_ebcdic_df04_15.so
    │   ├── shift_jis.a
    │   ├── shift_jis.la
    │   ├── shift_jis.so
    │   ├── ucs2-internal.a
    │   ├── ucs2-internal.la
    │   ├── ucs2-internal.so
    │   ├── ucs4-internal.a
    │   ├── ucs4-internal.la
    │   ├── ucs4-internal.so
    │   ├── unicode-1-1-utf-7.a
    │   ├── unicode-1-1-utf-7.la
    │   ├── unicode-1-1-utf-7.so
    │   ├── us-ascii.a
    │   ├── us-ascii.la
    │   ├── us-ascii.so
    │   ├── utf-16.a
    │   ├── utf-16.la
    │   ├── utf-16.so
    │   ├── utf-8.a
    │   ├── utf-8.la
    │   ├── utf-8.so
    │   ├── windows-1250.a
    │   ├── windows-1250.la
    │   ├── windows-1250.so
    │   ├── windows-1251.a
    │   ├── windows-1251.la
    │   ├── windows-1251.so
    │   ├── windows-1252.a
    │   ├── windows-1252.la
    │   ├── windows-1252.so
    │   ├── windows-1253.a
    │   ├── windows-1253.la
    │   ├── windows-1253.so
    │   ├── windows-1254.a
    │   ├── windows-1254.la
    │   ├── windows-1254.so
    │   ├── windows-1255.a
    │   ├── windows-1255.la
    │   ├── windows-1255.so
    │   ├── windows-1256.a
    │   ├── windows-1256.la
    │   ├── windows-1256.so
    │   ├── windows-1257.a
    │   ├── windows-1257.la
    │   ├── windows-1257.so
    │   ├── windows-1258.a
    │   ├── windows-1258.la
    │   └── windows-1258.so
    ├── libapr-1.a
    ├── libapr-1.la
    ├── libapr-1.so -> libapr-1.so.0.7.0
    ├── libapr-1.so.0 -> libapr-1.so.0.7.0
    ├── libapr-1.so.0.7.0
    ├── libapriconv-1.a
    ├── libapriconv-1.la
    ├── libapriconv-1.so -> libapriconv-1.so.0.2.2
    ├── libapriconv-1.so.0 -> libapriconv-1.so.0.2.2
    ├── libapriconv-1.so.0.2.2
    ├── libaprutil-1.a
    ├── libaprutil-1.la
    ├── libaprutil-1.so -> libaprutil-1.so.0.6.1
    ├── libaprutil-1.so.0 -> libaprutil-1.so.0.6.1
    ├── libaprutil-1.so.0.6.1
    └── pkgconfig
        ├── apr-1.pc
        └── apr-util-1.pc

7 directories, 741 files

install-tomcat-native

make-and-install

cd /usr/local/tomcat/bin;
tar -xvf tomcat-native.tar.gz;

cd tomcat-native-1.2.25-src/native

./configure \
--with-apr=/usr/local/apr \
--with-java-home=/usr/local/java \
--with-ssl=/usr/local/openssl;

make && make install;
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking for working mkdir -p... yes
Tomcat Native Version: 1.2.25
checking for chosen layout... tcnative
checking for APR... yes
configure: APR 1.7.0 detected.
  setting CC to "gcc"
  setting CPP to "gcc -E"
checking JAVA_HOME... /usr/local/java/
  adding "-I/usr/local/java//include" to TCNATIVE_PRIV_INCLUDES
checking for JDK os include directory...  linux
  adding "-I/usr/local/java//include/linux" to TCNATIVE_PRIV_INCLUDES
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for OpenSSL library... using openssl from /usr/local/openssl/lib and /usr/local/openssl/include
checking OpenSSL library version >= 1.0.2... ok
checking for OpenSSL DSA support... yes
  adding "-I/usr/local/openssl/include" to TCNATIVE_PRIV_INCLUDES
  setting TCNATIVE_LDFLAGS to "-L/usr/local/openssl/lib -Wl,-rpath,/usr/local/openssl/lib -lssl -lcrypto"
  adding "-DHAVE_OPENSSL" to CFLAGS
  setting TCNATIVE_LIBS to ""
  setting TCNATIVE_LIBS to " /usr/local/apr/lib/libapr-1.la -lrt -lcrypt  -lpthread -ldl"
  adding "-DTCNATIVE_LINUX" to CFLAGS
checking for apr_pollset_wakeup in -lapr-1... yes
  adding "-DHAVE_POLLSET_WAKEUP" to CFLAGS
configure: creating ./config.status
config.status: creating Makefile
config.status: executing default commands
make[1]: Entering directory '/usr/local/tomcat/bin/tomcat-native-1.2.25-src/native'
make[1]: Nothing to be done for 'local-all'.
make[1]: Leaving directory '/usr/local/tomcat/bin/tomcat-native-1.2.25-src/native'
/usr/local/apr/build-1/mkdir.sh /usr/local/apr/lib
/bin/bash /usr/local/apr/build-1/libtool --mode=install /usr/bin/install -c -m 755 libtcnative-1.la /usr/local/apr/lib
libtool: install: /usr/bin/install -c -m 755 .libs/libtcnative-1.so.0.2.25 /usr/local/apr/lib/libtcnative-1.so.0.2.25
libtool: install: (cd /usr/local/apr/lib && { ln -s -f libtcnative-1.so.0.2.25 libtcnative-1.so.0 || { rm -f libtcnative-1.so.0 && ln -s libtcnative-1.so.0.2.25 libtcnative-1.so.0; }; })
libtool: install: (cd /usr/local/apr/lib && { ln -s -f libtcnative-1.so.0.2.25 libtcnative-1.so || { rm -f libtcnative-1.so && ln -s libtcnative-1.so.0.2.25 libtcnative-1.so; }; })
libtool: install: /usr/bin/install -c -m 755 .libs/libtcnative-1.lai /usr/local/apr/lib/libtcnative-1.la
libtool: install: /usr/bin/install -c -m 755 .libs/libtcnative-1.a /usr/local/apr/lib/libtcnative-1.a
libtool: install: chmod 644 /usr/local/apr/lib/libtcnative-1.a
libtool: install: ranlib /usr/local/apr/lib/libtcnative-1.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/java/bin:/usr/local/tomcat/bin:/sbin" ldconfig -n /usr/local/apr/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/apr/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

installed

安装完tomcat-native之后/usr/local/apr结构,我们看到/usr/local/apr/lib目录下多了几个libtcnative-1相关的.so文件

/usr/local/apr
├── bin
│   ├── apr-1-config
│   ├── apriconv
│   └── apu-1-config
├── build-1
│   ├── apr_rules.mk
│   ├── libtool
│   ├── make_exports.awk
│   ├── make_var_export.awk
│   └── mkdir.sh
├── include
│   └── apr-1
│       ├── api_version.h
│       ├── apr.h
│       ├── apr_allocator.h
│       ├── apr_anylock.h
│       ├── apr_atomic.h
│       ├── apr_base64.h
│       ├── apr_buckets.h
│       ├── apr_crypto.h
│       ├── apr_cstr.h
│       ├── apr_date.h
│       ├── apr_dbd.h
│       ├── apr_dbm.h
│       ├── apr_dso.h
│       ├── apr_encode.h
│       ├── apr_env.h
│       ├── apr_errno.h
│       ├── apr_escape.h
│       ├── apr_file_info.h
│       ├── apr_file_io.h
│       ├── apr_fnmatch.h
│       ├── apr_general.h
│       ├── apr_getopt.h
│       ├── apr_global_mutex.h
│       ├── apr_hash.h
│       ├── apr_hooks.h
│       ├── apr_iconv.h
│       ├── apr_inherit.h
│       ├── apr_ldap.h
│       ├── apr_ldap_init.h
│       ├── apr_ldap_option.h
│       ├── apr_ldap_rebind.h
│       ├── apr_ldap_url.h
│       ├── apr_lib.h
│       ├── apr_md4.h
│       ├── apr_md5.h
│       ├── apr_memcache.h
│       ├── apr_mmap.h
│       ├── apr_network_io.h
│       ├── apr_optional.h
│       ├── apr_optional_hooks.h
│       ├── apr_perms_set.h
│       ├── apr_poll.h
│       ├── apr_pools.h
│       ├── apr_portable.h
│       ├── apr_proc_mutex.h
│       ├── apr_queue.h
│       ├── apr_random.h
│       ├── apr_redis.h
│       ├── apr_reslist.h
│       ├── apr_ring.h
│       ├── apr_rmm.h
│       ├── apr_sdbm.h
│       ├── apr_sha1.h
│       ├── apr_shm.h
│       ├── apr_signal.h
│       ├── apr_siphash.h
│       ├── apr_skiplist.h
│       ├── apr_strings.h
│       ├── apr_strmatch.h
│       ├── apr_support.h
│       ├── apr_tables.h
│       ├── apr_thread_cond.h
│       ├── apr_thread_mutex.h
│       ├── apr_thread_pool.h
│       ├── apr_thread_proc.h
│       ├── apr_thread_rwlock.h
│       ├── apr_time.h
│       ├── apr_uri.h
│       ├── apr_user.h
│       ├── apr_uuid.h
│       ├── apr_version.h
│       ├── apr_want.h
│       ├── apr_xlate.h
│       ├── apr_xml.h
│       ├── apu.h
│       ├── apu_errno.h
│       ├── apu_version.h
│       └── apu_want.h
└── lib
    ├── apr.exp
    ├── aprutil.exp
    ├── iconv
    │   ├── _tbl_simple.a
    │   ├── _tbl_simple.la
    │   ├── _tbl_simple.so
    │   ├── adobe-stdenc.a
    │   ├── adobe-stdenc.la
    │   ├── adobe-stdenc.so
    │   ├── adobe-symbol.a
    │   ├── adobe-symbol.la
    │   ├── adobe-symbol.so
    │   ├── adobe-zdingbats.a
    │   ├── adobe-zdingbats.la
    │   ├── adobe-zdingbats.so
    │   ├── big5.a
    │   ├── big5.la
    │   ├── big5.so
    │   ├── cns11643-plane1.a
    │   ├── cns11643-plane1.la
    │   ├── cns11643-plane1.so
    │   ├── cns11643-plane14.a
    │   ├── cns11643-plane14.la
    │   ├── cns11643-plane14.so
    │   ├── cns11643-plane2.a
    │   ├── cns11643-plane2.la
    │   ├── cns11643-plane2.so
    │   ├── cp037.a
    │   ├── cp037.la
    │   ├── cp037.so
    │   ├── cp038.a
    │   ├── cp038.la
    │   ├── cp038.so
    │   ├── cp10000.a
    │   ├── cp10000.la
    │   ├── cp10000.so
    │   ├── cp10006.a
    │   ├── cp10006.la
    │   ├── cp10006.so
    │   ├── cp10007.a
    │   ├── cp10007.la
    │   ├── cp10007.so
    │   ├── cp10029.a
    │   ├── cp10029.la
    │   ├── cp10029.so
    │   ├── cp1006.a
    │   ├── cp1006.la
    │   ├── cp1006.so
    │   ├── cp10079.a
    │   ├── cp10079.la
    │   ├── cp10079.so
    │   ├── cp10081.a
    │   ├── cp10081.la
    │   ├── cp10081.so
    │   ├── cp1026.a
    │   ├── cp1026.la
    │   ├── cp1026.so
    │   ├── cp273.a
    │   ├── cp273.la
    │   ├── cp273.so
    │   ├── cp274.a
    │   ├── cp274.la
    │   ├── cp274.so
    │   ├── cp275.a
    │   ├── cp275.la
    │   ├── cp275.so
    │   ├── cp277.a
    │   ├── cp277.la
    │   ├── cp277.so
    │   ├── cp278.a
    │   ├── cp278.la
    │   ├── cp278.so
    │   ├── cp280.a
    │   ├── cp280.la
    │   ├── cp280.so
    │   ├── cp281.a
    │   ├── cp281.la
    │   ├── cp281.so
    │   ├── cp284.a
    │   ├── cp284.la
    │   ├── cp284.so
    │   ├── cp285.a
    │   ├── cp285.la
    │   ├── cp285.so
    │   ├── cp290.a
    │   ├── cp290.la
    │   ├── cp290.so
    │   ├── cp297.a
    │   ├── cp297.la
    │   ├── cp297.so
    │   ├── cp420.a
    │   ├── cp420.la
    │   ├── cp420.so
    │   ├── cp423.a
    │   ├── cp423.la
    │   ├── cp423.so
    │   ├── cp424.a
    │   ├── cp424.la
    │   ├── cp424.so
    │   ├── cp437.a
    │   ├── cp437.la
    │   ├── cp437.so
    │   ├── cp500.a
    │   ├── cp500.la
    │   ├── cp500.so
    │   ├── cp737.a
    │   ├── cp737.la
    │   ├── cp737.so
    │   ├── cp775.a
    │   ├── cp775.la
    │   ├── cp775.so
    │   ├── cp850.a
    │   ├── cp850.la
    │   ├── cp850.so
    │   ├── cp851.a
    │   ├── cp851.la
    │   ├── cp851.so
    │   ├── cp852.a
    │   ├── cp852.la
    │   ├── cp852.so
    │   ├── cp855.a
    │   ├── cp855.la
    │   ├── cp855.so
    │   ├── cp856.a
    │   ├── cp856.la
    │   ├── cp856.so
    │   ├── cp857.a
    │   ├── cp857.la
    │   ├── cp857.so
    │   ├── cp860.a
    │   ├── cp860.la
    │   ├── cp860.so
    │   ├── cp861.a
    │   ├── cp861.la
    │   ├── cp861.so
    │   ├── cp862.a
    │   ├── cp862.la
    │   ├── cp862.so
    │   ├── cp863.a
    │   ├── cp863.la
    │   ├── cp863.so
    │   ├── cp864.a
    │   ├── cp864.la
    │   ├── cp864.so
    │   ├── cp865.a
    │   ├── cp865.la
    │   ├── cp865.so
    │   ├── cp866.a
    │   ├── cp866.la
    │   ├── cp866.so
    │   ├── cp868.a
    │   ├── cp868.la
    │   ├── cp868.so
    │   ├── cp869.a
    │   ├── cp869.la
    │   ├── cp869.so
    │   ├── cp870.a
    │   ├── cp870.la
    │   ├── cp870.so
    │   ├── cp871.a
    │   ├── cp871.la
    │   ├── cp871.so
    │   ├── cp874.a
    │   ├── cp874.la
    │   ├── cp874.so
    │   ├── cp875.a
    │   ├── cp875.la
    │   ├── cp875.so
    │   ├── cp880.a
    │   ├── cp880.la
    │   ├── cp880.so
    │   ├── cp891.a
    │   ├── cp891.la
    │   ├── cp891.so
    │   ├── cp903.a
    │   ├── cp903.la
    │   ├── cp903.so
    │   ├── cp904.a
    │   ├── cp904.la
    │   ├── cp904.so
    │   ├── cp905.a
    │   ├── cp905.la
    │   ├── cp905.so
    │   ├── cp918.a
    │   ├── cp918.la
    │   ├── cp918.so
    │   ├── cp932.a
    │   ├── cp932.la
    │   ├── cp932.so
    │   ├── cp936.a
    │   ├── cp936.la
    │   ├── cp936.so
    │   ├── cp949.a
    │   ├── cp949.la
    │   ├── cp949.so
    │   ├── cp950.a
    │   ├── cp950.la
    │   ├── cp950.so
    │   ├── dec-mcs.a
    │   ├── dec-mcs.la
    │   ├── dec-mcs.so
    │   ├── ebcdic-at-de-a.a
    │   ├── ebcdic-at-de-a.la
    │   ├── ebcdic-at-de-a.so
    │   ├── ebcdic-at-de.a
    │   ├── ebcdic-at-de.la
    │   ├── ebcdic-at-de.so
    │   ├── ebcdic-ca-fr.a
    │   ├── ebcdic-ca-fr.la
    │   ├── ebcdic-ca-fr.so
    │   ├── ebcdic-dk-no-a.a
    │   ├── ebcdic-dk-no-a.la
    │   ├── ebcdic-dk-no-a.so
    │   ├── ebcdic-dk-no.a
    │   ├── ebcdic-dk-no.la
    │   ├── ebcdic-dk-no.so
    │   ├── ebcdic-es-a.a
    │   ├── ebcdic-es-a.la
    │   ├── ebcdic-es-a.so
    │   ├── ebcdic-es-s.a
    │   ├── ebcdic-es-s.la
    │   ├── ebcdic-es-s.so
    │   ├── ebcdic-es.a
    │   ├── ebcdic-es.la
    │   ├── ebcdic-es.so
    │   ├── ebcdic-fi-se-a.a
    │   ├── ebcdic-fi-se-a.la
    │   ├── ebcdic-fi-se-a.so
    │   ├── ebcdic-fi-se.a
    │   ├── ebcdic-fi-se.la
    │   ├── ebcdic-fi-se.so
    │   ├── ebcdic-fr.a
    │   ├── ebcdic-fr.la
    │   ├── ebcdic-fr.so
    │   ├── ebcdic-it.a
    │   ├── ebcdic-it.la
    │   ├── ebcdic-it.so
    │   ├── ebcdic-pt.a
    │   ├── ebcdic-pt.la
    │   ├── ebcdic-pt.so
    │   ├── ebcdic-uk.a
    │   ├── ebcdic-uk.la
    │   ├── ebcdic-uk.so
    │   ├── ebcdic-us.a
    │   ├── ebcdic-us.la
    │   ├── ebcdic-us.so
    │   ├── euc-jp.a
    │   ├── euc-jp.la
    │   ├── euc-jp.so
    │   ├── euc-kr.a
    │   ├── euc-kr.la
    │   ├── euc-kr.so
    │   ├── euc-tw.a
    │   ├── euc-tw.la
    │   ├── euc-tw.so
    │   ├── gb12345.a
    │   ├── gb12345.la
    │   ├── gb12345.so
    │   ├── gb2312.a
    │   ├── gb2312.la
    │   ├── gb2312.so
    │   ├── gb_2312-80.a
    │   ├── gb_2312-80.la
    │   ├── gb_2312-80.so
    │   ├── hp-roman8.a
    │   ├── hp-roman8.la
    │   ├── hp-roman8.so
    │   ├── iso-10646-ucs-2.a
    │   ├── iso-10646-ucs-2.la
    │   ├── iso-10646-ucs-2.so
    │   ├── iso-10646-ucs-4.a
    │   ├── iso-10646-ucs-4.la
    │   ├── iso-10646-ucs-4.so
    │   ├── iso-2022-cn.a
    │   ├── iso-2022-cn.la
    │   ├── iso-2022-cn.so
    │   ├── iso-2022-jp-2.a
    │   ├── iso-2022-jp-2.la
    │   ├── iso-2022-jp-2.so
    │   ├── iso-2022-jp.a
    │   ├── iso-2022-jp.la
    │   ├── iso-2022-jp.so
    │   ├── iso-2022-kr.a
    │   ├── iso-2022-kr.la
    │   ├── iso-2022-kr.so
    │   ├── iso-8859-1.a
    │   ├── iso-8859-1.la
    │   ├── iso-8859-1.so
    │   ├── iso-8859-10.a
    │   ├── iso-8859-10.la
    │   ├── iso-8859-10.so
    │   ├── iso-8859-13.a
    │   ├── iso-8859-13.la
    │   ├── iso-8859-13.so
    │   ├── iso-8859-14.a
    │   ├── iso-8859-14.la
    │   ├── iso-8859-14.so
    │   ├── iso-8859-15.a
    │   ├── iso-8859-15.la
    │   ├── iso-8859-15.so
    │   ├── iso-8859-2.a
    │   ├── iso-8859-2.la
    │   ├── iso-8859-2.so
    │   ├── iso-8859-3.a
    │   ├── iso-8859-3.la
    │   ├── iso-8859-3.so
    │   ├── iso-8859-4.a
    │   ├── iso-8859-4.la
    │   ├── iso-8859-4.so
    │   ├── iso-8859-5.a
    │   ├── iso-8859-5.la
    │   ├── iso-8859-5.so
    │   ├── iso-8859-6.a
    │   ├── iso-8859-6.la
    │   ├── iso-8859-6.so
    │   ├── iso-8859-7.a
    │   ├── iso-8859-7.la
    │   ├── iso-8859-7.so
    │   ├── iso-8859-8.a
    │   ├── iso-8859-8.la
    │   ├── iso-8859-8.so
    │   ├── iso-8859-9.a
    │   ├── iso-8859-9.la
    │   ├── iso-8859-9.so
    │   ├── iso-ir-10.a
    │   ├── iso-ir-10.la
    │   ├── iso-ir-10.so
    │   ├── iso-ir-102.a
    │   ├── iso-ir-102.la
    │   ├── iso-ir-102.so
    │   ├── iso-ir-103.a
    │   ├── iso-ir-103.la
    │   ├── iso-ir-103.so
    │   ├── iso-ir-11.a
    │   ├── iso-ir-11.la
    │   ├── iso-ir-11.so
    │   ├── iso-ir-111.a
    │   ├── iso-ir-111.la
    │   ├── iso-ir-111.so
    │   ├── iso-ir-121.a
    │   ├── iso-ir-121.la
    │   ├── iso-ir-121.so
    │   ├── iso-ir-122.a
    │   ├── iso-ir-122.la
    │   ├── iso-ir-122.so
    │   ├── iso-ir-123.a
    │   ├── iso-ir-123.la
    │   ├── iso-ir-123.so
    │   ├── iso-ir-128.a
    │   ├── iso-ir-128.la
    │   ├── iso-ir-128.so
    │   ├── iso-ir-13.a
    │   ├── iso-ir-13.la
    │   ├── iso-ir-13.so
    │   ├── iso-ir-139.a
    │   ├── iso-ir-139.la
    │   ├── iso-ir-139.so
    │   ├── iso-ir-14.a
    │   ├── iso-ir-14.la
    │   ├── iso-ir-14.so
    │   ├── iso-ir-141.a
    │   ├── iso-ir-141.la
    │   ├── iso-ir-141.so
    │   ├── iso-ir-142.a
    │   ├── iso-ir-142.la
    │   ├── iso-ir-142.so
    │   ├── iso-ir-143.a
    │   ├── iso-ir-143.la
    │   ├── iso-ir-143.so
    │   ├── iso-ir-146.a
    │   ├── iso-ir-146.la
    │   ├── iso-ir-146.so
    │   ├── iso-ir-147.a
    │   ├── iso-ir-147.la
    │   ├── iso-ir-147.so
    │   ├── iso-ir-15.a
    │   ├── iso-ir-15.la
    │   ├── iso-ir-15.so
    │   ├── iso-ir-150.a
    │   ├── iso-ir-150.la
    │   ├── iso-ir-150.so
    │   ├── iso-ir-151.a
    │   ├── iso-ir-151.la
    │   ├── iso-ir-151.so
    │   ├── iso-ir-152.a
    │   ├── iso-ir-152.la
    │   ├── iso-ir-152.so
    │   ├── iso-ir-153.a
    │   ├── iso-ir-153.la
    │   ├── iso-ir-153.so
    │   ├── iso-ir-154.a
    │   ├── iso-ir-154.la
    │   ├── iso-ir-154.so
    │   ├── iso-ir-155.a
    │   ├── iso-ir-155.la
    │   ├── iso-ir-155.so
    │   ├── iso-ir-158.a
    │   ├── iso-ir-158.la
    │   ├── iso-ir-158.so
    │   ├── iso-ir-16.a
    │   ├── iso-ir-16.la
    │   ├── iso-ir-16.so
    │   ├── iso-ir-17.a
    │   ├── iso-ir-17.la
    │   ├── iso-ir-17.so
    │   ├── iso-ir-18.a
    │   ├── iso-ir-18.la
    │   ├── iso-ir-18.so
    │   ├── iso-ir-19.a
    │   ├── iso-ir-19.la
    │   ├── iso-ir-19.so
    │   ├── iso-ir-2.a
    │   ├── iso-ir-2.la
    │   ├── iso-ir-2.so
    │   ├── iso-ir-21.a
    │   ├── iso-ir-21.la
    │   ├── iso-ir-21.so
    │   ├── iso-ir-25.a
    │   ├── iso-ir-25.la
    │   ├── iso-ir-25.so
    │   ├── iso-ir-27.a
    │   ├── iso-ir-27.la
    │   ├── iso-ir-27.so
    │   ├── iso-ir-37.a
    │   ├── iso-ir-37.la
    │   ├── iso-ir-37.so
    │   ├── iso-ir-4.a
    │   ├── iso-ir-4.la
    │   ├── iso-ir-4.so
    │   ├── iso-ir-47.a
    │   ├── iso-ir-47.la
    │   ├── iso-ir-47.so
    │   ├── iso-ir-49.a
    │   ├── iso-ir-49.la
    │   ├── iso-ir-49.so
    │   ├── iso-ir-50.a
    │   ├── iso-ir-50.la
    │   ├── iso-ir-50.so
    │   ├── iso-ir-51.a
    │   ├── iso-ir-51.la
    │   ├── iso-ir-51.so
    │   ├── iso-ir-54.a
    │   ├── iso-ir-54.la
    │   ├── iso-ir-54.so
    │   ├── iso-ir-55.a
    │   ├── iso-ir-55.la
    │   ├── iso-ir-55.so
    │   ├── iso-ir-57.a
    │   ├── iso-ir-57.la
    │   ├── iso-ir-57.so
    │   ├── iso-ir-60.a
    │   ├── iso-ir-60.la
    │   ├── iso-ir-60.so
    │   ├── iso-ir-61.a
    │   ├── iso-ir-61.la
    │   ├── iso-ir-61.so
    │   ├── iso-ir-69.a
    │   ├── iso-ir-69.la
    │   ├── iso-ir-69.so
    │   ├── iso-ir-70.a
    │   ├── iso-ir-70.la
    │   ├── iso-ir-70.so
    │   ├── iso-ir-8-1.a
    │   ├── iso-ir-8-1.la
    │   ├── iso-ir-8-1.so
    │   ├── iso-ir-8-2.a
    │   ├── iso-ir-8-2.la
    │   ├── iso-ir-8-2.so
    │   ├── iso-ir-84.a
    │   ├── iso-ir-84.la
    │   ├── iso-ir-84.so
    │   ├── iso-ir-85.a
    │   ├── iso-ir-85.la
    │   ├── iso-ir-85.so
    │   ├── iso-ir-86.a
    │   ├── iso-ir-86.la
    │   ├── iso-ir-86.so
    │   ├── iso-ir-88.a
    │   ├── iso-ir-88.la
    │   ├── iso-ir-88.so
    │   ├── iso-ir-89.a
    │   ├── iso-ir-89.la
    │   ├── iso-ir-89.so
    │   ├── iso-ir-9-1.a
    │   ├── iso-ir-9-1.la
    │   ├── iso-ir-9-1.so
    │   ├── iso-ir-9-2.a
    │   ├── iso-ir-9-2.la
    │   ├── iso-ir-9-2.so
    │   ├── iso-ir-90.a
    │   ├── iso-ir-90.la
    │   ├── iso-ir-90.so
    │   ├── iso-ir-91.a
    │   ├── iso-ir-91.la
    │   ├── iso-ir-91.so
    │   ├── iso-ir-92.a
    │   ├── iso-ir-92.la
    │   ├── iso-ir-92.so
    │   ├── iso-ir-93.a
    │   ├── iso-ir-93.la
    │   ├── iso-ir-93.so
    │   ├── iso-ir-94.a
    │   ├── iso-ir-94.la
    │   ├── iso-ir-94.so
    │   ├── iso-ir-95.a
    │   ├── iso-ir-95.la
    │   ├── iso-ir-95.so
    │   ├── iso-ir-96.a
    │   ├── iso-ir-96.la
    │   ├── iso-ir-96.so
    │   ├── iso-ir-98.a
    │   ├── iso-ir-98.la
    │   ├── iso-ir-98.so
    │   ├── iso-ir-99.a
    │   ├── iso-ir-99.la
    │   ├── iso-ir-99.so
    │   ├── iso646-dk.a
    │   ├── iso646-dk.la
    │   ├── iso646-dk.so
    │   ├── iso646-kr.a
    │   ├── iso646-kr.la
    │   ├── iso646-kr.so
    │   ├── jis_x0201.a
    │   ├── jis_x0201.la
    │   ├── jis_x0201.so
    │   ├── jis_x0208-1983.a
    │   ├── jis_x0208-1983.la
    │   ├── jis_x0208-1983.so
    │   ├── jis_x0212-1990.a
    │   ├── jis_x0212-1990.la
    │   ├── jis_x0212-1990.so
    │   ├── johab.a
    │   ├── johab.la
    │   ├── johab.so
    │   ├── koi8-r.a
    │   ├── koi8-r.la
    │   ├── koi8-r.so
    │   ├── koi8-ru.a
    │   ├── koi8-ru.la
    │   ├── koi8-ru.so
    │   ├── koi8-u.a
    │   ├── koi8-u.la
    │   ├── koi8-u.so
    │   ├── ksx1001.a
    │   ├── ksx1001.la
    │   ├── ksx1001.so
    │   ├── mac-ce.a
    │   ├── mac-ce.la
    │   ├── mac-ce.so
    │   ├── mac-croatian.a
    │   ├── mac-croatian.la
    │   ├── mac-croatian.so
    │   ├── mac-cyrillic.a
    │   ├── mac-cyrillic.la
    │   ├── mac-cyrillic.so
    │   ├── mac-dingbats.a
    │   ├── mac-dingbats.la
    │   ├── mac-dingbats.so
    │   ├── mac-greek.a
    │   ├── mac-greek.la
    │   ├── mac-greek.so
    │   ├── mac-iceland.a
    │   ├── mac-iceland.la
    │   ├── mac-iceland.so
    │   ├── mac-japan.a
    │   ├── mac-japan.la
    │   ├── mac-japan.so
    │   ├── mac-roman.a
    │   ├── mac-roman.la
    │   ├── mac-roman.so
    │   ├── mac-romania.a
    │   ├── mac-romania.la
    │   ├── mac-romania.so
    │   ├── mac-thai.a
    │   ├── mac-thai.la
    │   ├── mac-thai.so
    │   ├── mac-turkish.a
    │   ├── mac-turkish.la
    │   ├── mac-turkish.so
    │   ├── mac-ukraine.a
    │   ├── mac-ukraine.la
    │   ├── mac-ukraine.so
    │   ├── macintosh.a
    │   ├── macintosh.la
    │   ├── macintosh.so
    │   ├── osd_ebcdic_df04_1.a
    │   ├── osd_ebcdic_df04_1.la
    │   ├── osd_ebcdic_df04_1.so
    │   ├── osd_ebcdic_df04_15.a
    │   ├── osd_ebcdic_df04_15.la
    │   ├── osd_ebcdic_df04_15.so
    │   ├── shift_jis.a
    │   ├── shift_jis.la
    │   ├── shift_jis.so
    │   ├── ucs2-internal.a
    │   ├── ucs2-internal.la
    │   ├── ucs2-internal.so
    │   ├── ucs4-internal.a
    │   ├── ucs4-internal.la
    │   ├── ucs4-internal.so
    │   ├── unicode-1-1-utf-7.a
    │   ├── unicode-1-1-utf-7.la
    │   ├── unicode-1-1-utf-7.so
    │   ├── us-ascii.a
    │   ├── us-ascii.la
    │   ├── us-ascii.so
    │   ├── utf-16.a
    │   ├── utf-16.la
    │   ├── utf-16.so
    │   ├── utf-8.a
    │   ├── utf-8.la
    │   ├── utf-8.so
    │   ├── windows-1250.a
    │   ├── windows-1250.la
    │   ├── windows-1250.so
    │   ├── windows-1251.a
    │   ├── windows-1251.la
    │   ├── windows-1251.so
    │   ├── windows-1252.a
    │   ├── windows-1252.la
    │   ├── windows-1252.so
    │   ├── windows-1253.a
    │   ├── windows-1253.la
    │   ├── windows-1253.so
    │   ├── windows-1254.a
    │   ├── windows-1254.la
    │   ├── windows-1254.so
    │   ├── windows-1255.a
    │   ├── windows-1255.la
    │   ├── windows-1255.so
    │   ├── windows-1256.a
    │   ├── windows-1256.la
    │   ├── windows-1256.so
    │   ├── windows-1257.a
    │   ├── windows-1257.la
    │   ├── windows-1257.so
    │   ├── windows-1258.a
    │   ├── windows-1258.la
    │   └── windows-1258.so
    ├── libapr-1.a
    ├── libapr-1.la
    ├── libapr-1.so -> libapr-1.so.0.7.0
    ├── libapr-1.so.0 -> libapr-1.so.0.7.0
    ├── libapr-1.so.0.7.0
    ├── libapriconv-1.a
    ├── libapriconv-1.la
    ├── libapriconv-1.so -> libapriconv-1.so.0.2.2
    ├── libapriconv-1.so.0 -> libapriconv-1.so.0.2.2
    ├── libapriconv-1.so.0.2.2
    ├── libaprutil-1.a
    ├── libaprutil-1.la
    ├── libaprutil-1.so -> libaprutil-1.so.0.6.1
    ├── libaprutil-1.so.0 -> libaprutil-1.so.0.6.1
    ├── libaprutil-1.so.0.6.1
    ├── libtcnative-1.a
    ├── libtcnative-1.la
    ├── libtcnative-1.so -> libtcnative-1.so.0.2.25
    ├── libtcnative-1.so.0 -> libtcnative-1.so.0.2.25
    ├── libtcnative-1.so.0.2.25
    └── pkgconfig
        ├── apr-1.pc
        └── apr-util-1.pc

7 directories, 746 files
cat /usr/local/apr/lib/pkgconfig/apr-1.pc

prefix=/usr/local/apr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
APR_MAJOR_VERSION=1
includedir=${prefix}/include/apr-${APR_MAJOR_VERSION}

Name: APR
Description: The Apache Portable Runtime library
Version: 1.7.0
Libs: -L${libdir} -lapr-${APR_MAJOR_VERSION} -lrt -lcrypt  -lpthread -ldl
Cflags: -DLINUX -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I${includedir}



cat /usr/local/apr/lib/pkgconfig/apr-util-1.pc

prefix=/usr/local/apr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
APRUTIL_MAJOR_VERSION=1
includedir=${prefix}/include/apr-${APRUTIL_MAJOR_VERSION}

Name: APR Utils
Description: Companion library for APR
Version: 1.6.1
# assume that apr-util requires libapr of same major version
Requires: apr-1
Libs: -L${libdir} -laprutil-${APRUTIL_MAJOR_VERSION}  /opt/src/apr-util/../apr-iconv/lib/libapriconv.la                               -lexpat
Cflags: -I${includedir}

run-tomcat-with-apr

vi $CATALINA_HOME/bin/setenv.sh
#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export LD_LIBRARY_PATH
sed -i 's@Connector port="8080" protocol="HTTP/1.1"@Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"@g' ../conf/server.xml
root@176698a3cb22:/usr/local/tomcat/bin# ./catalina.sh run
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
03-Jan-2021 07:15:50.136 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/8.5.61
03-Jan-2021 07:15:50.137 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Dec 3 2020 14:03:28 UTC
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 8.5.61.0
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.19.95
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/local/java/jre
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_201-b09
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/tomcat
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/tomcat
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
03-Jan-2021 07:15:50.138 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
03-Jan-2021 07:15:50.139 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
03-Jan-2021 07:15:50.139 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.25] using APR version [1.7.0].
03-Jan-2021 07:15:50.139 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
03-Jan-2021 07:15:50.139 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
03-Jan-2021 07:15:50.148 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1i  21 Apr 2020]
03-Jan-2021 07:15:50.228 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-apr-8080"]
03-Jan-2021 07:15:50.240 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 347 ms
03-Jan-2021 07:15:50.255 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
03-Jan-2021 07:15:50.255 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.61
03-Jan-2021 07:15:50.270 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/ROOT]
03-Jan-2021 07:15:50.418 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/ROOT] has finished in [148] ms
03-Jan-2021 07:15:50.418 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/docs]
03-Jan-2021 07:15:50.428 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/docs] has finished in [10] ms
03-Jan-2021 07:15:50.428 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/examples]
03-Jan-2021 07:15:50.538 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/examples] has finished in [110] ms
03-Jan-2021 07:15:50.538 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/host-manager]
03-Jan-2021 07:15:50.551 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/host-manager] has finished in [13] ms
03-Jan-2021 07:15:50.551 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/manager]
03-Jan-2021 07:15:50.568 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/manager] has finished in [17] ms
03-Jan-2021 07:15:50.571 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8080"]
03-Jan-2021 07:15:50.578 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 337 ms

run-springboot-with-apr

code

package com.example.demo.config;

import org.apache.catalina.LifecycleListener;
import org.apache.catalina.core.AprLifecycleListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class APRConfig {
	@Value("${server.tomcat.apr:false}")
	private boolean enabled;

//    @Bean
//    public EmbeddedServletContainerFactory servletContainer() {
//        TomcatEmbeddedServletContainerFactory container = new TomcatEmbeddedServletContainerFactory();
//        if (enabled) {
//            LifecycleListener arpLifecycle = new AprLifecycleListener();
//            container.setProtocol("org.apache.coyote.http11.Http11AprProtocol");
//            container.addContextLifecycleListeners(arpLifecycle);
//        }
//
//        return container;
//    }

	@Bean
	public ServletWebServerFactory servletContainer() {
		TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
		if (enabled) {
			LifecycleListener arpLifecycle = new AprLifecycleListener();
			tomcat.setProtocol("org.apache.coyote.http11.Http11AprProtocol");
			tomcat.addContextLifecycleListeners(arpLifecycle);
			//tomcat.addConnectorCustomizers(new GwsTomcatConnectionCustomizer());
		}
		return tomcat;
	}

}

开启apr的启动日志

root@8dcf0e99b4b8:/# java -Dserver.tomcat.apr=true -Djava.library.path=/usr/local/apr/lib -jar /opt/demo-0.0.1.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.6.RELEASE)

[08:58:36:123] [INFO] - org.springframework.boot.StartupInfoLogger.logStarting(StartupInfoLogger.java:55) - Starting DemofmApplication v0.0.1 on 8dcf0e99b4b8 with PID 13282 (/opt/demo-0.0.1.jar started by root in /)
[08:58:36:129] [INFO] - org.springframework.boot.SpringApplication.logStartupProfileInfo(SpringApplication.java:651) - No active profile set, falling back to default profiles: default
[08:58:36:975] [INFO] - com.example.demo.config.APRConfig.servletContainer(APRConfig.java:34) - true
[08:58:37:139] [INFO] - org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:108) - Tomcat initialized with port(s): 8888 (http)
[08:58:37:148] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Initializing ProtocolHandler ["http-apr-8888"]
[08:58:37:148] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Starting service [Tomcat]
[08:58:37:148] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Starting Servlet engine: [Apache Tomcat/9.0.39]
[08:58:37:149] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Loaded Apache Tomcat Native library [1.2.25] using APR version [1.7.0].
[08:58:37:150] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
[08:58:37:150] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
[08:58:37:152] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - OpenSSL successfully initialized [OpenSSL 1.1.1i  8 Dec 2020]
[08:58:37:203] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Initializing Spring embedded WebApplicationContext
[08:58:37:203] [INFO] - org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.prepareWebApplicationContext(ServletWebServerApplicationContext.java:285) - Root WebApplicationContext: initialization completed in 1009 ms
[08:58:37:559] [INFO] - org.springframework.scheduling.concurrent.ExecutorConfigurationSupport.initialize(ExecutorConfigurationSupport.java:181) - Initializing ExecutorService 'applicationTaskExecutor'
[08:58:37:633] [INFO] - org.springframework.boot.autoconfigure.web.servlet.WelcomePageHandlerMapping.<init>(WelcomePageHandlerMapping.java:58) - Adding welcome page template: index
[08:58:37:875] [INFO] - org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver.<init>(EndpointLinksResolver.java:58) - Exposing 14 endpoint(s) beneath base path '/actuator'
[08:58:37:896] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Starting ProtocolHandler ["http-apr-8888"]
[08:58:37:971] [INFO] - org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:220) - Tomcat started on port(s): 8888 (http) with context path ''
[08:58:37:983] [INFO] - org.springframework.boot.StartupInfoLogger.logStarted(StartupInfoLogger.java:61) - Started DemofmApplication in 2.107 seconds (JVM running for 2.79)

未开启apr的启动日志

root@8dcf0e99b4b8:/# java -Dserver.tomcat.apr=false -Djava.library.path=/usr/local/apr/lib -jar /opt/demo-0.0.1.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.6.RELEASE)

[12:52:00:054] [INFO] - org.springframework.boot.StartupInfoLogger.logStarting(StartupInfoLogger.java:55) - Starting DemofmApplication v0.0.1 on 8dcf0e99b4b8 with PID 13358 (/opt/demo-0.0.1.jar started by root in /)
[12:52:00:064] [INFO] - org.springframework.boot.SpringApplication.logStartupProfileInfo(SpringApplication.java:651) - No active profile set, falling back to default profiles: default
[12:52:01:002] [INFO] - com.example.demo.config.APRConfig.servletContainer(APRConfig.java:34) - false
[12:52:01:176] [INFO] - org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:108) - Tomcat initialized with port(s): 8888 (http)
[12:52:01:185] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Initializing ProtocolHandler ["http-nio-8888"]
[12:52:01:185] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Starting service [Tomcat]
[12:52:01:185] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Starting Servlet engine: [Apache Tomcat/9.0.39]
[12:52:01:187] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Loaded Apache Tomcat Native library [1.2.25] using APR version [1.7.0].
[12:52:01:187] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
[12:52:01:187] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
[12:52:01:190] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - OpenSSL successfully initialized [OpenSSL 1.1.1i  8 Dec 2020]
[12:52:01:247] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Initializing Spring embedded WebApplicationContext
[12:52:01:247] [INFO] - org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.prepareWebApplicationContext(ServletWebServerApplicationContext.java:285) - Root WebApplicationContext: initialization completed in 1106 ms
[12:52:01:622] [INFO] - org.springframework.scheduling.concurrent.ExecutorConfigurationSupport.initialize(ExecutorConfigurationSupport.java:181) - Initializing ExecutorService 'applicationTaskExecutor'
[12:52:01:693] [INFO] - org.springframework.boot.autoconfigure.web.servlet.WelcomePageHandlerMapping.<init>(WelcomePageHandlerMapping.java:58) - Adding welcome page template: index
[12:52:01:934] [INFO] - org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver.<init>(EndpointLinksResolver.java:58) - Exposing 14 endpoint(s) beneath base path '/actuator'
[12:52:01:957] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Starting ProtocolHandler ["http-nio-8888"]
[12:52:02:034] [INFO] - org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:220) - Tomcat started on port(s): 8888 (http) with context path ''
[12:52:02:049] [INFO] - org.springframework.boot.StartupInfoLogger.logStarted(StartupInfoLogger.java:61) - Started DemofmApplication in 2.283 seconds (JVM running for 3.451)

others


checking OpenSSL library version >= 1.0.2... configure: error: Your version of OpenSSL is not compatible with this version of tcnative




debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/x86_64-linux-gnu/perl5/5.28 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype

Current default time zone: 'Etc/UTC'
Local time is now:      Sun Jan  3 05:50:52 UTC 2021.
Universal Time is now:  Sun Jan  3 05:50:52 UTC 2021.
Run 'dpkg-reconfigure tzdata' if you wish to change it.









03-Jan-2021 08:09:03.491 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [:/usr/local/tomcat/lib:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
03-Jan-2021 08:09:03.626 SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[org.apache.coyote.http11.Http11AprProtocol-8080]]
	org.apache.catalina.LifecycleException: The configured protocol [org.apache.coyote.http11.Http11AprProtocol] requires the APR/native library which is not available
		at org.apache.catalina.connector.Connector.initInternal(Connector.java:1060)
		at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
		at org.apache.catalina.core.StandardService.initInternal(StandardService.java:552)
		at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
		at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:848)
		at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
		at org.apache.catalina.startup.Catalina.load(Catalina.java:639)
		at org.apache.catalina.startup.Catalina.load(Catalina.java:662)
		at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
		at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
		at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
		at java.lang.reflect.Method.invoke(Method.java:498)
		at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:302)
		at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:472)

ref