【3.1】tomcat服务

Apache Tomcat最早是由Sun Microsystems开发的一个Servlet容器,在1999年被捐献给ASF(Apache Software Foundation),隶属于Jakarta项目,现在已经独立为一个顶级项目。Tomcat主要实现了Java EE中的Servlet、JSP规范,同时也提供HTTP服务,是市场上非常流行的Java Web容器。

一、安装tomcat

1.查看是否启动了tomcat服务

ps -ef |grep tomcat

2 进入到目录 /usr/local/ 中:

cd /usr/local/

3 创建目录 /usr/local/tools,如果有则忽略:

mkdir -p tools

4 创建 /usr/local/tomcat 目录,如果已存在则忽略:

mkdir -p tomcat

5 进入到目录 /usr/local/tools 中:

cd tools/

6 下载 apache-tomcat-9.0.10.tar.gz文件:

wget -c http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.tar.gz

7 解压缩 apache-tomcat-9.0.10.tar.gz:

tar -zxvf apache-tomcat-9.0.10.tar.gz

8 将通过解压得到的 apache-tomcat-9.0.10 文件复制到 /usr/local/tomcat

mv apache-tomcat-9.0.10 ../tomcat/ 目录中:

9 打开文件 /etc 目录下的 profile 文件:

vim /etc/profile

将如下代码追加到 profile 文件末尾:

#Tomcat
CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.10
CATALINA_BASE=/usr/local/tomcat/apache-tomcat-9.0.10
PATH=$PATH:$CATALINA_BASE/bin
export PATH CATALINA_BASE

保持并推出:wq!

10 修改 tomcat 的端口号和字符编码:

进入到 /usr/local/tomcat/apache-tomcat-9.0.10/conf 目录中:

cd ../tomcat/apache-tomcat-9.0.10/conf

查看端口占用情况

netstat -anp|grep 8080
或者
lsof -i:8080

结果:

unix  3      [ ]         STREAM     CONNECTED     7080804  35241/gnome-shell-c
unix  2      [ ]         DGRAM                    7080806  35278/udisksd

端口被占用

打开 tomcat 服务的配置文件 server.xml:

vim server.xml

找到如下代码:

将其中的 8080 改成 HTTP 协议的默认端口 8089,改后的代码如下:

这里要注意防火墙不要把服务给关闭了额,如果把端口添加到防火墙请参见我之前的文章

11 增加 manager-gui 图形化管理界面的访问权限(不需要的话,此步骤可忽略):

(我未处理)

打开 tomcat 的用户配置文件 tomcat-users.xml:

vi tomcat-users.xml

在 标签前加入如下代码:

<user username="tomcat" password="tomcat" roles="manager-gui"/>

这里设置的 username 和 password 都是 tomcat,角色为 manager-gui; 键入 Esc 并输入“:wq!”保持并退出;

12 进入到 /usr/local/tomcat/apache-tomcat-9.0.10/bin 目录中:

cd ../bin/

13 打开 vi catalina.sh 文件:

在 # OS specific support. 前面加入如下代码:

JAVA_HOME=/usr/local/jdk/jdk1.8.0_91
JRE_HOME=$JAVA_HOME/jre

键入 Esc 并输入“:wq!”保持并退出;

因为的java是已知的,暂时不做上面的这一步操作:

[sam@c01 local]$ java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

14 启动 tomcat 服务:

./startup.sh

打印如下信息则表明启动 Tomcat 服务成功:

Using CATALINA_BASE:   /usr/local/tomcat/apache-tomcat-9.0.10
Using CATALINA_HOME:   /usr/local/tomcat/apache-tomcat-9.0.10
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-9.0.10/temp
Using JRE_HOME:        /
Using CLASSPATH:       /usr/local/tomcat/apache-tomcat-9.0.10/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-9.0.10/bin/tomcat-juli.jar
Tomcat started.

