自定义参数
ACTIVEMQ_NAME= #服务全名
ACTIVEMQ_PATH= #安装路径
TEMP_PATH= #临时目录
USER_NAME= #启动用户
部署参数检查
#!/bin/bash
# 检查参数是否设置
echo "=====检查参数是否设置====="
if [ ! $ACTIVEMQ_PATH ];then
echo "=====$ACTIVEMQ_PATH 此参数未设置,请检查!====="
exit 1
fi
if [ ! $ACTIVEMQ_NAME ];then
echo "=====$ACTIVEMQ_NAME 此参数未设置,请检查!====="
exit 1
fi
if [ ! $TEMP_PATH ];then
echo "=====$TEMP_PATH 此参数未设置,请检查!====="
exit 1
fi
isServerExist=$(ps -ef | grep activemq | grep -v grep | awk '{print $2}' | wc -l)
# 检查服务是否已经安装
echo "=====检查服务是否已经安装====="
if [ "${isServerExist}" != "0" ]; then
echo "activemq 服务已启动,请先卸载"
exit 1
else
echo "activemq 服务未启动,符合预期!"
fi
# 检查目标目录是否存在
echo "检查目标目录是否存在====="
if [ ! -d $ACTIVEMQ_PATH ];then
echo "=====$ACTIVEMQ_PATH 目录不存在,创建目录====="
mkdir -p $ACTIVEMQ_PATH
else
echo "=====$ACTIVEMQ_PATH 目录已存在,退出安装====="
exit 1
fi
echo "=====部署前检查通过====="
上传解压安装包
#!/bin/bash
echo "=====解压安装包到指定目录====="
unzip -o ${ACTIVEMQ_NAME}.zip -d $ACTIVEMQ_PATH
echo "=====查看解压后的内容====="
ls $ACTIVEMQ_PATH/$ACTIVEMQ_NAME
设置启停脚本+启动
#!/bin/bash
# 对目录进行授权
echo "=====对目录进行授权====="
cd $ACTIVEMQ_PATH && chmod 755 -R *
sed -i 's/tcp:\/\/0.0.0.0:51616/tcp:\/\/0.0.0.0:61616/g' ${ACTIVEMQ_NAME}/conf/activemq.xml
sed -i 's/nio:\/\/0.0.0.0:51617/tcp:\/\/0.0.0.0:61617/g' ${ACTIVEMQ_NAME}/conf/activemq.xml
chown -R ${USER_NAME}:${USER_NAME} $ACTIVEMQ_PATH
echo "=====开始设置启动脚本====="
# 设置启动脚本
cat > /usr/lib/systemd/system/activemq.service <<-EOF
[Unit]
Description=ActiveMQ service
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/jdk
ExecStart=$ACTIVEMQ_PATH/$ACTIVEMQ_NAME/bin/activemq start
ExecStop=$ACTIVEMQ_PATH/$ACTIVEMQ_NAME/bin/activemq stop
User=${USER_NAME}
Group=${USER_NAME}
Restart=always
RestartSec=9
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=activemq
[Install]
WantedBy=multi-user.target
EOF
echo "=====启动并设置开机自启====="
systemctl daemon-reload
systemctl start activemq.service
systemctl enable activemq.service
echo "=====启停方式:systemctl start|stop|restart activemq====="
#按照进程判断,默认启动时间2分钟,判断两次,按需修改循环次数
echo "=====开始判断服务是否已启动成功====="
for((i=1;i<=12;i++));
do
sleep 10
ISSTART=$(ps -ef | grep activemq | grep -v grep | awk '{print $2}' | wc -l)
if [ "$ISSTART" != "0" ]; then
echo "发现服务进程,为确保服务真正启动成功,等待15秒后进行第二次判断!"
sleep 15
ISSTART=$(ps -ef | grep activemq | grep -v grep | awk '{print $2}' | wc -l)
if [ "$ISSTART" != "0" ]; then
echo "等待15秒后进程仍存活,服务第二次判断通过,服务启动成功!"
exit 0
else
echo "等待15秒后进程未找到,服务第二次判断失败,服务启动失败!"
exit 1
fi
else
echo "服务启动中,请等待!"
fi
done
echo "等待2分钟后未发现服务进程,服务启动失败!"
exit 1
清理临时目录安装包
#!/bin/bash
rm -rf ${TEMP_PATH}
mkdir -p ${TEMP_PATH}