「环境配置」Tomcat9安装及多实例多应用配置(CentOS 8)

1. Tomcat9安装

使用wget获取:

1
wget https://mirrors.aliyun.com/apache/tomcat/tomcat-9/v9.0.41/bin/apache-tomcat-9.0.41.tar.gz

下载之后如果没有进入别的文件夹,压缩包一般是在/root下面。进入/root下面进行解压:

1
tar xzf apache-tomcat-9.0.41.tar.gz

然后复制到指定的文件夹下(在/data/apps下面创建了一个tomcat的文件夹):

1
2
mkdir -p /data/apps
mv apache-tomcat-9.0.41 /data/apps/tomcat

然后配置jvm内存参数(也可以不用配置):

1
vim /data/apps/tomcat/bin/setenv.sh

在setenv.sh中写入如下语句:

1
JAVA_OPTS='-Djava.security.egd=file:/dev/./urandom -server -Xms512m -Xmx1024m -Dfile.encoding=UTF-8'

开放端口

1
2
3
4
#开放8080端口
firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload
#重新加载防火墙规则
firewall-cmd --reload

启动/停用

1
2
3
4
#启动
cd /data/apps/tomcat/bin && sh startup.sh
#停用
cd /data/apps/tomcat/bin && sh shutdown.sh

通过浏览器访问 【ip】:8080

2. Tomcat多实例配置

Tomcat多实例部署的好处在于升级方便,配置及安装文件间互不影响。

1
2
3
4
5
6
    安装路径                       实例位置
【CATALINA_HOME】 【CATALINA_BASE】
|————bin <-------------|
|————lib <-------------|
|————(conf,webapps,logs,temp,work)

创建一个实例存放路径

1
mkdir -p /data/runtime/tomcat-instance

新建两个tomcat实例,把安装路径下的conf,webapps,logs,temp,work文件拷贝到实例中:

1
2
3
4
5
6
cd /data/runtime/tomcat-instance
mkdir tomcat1 tomcat2
#
cd /data/apps/tomcat/
cp conf/ webapps/ temp/ logs/ work/ -rt /data/runtime/tomcat-instance/tomcat1
cp conf/ webapps/ temp/ logs/ work/ -rt /data/runtime/tomcat-instance/tomcat2

新建 Tomcat实例启动/停止脚本

1
2
3
cd /data/runtime/tomcat-instance
vim tomcat1.sh
vim tomcat2.sh

tomcat1.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/bash

. /etc/rc.d/init.d/functions

source /etc/profile

export CATALINA_BASE=/data/runtime/tomcat-instance/tomcat1
export CATALINA_HOME=/data/apps/tomcat
export CATALINA_PID=$CATALINA_BASE/CATALINA_PID
export JAVA_OPTS="-server -Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"

sname=tomcat1
mark=$CATALINA_BASE/temp
pid=`ps -ef | grep "$mark" | grep -v "grep $mark" | awk -F " " '{print $2}'`

function start()
{
if [ -f "$CATALINA_PID" ]; then
rm -rf $CATALINA_PID
fi
echo "$sname start ......"
$CATALINA_HOME/bin/catalina.sh start 2>/dev/null
pid=`ps -ef | grep "$mark" | grep -v "grep $mark" | awk -F " " '{print $2}'`
echo "PID: $pid"
}

function stop()
{
echo "$sname stop ......"
if [ $pid ]; then
kill -9 $pid
rm -f $CATALINA_PID
fi
}

function status()
{
if [ $pid ]; then
echo "$sname run ......"
else
echo "$sname stop ......"
fi
echo `ps -ef | grep "$CATALINA_BASE" | grep -v "grep $CATALINA_BASE"`
}

case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Option in (start|stop|restart|status)"
;;
esac

tomcat2.sh参考tomcat1.sh

赋予权限

1
chmod 777 tomcat1.sh tomcat2.sh

配置实例server.xml端口

  • Server Port:该端口用于监听关闭tomcat的shutdown命令,默认为8005
  • Connector Port:该端口用于监听HTTP的请求,默认为8080
  • AJP Port:该端口用于监听AJP( Apache JServ Protocol )协议上的请求,通常用于整合Apache Server等其他HTTP服务器,默认为8009
  • Redirect Port:重定向端口,出现在Connector配置中,如果该Connector仅支持非SSL的普通http请求,那么该端口会把 https 的请求转发到这个Redirect Port指定的端口,默认为8443;

这里tomcat1实例保持默认,把tomcat2实例的Server Port改为了8006Connector Port改为了 8081:

1
2
3
4
cd /data/runtime/tomcat-instance/tomcat2
vim conf/server.xml
# 8081端口
firewall-cmd --add-port=8081/tcp --permanent && firewall-cmd --reload

分别在 tomcat1、tomcat2 的 webapps/ROOT 目录下放入了页面文件。

启动两个实例

1
2
3
cd /data/runtime/tomcat-instance
./tomcat1.sh start
./tomcat2.sh start

通过浏览器:【ip】:8080/【ip】:8081/,如:192.168.2.100:8080

3. nginx使用https代理tomcat

修改nginx配置文件,在server中添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
location /tomcat1/ {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Scheme $scheme;
}
location /tomcat2/ {
proxy_pass http://127.0.0.1:8081/;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Scheme $scheme;
}

通过浏览器访问:【ip】/tomcat1/【ip】/tomcat2/,如:192.168.2.100/tomcat1/

  • tips: Tomcat默认上传到服务器中文件的权限是- -rw-r-----640权限,其他人不可读。
    Tomcatbin目录下面,修改catalina.shUMASK="0027"UMASK="0022"
    1
    2
    3
    4
    5
    # Set UMASK unless it has been overridden
    if [ -z "$UMASK" ]; then
    UMASK="0022"
    fi
    umask $UMASK