spring boot打包以及centos下部署
spring boot打包以及部署
一、打包
springboot
的打包方式有很多种。有打成war
的,有打成jar
的,也有直接提交到github
,通过jekins
进行打包部署的。这里主要介绍如何打成jar
进行部署。不推荐用war
,因为springboot
适合前后端分离,打成jar
进行部署更合适。
需要在pom.xml
中增加主程序入口
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
在idea工具中可视化工具打包,如图
通过命令行来打包
mvn clean package -Dmaven.test.skip=true
二、部署
按照这上面部署被坑惨了。。
下面整理下自己部署的sh
脚本
XXX.sh,此
sh
放到和jar统一目录即可
#!/bin/sh
### BEGIN INIT INFO
# Provides: lanwei
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start:
# Default-Stop:
# Short-Description: XXX service
# Description: XXX service
### END INIT INFO
echo "Starting...."
APP_NAME=$(echo $(basename $) | sed -e 's/^[SK][0-9]*//' -e 's/\.sh$//')
APP_HOME=/usr/software/${APP_NAME}
#这里需要配置环境,dev test stg prd
APP_ENV="dev"
#配置jar
APP_JAR=${APP_HOME}/XXXX.jar
usage() {
echo "Usage: sh ${APP_NAME} [start|stop|restart]"
exit
}
##################################################
# Some utility functions
##################################################
findDirectory()
{
local L OP=$
shift
for L in "$@"; do
[ "$OP" "$L" ] || continue
printf %s "$L"
break
done
}
echo "APP_ENV : ${APP_ENV}"
echo "APP_HOME : ${APP_HOME}"
echo "APP_NAME : ${APP_NAME}"
echo "APP_JAR : ${APP_JAR}"
#####################################################
# Find a location for the pid file
#####################################################
if [ -z "$APP_RUN" ]
then
APP_RUN=$(findDirectory -w /var/run /usr/var/run /tmp)
fi
#APP_RUN=/var/run
echo "APP_RUN : ${APP_RUN}"
#####################################################
# Find a pid
#####################################################
if [ -z "$APP_PID" ]
then
APP_PID="$APP_RUN/${APP_NAME}.pid"
fi
echo "APP_PID : ${APP_PID}"
LOG=${APP_HOME}/logs/${APP_ENV}.log
ERROR_LOG=${APP_HOME}/logs/${APP_ENV}_err.log
case $ in
start)
echo "Starting ${APP_NAME} ..."
if [ ! -f $APP_PID ]; then
cd ${APP_HOME}
nohup java -jar $APP_JAR --spring.profiles.active=${APP_ENV} > $LOG > $ERROR_LOG &
echo $! > $APP_PID
echo "$APP_NAME started ..."
else
echo "$APP_NAME is already running ..."
fi
;;
stop)
if [ -f $APP_PID ]; then
PID=$(cat $APP_PID);
echo "$APP_NAME PID is ${PID}"
echo "$APP_NAME stoping ..."
kill $PID;
echo "$APP_NAME stopped ..."
rm $APP_PID
else
echo "$APP_NAME is not running ..."
fi
;;
restart)
if [ -f $APP_PID ]; then
PID=$(cat $APP_PID);
echo "$APP_NAME PID is ${PID}"
echo "$APP_NAME stopping ...";
kill $PID;
echo "$APP_NAME stopped ...";
rm $APP_PID
echo "$APP_NAME starting ..."
cd ${APP_HOME}
nohup java -jar $APP_JAR --spring.profiles.active=${APP_ENV} > $LOG > $ERROR_LOG &
echo $! > $APP_PID
echo "$APP_NAME started ..."
else
echo "$APP_NAME is not running ..."
echo "$APP_NAME starting ..."
cd ${APP_HOME}
nohup java -jar $APP_JAR --spring.profiles.active=${APP_ENV} > $LOG > $ERROR_LOG &
echo $! > $APP_PID
echo "$APP_NAME started ..."
fi
;;
esac
在
/etc/init.d/
下创建自己的服务名称文件这里比如myapp.sh
#!/bin/sh
#
# /etc/init.d/sms-web
# chkconfig:
# description: activemq servlet container.
# processname: activemq 5.14. # Source function library.
#. /etc/init.d/functions
# source networking configuration.
#. /etc/sysconfig/network export JAVA_HOME=/usr/local/jdk1..0_144
export PATH=$JAVA_HOME/bin:$PATH
export MYAPP_WEB_HOME=/usr/software/myapp case $ in
start)
sh $MYAPP_WEB_HOME/myapp.sh start
;;
stop)
sh $MYAPP_WEB_HOME/myapp.sh stop
;;
restart)
sh $MYAPP_WEB_HOME/myapp.sh restart
;; esac
exit
在
/etc/init.d/
下chmod +x myapp.sh
赋权限chkconfig --list
查看服务列表,如果没有, 添加chkconfig --add myapp
到服务中。设置开机启动
chkconfig myapp on
spring boot打包以及centos下部署的更多相关文章
- spring boot (2):spring boot 打包tomcat、tomcat 部署多个项目、服务器部署项目SSL 设置(阿里云)
一.spring boot 内置tomcat配置https: 关于自签名证书可以看下上一篇 spring boot1 更详细的可以看转载 https://www.jianshu.com/p/8d4ab ...
- Spring Boot打包部署
date: 2018-11-19 15:30:11 updated: 2018-11-21 08:28:37 Spring Boot打包部署 第一种方式 打包成jar包部署在服务器上 1.1 添加插件 ...
- Spring Boot打包war jar 部署tomcat
概述 1.Spring Boot聚合工程打包war部署Tomcat 2.Spring Boot打包Jar,通过Java -jar直接运行. 3.提供完整pom.xml测试项目 至github 4.项目 ...
- spring boot 打包war后 部署到外部 tomcat 的具体正确操作【包括修改端口 与 去除请求路径的工程名】
1.前言 工程做好了,总不能放在idea运行吧?不然怎么把项目放到云服务器呢?[这一篇随笔不讲解发布的云服务器的操作,在其他随笔有详细记载.] 解决的方案是把springboot 工程 打包成war文 ...
- 一些坑 Java 执行命令行命令 Spring Boot 打包为jar ResourceUtils.getFile 等出现的问题
Java 执行命令行命令 这个没技术含量的东西耗费了我半个多小时 String command = ....; Process process = Runtime.getRuntime().exec( ...
- 居然仅用浏览器,就完成了Spring Boot应用的开发与部署!
最近有幸试用了一下阿里云的一个新产品:云开发平台,体验一把全新的开发模式!虽然中间也碰到了一些问题,但整体的体验透露着未来感,因为整个过程都不需要使用我们最常用的IDEA,仅依靠浏览器就把一个Spri ...
- Spring Boot打包总结
环境配置信息 -** JDK 1.8 -** Spring Boot 1.5.3.RELEASE -** IDE: STS 3.4 Spring Boot下打包过程 基于STS创建Spring boo ...
- Linux CentOS下部署Java Web项目
本文讲解如何在Linux CentOS下部署Java Web项目的步骤. 一.环境准备: (1)Linux CentOS (2)apache-tomcat-9.0.10 (3)XShell 二.启动t ...
- Spring Boot 打包成的可执行 jar ,为什么不能被其他项目依赖?
前两天被人问到这样一个问题: "松哥,为什么我的 Spring Boot 项目打包成的 jar ,被其他项目依赖之后,总是报找不到类的错误?" 大伙有这样的疑问,就是因为还没搞清楚 ...
随机推荐
- 08 redis缓存穿透、缓存雪崩、缓存击穿
Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面.但同时,它也带来了一些问题.其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解.如果对数据的一致性要求很 ...
- 禁止Steam VR随着虚幻4自动启动
1.禁止启动UE4的时候启动修改这个文件Program Files\Epic Games\XXXX\Engine\Plugins\Runtime\Steam\SteamVR\SteamVR.uplug ...
- Centos7.7安装swoole
系统版本:centos 7.7(查看系统版本:cat /etc/redhat-release) 执行命令安装swoole: yum update -y && yum remove ph ...
- Hexo NexT主题内加入动态背景
主题内新添加内容 _layout.swig 找到themes\next\layout\_layout.swig文件,添加内容:在<body>里添加: 1 2 3 <div class ...
- GitHub新手使用篇
如何使用GitHub 未完结 目录: ISSUE总汇总: Issue1:GitHub的注册和使用? 答:(1)注册GitHub :https://github.com/.需要填用户名.邮箱.密码,值得 ...
- linux基础4-压缩及其相关的命令
一 压缩的原理以及gzip.bzip2.tar三个命令的: Linux下文件的压缩与打包 二 zip.zipinfo.unzip: zip:压缩成.zip文件 zipinfo:列出压缩文件信息
- 树的总结(遍历,BST,AVL原型,堆,练习题)
目录 树 一.抽象数据类型 二.二叉树的性质 三.二叉树的遍历 三.活用树的遍历 四.BST树 五.AVL树 六.BST树和AVL树练习 七.堆 树 @ 一.抽象数据类型 1.顺序存储 使用数组存储 ...
- git 判断路径是否是 git 仓库
git 判断路径是否是 git 仓库 import subprocess repo_dir = "../path/to/check/" command = ['git', 'rev ...
- 一个 TCP 连接可以发多少个 HTTP 请求?
曾经有这么一道经典面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式. ...
- CVE-2018-10933 LibSSH auth bypass
漏洞原理 认证实现错误, 认证分为多个步骤,可以直接跳到成功的步骤 A vulnerability was found in libssh's server-side state mach ...