Spring Boot部署到linux相关笔记

2019-01-05  本文已影响10人  stonehiy

Spring Boot部署到linux相关笔记

环境

  1. Spring Boot 1.5.8

  2. jdk 1.7

  3. Spring boot内置tomcat8.5

  4. jar启动

注意:开发中和maven打包必须为jdk1.7,不然会出现在jdk1.7生产环境中运行java -jar xxxx-0.0.1-SNAPSHOT.jar --spring.profiles.active=xxx会出现错误

本地联调

  1. 运行Java程序:XXXXApplication

  2. 打开shell或cmd,进入ngrok目录,运行 ngrok http 8081

项目部署到Ubuntu

  1. 首先在 pom.xml中配置插件

org.springframework.boot

spring-boot-maven-plugin

  1. mvn clean package -Dmaven.test.skip=true将工程打成jar包

  2. 、上传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 来启动(下面有说明)。

  1. 给jar文件授予可执行权限,命令:

chmod +x cdz-evcx.jar

  1. 接下来,就可以使用我们熟悉的 service myapp start|stop|restart|status 来对应用进行启停了。

执行命令后将得到形如 Started|Stopped [PID] 的结果反馈。

默认PID文件路径:/var/run/appname/appname.pid

默认服务日志文件路径:/var/log/appname.log(可以通过下面.conf 的方式修改LOG_FOLDER)

  1. 使用自定义的.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 表示文件可以被执行(如果它是程序的话)


  - 表示相应的权限还没有被授予

  1. 修改文件权限可执行

chmod +x xxx-0.0.1-SNAPSHOT

  1. 命令运行选择对应的环境配置文件

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关闭了就用不到)

  1. 查看开放端口:

iptables -L -n

  1. 新增开放端口 :

#开放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

  1. 开放所有端口:

#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

上一篇 下一篇

猜你喜欢

热点阅读