Linux下使用Tomcat容器部署XXL客户端出现的问题
遇到的问题:公司因为断电导致内部服务器全部宕机,来电服务器全部自动重启之后,再去每台服务器中启动各种中间件,在启动完XXL服务器之后发现依然无法登陆客户端,以前碰到过这种问题是因为防火墙的问题,这次也想当然的以为是防火墙未关闭导致的问题,所以很轻松的去搞定了防火墙,并且一劳永逸的将防火墙开机自启动去掉,但是重新刷新XXL管理页面依然无法登陆,此时就很懵逼了,各种骚操作用上,然而然并卵。直到以为是自己设置的防火墙开机自启动影响了所以去执行 systemctl enabled firewalld.service 此时Linux报错“no space left on device”(磁盘空间不足),才反映过来是XXL运行日志太大而一直未清理导致的问题出现。
解决方法:为了使系统尽快运行起来,所以很简单粗暴的清空了tomcat运行日志的内容,但是如果下次再出现这种情况每次都需要手动操作就很浪费时间,所以就直接给XXL容器设置了开机自动启动,自动清理Tomcat日志,此次主要是为了记录实际操作过程的步骤以及碰到的问题。
一:关于防火墙的问题
1.如果不需要考虑太多安全性能方面的问题,建议可以直接关闭防火墙并设置为开机禁用。
(1)设置开机启用防火墙:systemctl enable firewalld.service
(2)设置开机禁用防火墙:systemctl disable firewalld.service
(3)启动防火墙:systemctl start firewalld
(4)关闭防火墙:systemctl stop firewalld
(5)检查防火墙状态:systemctl status firewalld
2.如果需要考虑安全性能问题,那就将当前Tomcat应用端口加入到防火墙通过端口中设置中。
(1)查看防火墙状态:firewall-cmd --state
(2)重新加载配置:firewall-cmd --reload
(3)查看开放的端口:firewall-cmd --list-ports
(4)开启防火墙端口:firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9000-9999/tcp --permanen
命令含义:
–zone #作用域
–add-port=9200/tcp #添加端口,格式为:端口/通讯协议
–add-port=9000-9999/tcp #指定端口范围通过防火墙,格式为:开始端口-结束端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
注意:添加端口后,必须使用命令firewall-cmd --reload重新加载一遍才会生效
(5)关闭防火墙端口:firewall-cmd --zone=public --remove-port=9200/tcp --permanent
二:关于定时清除Tomcat运行日志的问题
1.手动清空日志文件
(1)先切换到tomcat日志目录
cd /home/tomcat8/apache-tomcat-8.5.56/logs/
(2)查看tomcat输出日志大小
du -sh catalina.out
(3)清空日志文件
echo "" > catalina.out
2.使用脚本定时清理日志
(1)进入bin目录创建auto-deal-log.sh脚本
echo '' > auto-deal-log.sh
(2)编写auto-deal-log.sh脚本
1 # 复制日志文件内容到新的文件中
2 cp /home/tomcat8/apache-tomcat-8.5.56/logs/catalina.out /home/tomcat8/apache-tomcat-8.5.56/logs/catalina_`date -d '-1 days' +%Y%m%d`.log
3
4 # 清空tomcat默认日志输出文件
5 echo "" > /home/tomcat8/apache-tomcat-8.5.56/logs/catalina.out
6
7 # 查找并清理7天前的日志文件
8 find /home/tomcat8/apache-tomcat-8.5.56/logs -mtime +7 -name "catalina_*.log" -exec rm -rf {} \;
(3)脚本授权
chmod -R 777 /opt/sh/auto-deal-log.sh # 授权,便于执行脚本
(4)如果是生产环境建议备份日志,
cp /home/tomcat8/apache-tomcat-8.5.56/logs/catalina.out /home/logs/backup_`date -d '-1 days' +%Y%m%d`.log
(5)测试脚本
sh /home/tomcat8/apache-tomcat-8.5.56/bin/auto-deal-log.sh
3.设置crontab指令,指定每日定时任务
1 crontab -l # 查看当前是否存在任务
2 crontab -e # 编辑 指定执行哪个脚本以及执行时间
3 0 0 * * * /opt/sh/auto-deal-log.sh # 每日凌晨执行分割日志脚本
4
5
6 ps:A.编辑完成后,:wq保存并退出
到这里定时清理日志已经完成了整个操作流程,以后再也不用担心会被日志把磁盘空间给占满了
三:关于设置Tomcat开机自启动的问题
(1)在/etc/init.d下新建一个文件tomcat(需要root操作权限)
vi /etc/init.d/tomcat
(2)编辑上面创建的文件
1 #!/bin/sh
2 # chkconfig: 345 99 10
3 # description: Auto-starts tomcat
4 # /etc/init.d/tomcat
5 # Tomcat auto-start
6 # Source function library.
7 #. /etc/init.d/functions
8 # source networking configuration.
9 #. /etc/sysconfig/network
10 RETVAL=0
11 export JRE_HOME=/home/jdk1.8.0_111
12 export CATALINA_HOME=/home/tomcat8/apache-tomcat-8.5.56
13 export CATALINA_BASE=/home/tomcat8/apache-tomcat-8.5.56
14 start()
15 {
16 if [ -f $CATALINA_HOME/bin/startup.sh ];
17 then
18 echo $"Starting Tomcat"
19 $CATALINA_HOME/bin/startup.sh
20 RETVAL=$?
21 echo " OK"
22 return $RETVAL
23 fi
24 }
25 stop()
26 {
27 if [ -f $CATALINA_HOME/bin/shutdown.sh ];
28 then
29 echo $"Stopping Tomcat"
30 $CATALINA_HOME/bin/shutdown.sh
31 RETVAL=$?
32 sleep 1
33 ps -fwwu tomcat | grep apache-tomcat|grep -v grep | grep -v PID | awk '{print $2}'|xargs kill -9
34 echo " OK"
35 # [ $RETVAL -eq 0 ] && rm -f /var/lock/...
36 return $RETVAL
37 fi
38 }
39
40 case "$1" in
41 start)
42 start
43 ;;
44 stop)
45 stop
46 ;;
47
48 restart)
49 echo $"Restaring Tomcat"
50 $0 stop
51 sleep 1
52 $0 start
53 ;;
54 *)
55 echo $"Usage: $0 {start|stop|restart}"
56 exit 1
57 ;;
58 esac
59
60 exit $RETVAL
(3)设置权限
chmod +x /etc/init.d/tomcat
(4)设置开机自启动
chkconfig tomcat on
(5)验证是否设置成功
chkconfig --list
重启服务器(reboot),然后查看tomcat端口是否存在