java spring boot项目部署-上
1.编写sh脚本,便于服务器上管理工程:
#!/bin/bash source /etc/profile
PROG_NAME=$
ACTION=$ usage() {
echo "Usage: $PROG_NAME {start|stop|restart|status|tailf}"
exit ;
} # colors
red='\e[0;31m'
green='\e[0;32m'
yellow='\e[0;33m'
reset='\e[0m' echoRed() { echo -e "${red}$1${reset}"; }
echoGreen() { echo -e "${green}$1${reset}"; }
echoYellow() { echo -e "${yellow}$1${reset}"; } APP_HOME=$(cd $(dirname $)/..; pwd)
app=${project.build.finalName}.${project.packaging}
cd $APP_HOME
mkdir -p logs pidfile=logs/app.pid
logfile=logs/start.`date +%F`.log
JAVA_OPTS="${java_opts}" bakdir=/data/ops/packages/app_bak/${project.build.finalName}
bakfile=$bakdir/${project.build.finalName}`date +%F`.${project.packaging} function check_pid() {
if [ -f $pidfile ];then
pid=`cat $pidfile`
if [ -n $pid ]; then
running=`ps -p $pid|grep -v "PID TTY" |wc -l`
return $running
fi
fi
return
} function start() {
check_pid
running=$?
if [ $running -gt ];then
echoGreen "$app now is running already, pid=`cat $pidfile`"
return
fi nohup java -jar $JAVA_OPTS $app >> ${logfile} >& & pid=$! echoGreen "$app starting "
for e in $(seq ); do
echo -n " $e"
sleep
done
echo $pid > $pidfile
check_pid
running=$?
if [ $running -gt ];then
echoGreen " ,pid=`cat $pidfile`"
return
else
echoRed ",started fail!!!"
fi
} function stop() {
pid=`cat $pidfile`
kill - $pid
echoRed "$app stoped..."
} function restart() {
stop
sleep
start
} function backup(){ if [ ! -x $bakdir ];then
mkdir -p $bakdir fi if [ ! -f $bakfile ];then
cp $app $bakfile
echo $bakfile backup finish
else
echo $bakfile is already backup fi
} function rollback(){ if [ ! -f $bakfile ];then
echo $bakfile backup not found
else
rm -f $app
cp $bakfile $app
echo $app rollback finish fi } function tailf() {
tail -f $APP_HOME/$logfile
} function status() {
check_pid
running=$?
if [ $running -gt ];then
echoGreen "$app now is running, pid=`cat $pidfile`"
else
echoYellow "$app is stoped"
fi
} function main {
RETVAL=
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
tailf)
tailf
;;
status)
status
;;
backup)
backup
;;
rollback)
rollback
;;
*)
usage
;;
esac
exit $RETVAL
} main $
文件中包含多个站位符,可以借助spring filter打包时进行填充,如将sh起名为app.sh放置于maven格式项目的src/main/bin目录下则在pom文件中可添加如下配置,如:
<profiles>
<!--开发默认环境-->
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profileActive>dev</profileActive>
<java_opts>-server -Xms512m -Xmx512m -XX:NewSize=128m -XX:MaxNewSize=128m -Xss256k</java_opts>
<bakcupdir>/data/ops/packages/app_bak</bakcupdir>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>product</id>
<properties>
<profileActive>product</profileActive>
<java_opts>-server -Xms2048m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=256m -Xss256k</java_opts>
<bakcupdir>/data/ops/packages/app_bak</bakcupdir>
</properties>
</profile> </profiles> <build>
<finalName>liam-service</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources/keys/*</directory>
<includes>
<include>webank_keystore.jks</include>
<include>webank_truststore.jks</include>
</includes>
<filtering>false</filtering>
</resource>
<!--也就是此处配置上maven打包需要进行配置的文件-->
<resource>
<directory>src/main/bin</directory>
<targetPath>${project.build.directory}/bin</targetPath>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.6.RELEASE</version>
<configuration>
<!--fork: 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart-->
<fork>true</fork>
</configuration>
<executions>
<execution>
<goals>
<!-- 用于打包jar -->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
<nonFilteredFileExtensions>
<!--防止maven该表证书内的内容-->
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
<nonFilteredFileExtension>jks</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
如此将包打好后扔于服务器上,就很方便了:
ssh "chmod +x /data/ops/app/liam-service/bin/app.sh"
ssh "/data/ops/app/liam-service/bin/app.sh backup"
ssh "/data/ops/app/liam-service/bin/app.sh stop"
ssh "/data/ops/app/liam-service/bin/app.sh start"
当然借助jenkens的话会很方便~
java spring boot项目部署-上的更多相关文章
- 多个Spring Boot项目部署在一个Tomcat容器无法启动
转自https://www.cnblogs.com/tomxin7/p/9434085.html 业务介绍 最近用Spring Boot开发了一个翻译的小项目,但是服务器上还跑着其他项目,包括一个同样 ...
- 从零开始通过idea插件将一个spring boot项目部署到docker容器里运行
实操:将一个spring boot项目部署到docker容器里运行 实验需要的环境: 腾讯云+Ubuntu 16.04 x64+idea+插件docker integration+daocloud 第 ...
- KubeSphere CI/CD+GitLab+Harbor将Spring Boot项目部署至Kubernetes
上一篇文章分享了如何在 KubeSphere 对公共的代码仓库 GitHub 和镜像仓库 DockerHub 创建流水线,本文将继续使用 KubeSphere,基于 Harbor 和 GitLab 创 ...
- 简化 Spring Boot 项目部署,Flyway 搞起来
虽然我之前录了一个微人事(https://github.com/lenve/vhr)部署视频(新版微人事部署教程来啦),但是由于这次升级涉及到了 Redis 和 RabbitMQ,所以在本地跑微人事还 ...
- Spring Boot项目部署到外部Tomcat服务器
2017年04月27日 23:33:52 阅读数:7542 前言 Spring Boot项目一般都是内嵌tomcat或者jetty服务器运行,很少用war包部署到外部的服务容器,即使放到linux中, ...
- 将spring boot项目部署到tomcat容器中
一. 我这里用的环境 tomcat: tomcat 8 jdk: jdk 7 spring boot 版本: 1.5 二. 将创建好的spring boot项目做如下修改 2.1. 修改打包形式 在p ...
- Spring boot 项目部署服务器
Spring Boot 有两种部署到服务器的方式,这里介绍官方推荐的(jar包) 一.首先进行application.properties配置 # EMBEDDED SERVER CONFIGURAT ...
- spring boot 项目部署在阿里云上
装jdk, 然后 nohup java -jar xxxx.jar> system.log 2>&1 & lsof -i:9999 kill -9 1234
- Spring Boot 项目部署到本地Tomcat,出现访问路径问题
首先确定war 包没问题,把war包放在webapps目录下,访问http://localhost:8080/ + 项目名称 发现首页可以访问但css,js请求都是404,跳转页面也是404 解决方法 ...
随机推荐
- 关于nginx下drupal7无法$_GET获取参数的问题
参考:nginx 官方drupal 配置 - Drupal | NGINX 之前配置好了LNMP下的drupal7(7.59版本),简洁路径也配好了.但是在使用过程出现问题. 配置的nginx.con ...
- Data Encryption Errors After Restoring Microsoft Dynamics CRM Database
If you’re seeing an error similar to the one above, you’ve probably done a database backup and resto ...
- Eclipse 下载、安装、取消自动更新、设置编码、关联Tomcat
1.下载 (1)安装jdk 如果进行web开发,下载java se 版本的jdk即可,不需要像安装 java se 一样安装java ee(里面大多是接口和抽象类).关于java ee的依赖问题有两种 ...
- docker实战 (1) 关于docker的安装
docker定义: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...
- 1 Java程序文件中函数起始行和终止行在程序文件位置中的判定__抽象语法树方法
应用需求: 实现对BigCloneBench中函数体的克隆检测,必须标注出起始行号和终止行号. 问题: 给定一个Java文件,从中提取出每个函数的起始行和终止行. 难点: 这个问题的难点在于,对于Ja ...
- 回归JavaScript基础(三)
主题:JavaScript基本概念. 任何语言的核心必然会描述这门语言最基本的工作原理.这部分内容对我们来说,读起来很乏味,甚至会产生困意,但这部分内容却是重要的!我有幸拜读<JavaScrip ...
- iPhone 应用开发的5个贴士
[编者按]本文作者为来自 Redbytes Software 的开发者 James Richard,主要介绍开发 iPhone 应用过程中大有益处的五个贴士.文章系国内 ITOM 管理平台 OneAP ...
- mysql常用语句备忘
1.连接本地数据库 mysql -h localhost -u root -p123 2.连接远程数据库 mysql -h 192.168.0.201 -P 3306 -u root -p123 3. ...
- JSP九大内置对象与Servlet的对应关系
JSP对象 Servlet中怎样获得 request service方法中的request参数 response service方法中的res ...
- AFNetworking2.0简易GET,POST请求封装以及使用
AFNetworking2.0简易GET,POST请求封装以及使用 AFNetworking不用我赘述其强大性,本人仅仅做了非常简易的封装,解决了有时候请求出错的问题,提供源码给大家. 封装源码库下载 ...