Linux:服务自启动(含docker容器内应用服务自启动)

简介

之前利用docker 部署了一个ssm项目,当时没有配置tomcat随容器启动而启动,导致启动容器后,还需要进入容器开启tomcat服务才可以,mysql 当时利用 systemctl enable mysqld开机启动服务,不用在手动启动了,下面介绍tomcat服务开机自启动,有以下三种

一、自定义开机程序

类似于window系统的默认启动程序,开机会自启动
打开 /etc/rc.d/rc.local 文件,添加如下信息,因为shell不能读取系统的环境变量,所以需要添加Java环境变量,当然你也可以使用其他方法添加环境变量,注意将路径修改为你的 tomcat 安装路径

export JAVA_HOME=/usr/local/jdk1.8.0_161
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jsr
export PATH=$JAVA_HOME/bin:$PATH
/usr/local/apache-tomcat-8.5.55/bin/startup.sh start

在这里插入图片描述

二、配置为系统服务

1、chkconfig 配置

新建服务脚本

vi /etc/init.d/tomcat

脚本内容如下(环境变量你可以试着先不加,如果报错需要环境变量再加)


#!/bin/bash
# description: Tomcat8 Start Stop Restart
# processname: tomcat8.5.55
# chkconfig: 234 20 80
export JAVA_HOME=/usr/local/jdk1.8.0_161
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jsr
export PATH=$JAVA_HOME/bin:$PATH
CATALINA_HOME=/usr/local/apache-tomcat-8.5.55

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
                ;;
        *)
                echo 'please use : tomcat {start | stop | restart}'
        ;;
esac
exit 0

常用命令

向chkconfig添加 tomcat 服务
chkconfig --add tomcat

开启tomcat服务自启动
chkconfig tomcat on

启动/停止/重启
service tomcat start/stop/restart

关闭tomcat服务自启动:
chkconfig tomcat off

删除chkconfig的tomcat服务
chkconfig –del tomcat

想了解更多的 chkconfig 命令参考下面连接
链接: https://www.cnblogs.com/ftl1012/p/chkconfig.html.

2、systemctl 添加
1) 、新建立tomcat.service文件

在/usr/lib/systemd/system/目录下新建立tomcat.service文件

vi /usr/lib/systemd/system/tomcat.service

添加如下信息()

[Unit]
Description=java tomcat
After=tomcat service

[Service]
Type=forking
ExecStart=/usr/local/apache-tomcat-8.5.55/bin/startup.sh
ExecReload=/usr/local/apache-tomcat-8.5.55/bin/restart.sh
ExecStop=/usr/local/apache-tomcat-8.5.55/bin/shutdown.sh

[Install]
WantedBy=multi-user.target
2)、startup.sh文件添加Java环境变量

tomcat.service文件依然不能使用系统配置的环境变量,所以仍然需要配置环境变量,问题如下

java -version
systemctl daemon-reload
systemctl enable tomcat
systemctl start tomcat
systemctl status tomcat.service

命令详解参考下面的 3) 、基本使用
在这里插入图片描述
如果大家遇到这种情况,可以参考我的另一篇博客
链接: https://blog.csdn.net/qq_41538097/article/details/107110230.
在这里插入图片描述
添加环境变量
tomcat.service 服务主要启动 就是执行 startup.sh 脚本,最后将环境变量直接加入 startup.sh脚本中

vi /usr/local/apache-tomcat-8.5.55/bin/startup.sh

在这里插入图片描述
如图服务可以正常启动
在这里插入图片描述
以下连接方法你们可以试试,不过我都没解决
链接: https://www.cnblogs.com/zhangdewang/p/8617743.html.

链接: https://blog.csdn.net/DRB321/article/details/93242793.

3) 、tomcat.service文件参数说明
[Unit]:服务的说明
Description:描述服务
After:依赖,当依赖的服务启动之后再启动自定义的服务

[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径

[Install]服务安装的相关设置,可设置为多用户

更多配置参数参考如下连接
链接: https://blog.csdn.net/qq_41453285/article/details/88600304.

4) 、常用命令
1) 重载系统服务
systemctl daemon-reload
 
2) 开机启动tomcat服务(后面的service可加可不加,后面的命令类似)
systemctl enable tomcat 
或
systemctl enable tomcat.service
 
3) 去掉开机启动tomcat服务(后面的service可加可不加)
systemctl disable tomcat.service
 
4) 启动tomcat服务(后面的service可加可不加)
systemctl start tomcat 
 
5) 停止tomcat服务(后面的service可加可不加)
systemctl stop tomcat.service
 
6) 重新启动tomcat服务(后面的service可加可不加)
systemctl restart tomcat 

7) 查看tomcat服务状态(后面的service可加可不加)
systemctl status tomcat.service

更多 systemctl 相关命令请查看下方连接
链接: https://www.cnblogs.com/zwcry/p/9602756.html.

三、启动容器时利用脚本启动服务(仅适用于启动容器内服务

1、环境

系统: Linux centos8
镜像image:centos8.0
mysql:8.0.20
jdk:jdk1.8.0_161
tomcat:apache-tomcat-8.5.55

2、问题

在容器内部想要使用systemctl 在创建启动容器时需要添加–privileged /usr/sbin/init 才可以使用
如下

docker run -itd --name ssm2 -p 4000:8080 -p 3306:3306 --privileged yelingyun/centos_ye:1.0.0 /usr/sbin/in

如果想创建容器时使用其他脚本启动容器内服务,(我打开 /usr/sbin/init文件看了,一脸懵逼)显然两者不可兼得,下面简单讲一下不考虑使用systemctl命令的情况下,启动容器时顺带利用脚本启动容器

3、进入容器创建一个脚本 (或者在宿主机创建好复制进容器)
vi /usr/local/apache-tomcat-8.5.55/bin/tomcatshell.sh

添加如下信息

#!/bin/bash
/usr/local/apache-tomcat-8.5.55/bin/start.sh start
/usr/sbin/init
/bin/bash
4、修改文件权限
chmod 777 tomcatshell.sh
5、制作镜像

将当前容器制作为镜像,在利用镜像重启创建启动容器

docker commit 容器名 镜像名
如
docker commit ssms tomcat_test
6、新建容器

现在就可以利用新镜像创建容器的时候执行脚本启动tomcat

docker run -itd --name ssm3 -p 4000:8080 -p 3306:3306 --privileged tomcat_test /usr/local/apache-tomcat-8.5.55/bin/tomcatshell.sh
7、测试

如下,tomcat 服务启动成功,可以正常访问项目
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41538097/article/details/107107810
今日推荐