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 解决方法 ...
随机推荐
- Spring Boot fastJSON的使用
springBoot,默认使用的json解析框架是Jackson. 虽然jackson能够满足json的解析,如果想使用熟悉的alibaba的fastjon,我们只需要在pom文件中配置maven依赖 ...
- H5学习入门
[块级标签与行级标签的区别] 1.块级标签: 默认宽度100%(独占一行) 自动换行(右边不能有任何东西) 可以使用css设置宽度高度 2.行级标签: 内容宽度,由内容撑开(内容多宽,宽度就占多宽 ...
- ArcGIS10.3+Oracle12C+ArcGIS Server10.3安装布署(之二)
1.创建PDB 输入 dbca 命令 2.安装完成后,连接PDBSDE的容器数据库 3.环境变量 从Oracle的官方网站下载 instantclient-basic-nt-12.1.0.2.0. ...
- Flutter自定义标题栏之处理状态栏高度
App在很多情况下由于各种需求需要自定义标题栏,而在能够构建Android和IOS应用的Flutter中,如果不在Scaffold中使用AppBar会发现默认是沉浸式. 猜想:我们使用自定义标题栏好像 ...
- oracle 网络配置 及 pl/sql 连接配置
oracle网络配置有三个文件,它们都在D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN 这个文件夹下面,有sqlnet.ora.l ...
- 【java8】为java8的foreach正名
首先为自己没有经过严格测试得出的错误结论感到抱歉,原博文,测试完感觉自己发现了一个新bug,后来思前想后觉得不应该是这样的,如果效率差的这么多,jdk的开发人员会不去优化它吗,但是怎么重复测试任然得到 ...
- Python DDT(data driven tests)模块心得
关于ddt模块的一些心得,主要是看官网的例子,加上一点自己的理解,官网地址:http://ddt.readthedocs.io/en/latest/example.html ddt(data driv ...
- C#实现ADH815通讯
最近在做自提柜项目,考虑到ADH815电路板在自助售卖行业的通用性.把通讯代码贴出来了. 下载地址
- PHP防SQL注入和XSS攻击
摘要: 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.在用户名输入框中输入:' or 1=1#,密码随便输入,这时候的合成后的SQL ...
- 《C++ Primer Plus》读书笔记之九—使用类
第十一章 使用类 1.操作符函数的格式:operator op(argument-list).op是将要重载的操作符. 2.操作符重载函数的两种调用方式:①函数表示法:C=A.operator+(B) ...