centos7 tomcat 设置开机启动

目录

安装tomcat

方法一、设置开机自启动

删除开机自启动

方法二、设置开机自启动之init.d

方法三、设置开机自启动之supervisor


安装jdk 参考 《linux 安装jdk yum安装 源码包安装》 https://blog.csdn.net/whatday/article/details/106278190

安装tomcat

1、下载tomcat8.0.50

wget http://www-eu.apache.org/dist/tomcat/tomcat-8/v8.0.50/bin/apache-tomcat-8.0.50.tar.gz

2、解压tomcat到/opt目录

tar -xzvf apache-tomcat-8.0.50.tar.gz -C /opt

3、启动tomcat

cd /opt/apache-tomcat-8.0.50/bin/
./startup.sh

4、测试访问

curl localhost:8080

至此,遇到一个大坑。curl命令卡在那里不动了,浏览器访问也是一直转圈,转啊转,十几分钟了还在转。。。莫非,tomcat版本有问题?换了8.5.29,不行;换了7.0.85,不行。莫非是jdk版本有问题?毕竟第一次是使用yum命令安装的。换了1.8.0_161,依然不行。

好在,最终找到了答案:

《centos7 tomcat8 配置 java web环境 熵池不够大 启动慢问题》

https://blog.csdn.net/whatday/article/details/106278294

,安装rng服务。

(1)安装熵服务

yum install rng-tools

(2)启动熵服务

systemctl start rngd

然后,tomcat就启动成功了。
(3)赶紧把rng服务放进开机自启动

systemctl enable rngd

5、关闭tomcat。

./shutdown.sh

方法一、设置开机自启动

假设 tomcat 目录为 /opt/apache-tomcat-8.0.50

1、为Tomcat添加启动参数

catalina.sh 在执行的时候会调用同级路径下的setenv.sh来设置额外的环境变量,因此在 /opt/tomcat/bin 路径下创建 setenv.sh 文件,内容如下:

# 设置JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_161
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

export CATALINA_HOME=/opt/apache-tomcat-8.0.50
export CATALINA_BASE=/opt/apache-tomcat-8.0.50
# 设置Tomcat的PID文件
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
# 添加JVM选项
JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"

2、在 /usr/lib/systemd/system 路径下添加 tomcat.service 文件,内容如下:

[Unit]
Description=tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/opt/apache-tomcat-8.0.50/tomcat.pid
ExecStart=/opt/apache-tomcat-8.0.50/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

3、把tomcat加入开机自启动

systemctl enable tomcat.service

4、重启服务器

reboot

5、再次连接后,查看服务状态

systemctl status tomcat.service

看到tomcat已经启动,正想着大功告成,却发现浏览器访问又开始转圈了。检查rng服务,启动正常。
直接使用./startup.sh启动正常,而使用systemctl start tomcat就转圈,还能是什么原因?
要换init.d方法来设置启动?目前看来,只能这样了。

删除开机自启动

1、删除tomcat.service

find / -name "tomcat*"
rm /usr/lib/systemd/system/tomcat.service
rm /etc/systemd/system/multi-user.target.wants/tomcat.service
rm /etc/selinux/targeted/active/modules/100/tomcat

2、测试启动

systemctl daemon-reload
systemctl start tomcat.service

出现提示Failed to start tomcat.service: Unit not found.说明删除成功。

方法二、设置开机自启动之init.d

1、在/etc/init.d下创建服务脚本

vim /etc/init.d/tomcat

写入内容如下:

#!/bin/bash
#
# tomcat startup script for the Tomcat server
#
#
# chkconfig: 345 80 20
# description: start the tomcat deamon
#
# Source function library
. /etc/rc.d/init.d/functions

prog=tomcat
# 根据自己的路径改写JAVA_HOME
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_161/  
export JAVA_HOME
# 根据自己的路径改写CATALANA_HOME
CATALANA_HOME=/opt/apache-tomcat-8.0.50/   
export CATALINA_HOME

case "$1" in
start)
    echo "Starting Tomcat..."
    $CATALANA_HOME/bin/startup.sh
    ;;

stop)
    echo "Stopping Tomcat..."
    $CATALANA_HOME/bin/shutdown.sh
    ;;

restart)
    echo "Stopping Tomcat..."
    $CATALANA_HOME/bin/shutdown.sh
    sleep 2
    echo
    echo "Starting Tomcat..."
    $CATALANA_HOME/bin/startup.sh
    ;;

*)
    echo "Usage: $prog {start|stop|restart}"
    ;;
esac
exit 0

2、更改权限

chmod a+x /etc/init.d/tomcat

3、测试启动

service tomcat start

启动成功,然而,还是转圈。。。

实际上,init.d方法添加的自启动服务,也会加入到systemctl的管理。因为,这时也可以用systemctl start tomcat来启动服务。

无奈,决定换成supervisor来设置自启动。

方法三、设置开机自启动之supervisor

开始设置前最好先删除init.d方法设置的自启动文件,虽然不影响使用,但是看着闹心。

1、安装supervisor

yum install supervisor

2、创建sock

touch /tmp/supervisor.sock
chmod 777 /tmp/supervisor.sock

3、开机启动

systemctl enable supervisord

4、生成配置文件

mkdir -p /etc/supervisor/
echo_supervisord_conf > /etc/supervisord.conf

5、修改配置文件,vim /etc/supervisord.conf,添加:

[include]
files = /etc/supervisor/*.conf

6、运行

systemctl start supervisord

7、在/etc/supervisor中新建tomcat.conf文件

[program:tomcat]
directory=/opt/apache-tomcat-8.0.50
command=/opt/apache-tomcat-8.0.50/bin/catalina.sh run
environment=JAVA_HOME="/usr/lib/jvm/jdk1.8.0_161",JAVA_BIN="/usr/lib/jvm/jdk1.8.0_161/bin"
user=root
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stderr_logfile=/var/log/supervisor/%(program_name)s.log

8、重启supervisor

systemctl retart supervisord

PS:重启tomcat命令

supervisorctl -c /etc/supervisord.conf restart tomcat

9、测试访问
curl localhost:8080,成功。浏览器访问,成功。
换了三种自启动方式,总算成功了,不容易。。。

10、重启测试

reboot

11、二次测试
重启后执行supervisorctl status,tomcat正常运行。
curl命令和浏览器测试,正常。至此,tomcat自启动配置成功。其实,systemd和init.d两种方法,理论上也是可以成功的,访问转圈的锅肯定是机器和系统的。嗯,就是这样。

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值