打开浏览器输入 IP地址:8089 (这个取决于你设定的端口号,如果是80端口,则IP地址就可以访问) 看看吧!如果出现了我们的可爱的“小黄猫”则表明我们的 Tomcat 已提供服务啦!

15.关闭 tomcat 服务:

./shutdown.sh

打印如下信息则表明关闭 Tomcat 服务成功:

Using CATALINA_BASE:   /usr/local/tomcat/apache-tomcat-9.0.0.M4
Using CATALINA_HOME:   /usr/local/tomcat/apache-tomcat-9.0.0.M4
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-9.0.0.M4/temp
Using JRE_HOME:        /usr/local/jdk/jdk1.8.0_91/jre
Using CLASSPATH:       /usr/local/tomcat/apache-tomcat-9.0.0.M4/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-9.0.0.M4/bin/tomcat-juli.jar

注意:不可连续执行多次 ./shutdown.sh 命令,多次后报如下错误:

SEVERE: Catalina.stop: java.net.ConnectException: Connection refused

##开机自动启动

vim /etc/rc.local

添加如下:

 #Tomcat
bash /usr/local/tomcat/apache-tomcat-9.0.10/bin/startup.sh

注:不确定需不需要加开启自动启动以及是否应该这么加,未测试,先留坑吧。

(下面的添加系统服务列表的未操作)

16 将 tomcat9 加入到系统服务列表中:

进入到 /etc/init.d 目录中:

cd /etc/init.d

创建 tomcat9 服务配置文件:

vi tomcat9

将如下代码加入写入到 tomcat9 配置文件中:

# idea - tomcat config start - 2016-05-01

#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 2345 20 80
JAVA_HOME=/usr/local/jdk/jdk1.8.0_91/
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.0.M4/

case $1 in
start)
 sh $CATALINA_HOME/bin/startup.sh
;;
stop)
 sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
 sh $CATALINA_HOME/bin/shutdown.sh
 sh $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0

#chmod 755 tomcat
#chkconfig --add tomcat
#chkconfig --level 2345 tomcat on
#chkconfig --list tomcat

# idea - tomcat config end - 2016-05-01

键入 Esc 并输入“:wq!”保持并退出; 其中的注意点是将 JAVA_HOME 和 CATALINA_HOME 变量设置成与我们当前配置相一致的路径;

17 为 tomcat9 分配可执行权限:

chmod +x tomcat9

18 将 tomcat9 纳入到系统的服务列表中,即添加 tomcat9 为系统服务:

chkconfig --add tomcat9

19 查看当前系统服务都有哪些:

chkconfig --list

也可以查看指定的系统服务,如这里我们指定 tomcat9 这个服务:

chkconfig --list tomcat9

打印如下信息:

tomcat9         0:off   1:off   2:on    3:on    4:on    5:on    6:off

则表明已将 tomcat9 设置为系统服务,2、3、4、5 都为 on 表示可随系统自动启动;

20 我们可以在任意目录下执行关闭、启动、重启 Tomcat9 服务啦:

关闭 tomcat9 服务:

service tomcat9 stop

启动 tomcat9 服务:

service tomcat9 start

重启 tomcat9 服务:

service tomcat9 restart

后记

linux 系统中的 /etc 目录表示“设备”,意为与硬件设备相关的信息; /etc/init.d 目录下的文件表示当前设备的初始化配置信息; 命令 chkconfig 表示添加(–add)、删除(–del)、查看(–list)系统服务;

二、war包 部署到tomcat上

已WebService.war为例

将WebService.war放到 /usr/local/tomcat/apache-tomcat-9.0.10/webapps目录下

然后启动tomcat服务

cd  /usr/local/tomcat/apache-tomcat-9.0.10/bin/
./startup.sh

可以看到/usr/local/tomcat/apache-tomcat-9.0.10/webapps 目录下多了一个WebService文件夹,然后打开网址

IP地址:端口/WebService/*.html 就可以看到内容了

三、原理说明

四、讨论

4.1 tomcat 升级

因为版本漏洞,建议更新为最新的版本

建议9.0.34版本

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn