一、springboot中jar包启动停止脚本
脚本备注说明: java -jar app.jar 运行jar包
java -jar -Dspring.config.location="" app.jar 指定配置文件运行jar包
备注:spring加载配置文件优先级为:
Spring程序会按优先级从下面这些路径来加载application.properties配置文件
当前目录下的/config目录
当前目录
classpath里的/config目录
classpath 跟目录
#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=demo1-0.0.1-SNAPSHOT.jar
JVM="-server -Xms512m -Xmx512m -XX:PermSize=64M -XX:MaxNewSize=128m -XX:MaxPermSize=128m -Djava.awt.headless=true -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"
APPFILE_PATH="-Dspring.config.location=/usr/local/demo/config/application-demo1.properties"
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
nohup java $JVM -jar $APPFILE_PATH $APP_NAME > /dev/null 2>&1 &
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重启
restart(){
stop
start
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
脚本解释说明:
运行jar包方式:
1.java -jar XXX.jar 当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
2.java -jar XXX.jar & 当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
3.nohup java -jar XXX.jar & nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
4.nohup java -jar XXX.jar >temp.txt & 与3相同 日志信息会重定向到文件中
nohup java $JVM -jar $APPFILE_PATH $APP_NAME > /dev/null 2>&1 &
解释说明:
nohup:不挂断运行当前命令
java $jvm -jar $appFile $app_name 指定java虚拟机配置和yml配置运行jar包
>/dev/null 不输出任何内容
2>&1 将标准错误重定向到标准输出
& 表示窗口不被锁定 即窗口一直显示应用运行状态,无法做其他事情
二、tomcat部署springboot项目遇到问题处理
1.linux环境下springboot的war和jar如何部署
war包部署:直接将war包丢在tomcat下的webapps目录下面
或者将war包解压 在server.xml文件中指定访问路径
jar包部署:直接写脚本 运行jar文件
2.springboot项目配置文件外部配置
可以在运行时指定配置文件,配置文件存放目录以及启动记载优先级都有说明
3.mysql远程主机连接收取
远程mysql服务器授权命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.50.182' IDENTIFIED BY '123456' WITH GRANT OPTION;
4.应用已经启动,本机可以访问,远程不能访问,检查端口或者防火墙设置
处理:开放端口或者关闭防火墙
开放端口:
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp
删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent
关闭防火墙:
启动: systemctl start firewalld
关闭: systemctl stop firewalld