Spring Boot部署到linux相关笔记
Spring Boot部署到linux相关笔记
环境
-
Spring Boot 1.5.8
-
jdk 1.7
-
Spring boot内置tomcat8.5
-
jar启动
注意:开发中和maven打包必须为jdk1.7,不然会出现在jdk1.7生产环境中运行
java -jar xxxx-0.0.1-SNAPSHOT.jar --spring.profiles.active=xxx
会出现错误
本地联调
-
运行Java程序:
XXXXApplication
; -
打开shell或cmd,进入ngrok目录,运行
ngrok http 8081
项目部署到Ubuntu
- 首先在 pom.xml中配置插件
org.springframework.boot
spring-boot-maven-plugin
-
mvn clean package -Dmaven.test.skip=true将工程打成jar包
-
、上传jar包到服务器,假设部署路径为 /var/apps/caz-evcx.jar,使用命令做一个软连接到 /etc/init.d目录,命令:
ln -s /var/apps/xxxx.jar /etc/init.d/caz-evcx
/etc/init.d/caz-evcx
最后的 caz-evcx 可以是别的名字,这个就是服务名,我们后面使用service [服务名] start
来启动(下面有说明)。
- 给jar文件授予可执行权限,命令:
chmod +x cdz-evcx.jar
- 接下来,就可以使用我们熟悉的
service myapp start|stop|restart|status
来对应用进行启停了。
执行命令后将得到形如
Started|Stopped [PID]
的结果反馈。
默认PID文件路径:/var/run/appname/appname.pid
默认服务日志文件路径:/var/log/appname.log
(可以通过下面.conf 的方式修改LOG_FOLDER)
- 使用自定义的.conf文件来变更默认配置,方法如下:
在jar包相同路径下创建一个.conf文件,名称应该与.jar的名称相同,caz-evcx.conf(如果我们打包的文jar文件为 caz-evcx-1.0.0.jar那么这里的conf文件也应该是 caz-evcx-1.0.0.conf),其内容配置可以如下:
JAVA_HOME=/usr/local/jdk
JAVA_OPTS=-Xmx1024M
LOG_FOLDER=/data/logs/caz-evcx
注:LOG_FOLDER对应的文件夹目录要必须存在,如果目录不存在,服务并不会自从创建目录。
项目部署到centos6
spring boot打成jar包部署到Centos,从环境配置到开机启动服务
https://my.oschina.net/u/2481288/blog/1790362
中间那三个 rw- 代表的是所有者(user)拥有的权限
然后那三个 r-- 代表的是组群(group)拥有的权限
最后那三个 r-- 代表的是其他人(other)拥有的权限
然后
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
- 表示相应的权限还没有被授予
- 修改文件权限可执行
chmod +x xxx-0.0.1-SNAPSHOT
- 命令运行选择对应的环境配置文件
java -jar xxxx-0.0.1-SNAPSHOT.jar --spring.profiles.active=xxx
CentOS 6.5安装jdk1.8(该项目已经改为1.7,不用了)
https://www.cnblogs.com/xqzt/p/4934451.html
cdz-cevs.sh脚本的使用
执行命令sh xxxx.sh [start|stop|restart|status]
命令分别为 启动服务 开启服务 重启服务 查看服务状态
注意:切勿在win下编辑该脚本,在win编辑后在上传到linux中脚本中的每一行末尾都会出先^M,运行脚本会出现错误,出现错误后,可以搜索百度解决去掉后面多余的东西后运行
命令笔记:
cd cdz-evcs-app #进入项目部署目录
sh cdz-evcs.sh stop #停止该项目
sh cdz-evcs.sh start #启动项目
sh cdz-evcs.sh status #查看项目是否运行中
cd log #进入日志目录
cat spring.log #查看项目日志信息
centos6.5 在iptables中增加通行端口(防火墙iptables关闭了就用不到)
- 查看开放端口:
iptables -L -n
- 新增开放端口 :
#开放8080端口
#INPUT IN_public_allow是自己的的分组,根据自己系统配置实际情况来填写。
iptables -I IN_public_allow -p tcp --dport 8080 -j ACCEPT
iptables -I INPUT -p tcp --dport 8080-j ACCEPT
- 开放所有端口:
#INPUT IN_public_allow是自己的的分组,根据自己系统配置实际情况来填写。
iptables -I IN_public_allow 1 -j ACCEPT
Spring Boot相关shell脚本
#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=xxxx-0.0.1-SNAPSHOT.jar
#使用说明,用来提示输入参数
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 -jar $APP_NAME --spring.profiles.active=testPub > /dev/null 2>&1 &
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
echo "${APP_NAME} is killed"
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