银河麒麟V10离线安装 tomcat 9 记录

本文记录在银河麒麟V10上离线安装 tomcat 9 的过程。

下载安装

  1. 下载对应安装版本的安装包
    Apache Archive Distribution Directory
  2. 借助传输工具上传安装包至服务器
  3. 解压 tomcat 安装包
1
tar -zxvf apache-tomcat-9.0.93.tar.gz

日志路径配置

  1. 创建 tomcat 日志文件夹路径
1
mkdir tomcat-logs
  1. 修改日志路径配置
1
2
3
4
# 切换到 tomcat 的 conf 目录
cd /tomcat/conf
# 修改日志配置文件
vim logging.properties
  1. 修改下面几个地方
1
2
3
4
1catalina.org.apache.juli.AsyncFileHandler.directory = /data/tomcat-logs
2localhost.org.apache.juli.AsyncFileHandler.directory = /data/tomcat-logs
3manager.org.apache.juli.AsyncFileHandler.directory = /data/tomcat-logs
4host-manager.org.apache.juli.AsyncFileHandler.directory = /data/tomcat-logs
  1. 修改 catalina.sh 以方便观察运行情况
1
2
3
4
5
# 切换到 tomcat 的 bin 目录
cd /example/tomcat/bin
vim catalina.sh
# 修改 catalina.sh 在前面追加,用于查看 tomcat 运行时日志
CATALINA_OUT=/data/tomcat-logs/catalina.out
  1. 第4步完成后,catalina.out会无限写入,长期运行可能导致运行日志较多,配置 logrotate 自动轮转。以下配置可配置每日切割轮转,保留30天日志。你可以将你需要的配置轮转规则发给AI,让其生成相关的配置项,然后比对参考资料进行核对
1
2
3
4
5
6
7
8
9
10
11
12
13
# 添加一个logrotate文件,最后的 tomcat-prod 设置为你方便识别的名字即可
vim /etc/logrotate.d/tomcat-prod
/data/tomcat-logs/catalina.out {
daily
rotate 30
copytruncate
compress
delaycompress
missingok
notifempty
dateext
dateformat -%Y%m%d
}

JVM的运行参数优化配置

修改 catalina.sh 写入下面参数

1
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -server -Xmx16G -Xms16G -XX:MaxDirectMemorySize=4G -XX:+UseG1GC -XX:ConcGCThreads=16  -XX:ParallelGCThreads=16"

注:根据官方文档,这并非推荐的配置的方式,推荐做法是修改 setenv.sh,因本次部署时未实践,故不做记录,请参考参考资料2

修改启动端口号

若不想使用默认端口,可在 server.xml修改启动端口

1
2
3
4
5
6
7
8
<Connector port="8089" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
maxThreads="128"
maxConnections="10000"
acceptCount="256"
/>

配置为服务

查看 Java 安装位置

1
readlink -f $(which java) | sed 's|/bin/java||'

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-10.ky10.x86_64/jre

配置为服务

1
vim /usr/lib/systemd/system/tomcat.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Systemd unit file for default tomcat
#
# To create clones of this service:
# DO NOTHING, use tomcat@.service instead.

[Unit]
Description=Tomcat service
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-10.ky10.x86_64/jre "
User=root
Group=root
ExecStart=/example/tomcat/bin/startup.sh
ExecStop=/example/tomcat/bin/shutdown.sh
ExecReload=/usr/bin/kill -s SIGHUP $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

启动服务

1
2
3
4
5
6
7
8
# 重载配置
systemctl daemon-reload
# 启动服务
systemctl start tomcat.service
# 查看服务状态
systemctl status tomcat.service
# 创建开机启动
systemctl enable tomcat.service

参考资料

  1. logrotate(8) - Linux man page
  2. Memory - Apache Tomcat - Apache Software Foundation