将 spring boot 应用程序打包成 jar 包

我们使用 spring boot 的 maven 插件来构建管理整个应用程序,使用 mvn package 将应用程序打包成一个 jar 包

将 该 jar 包上传到 服务器

上传到服务器大致有两种方式(常见的):1)通过 xftp 这种方式;2)本文将要介绍的这种,我不太建议使用 xftp,因为它太常见了,不新奇,

说说第二种方式吧:首先我们在 linux 服务器上,下载 lrzsz 插件,命令为:yum -y install lrzsz,然后上传文件就输入命令:rz -y -y 表示强制覆盖原有文件(建议使用),rz 表示上传,当然了,sz 就表示下载喽。之后就会打开一个 windows 的文件资源管理器窗口,你选择目标 jar 包即可实现上传(前提,选择好你的上传目录)

运行

上传到服务器的指定位置了,接下来就是如何运行了!

我们都知道,java 程序在你本地运行时就是选择好入口 main,然后运行即可。但是在 linux 上就不是那么简单了。

大致呢有两种:一种是直接手动启动;一种是通过写一个脚本文件来启动。

直接启动:

java -jar 目标.jar >> catalina.out 2>&1 &,什么意思呢?就是将 tomcat(spring-boot-starter-web 自带 tomcat) 的启动内容 标准错误流重定向到标准输出流(2 >&1),并且以在后台运行的形式去运行(&)。

脚本启动

编写启动脚本

#!/bin/bash
PROJECTNAME=目标jar名称(不需要带.jar)
pid=`ps -ef |grep $PROJECTNAME |grep -v "grep" |awk '{print $2}'`
if [ $pid ]; then
​ echo "$PROJECTNAME is running and pid=$pid"
else
echo "Start success to start $PROJECTNAME ...."
nohup java -jar 目标.jar >> catalina.out 2>&1 &
fi

在该 .sh(脚本文件)中,使用到了命令 nohup java -jar ... nohup 就是 no hangup(不挂起),即 即使用户登出,

关闭终端后,该进程还会继续运行;采用 nohup 命令后,那么就会在当前脚本所在的同级目录下生成一个 nohup.out 的文件,

该文件就记录了整个应用启动过程以及之后运行中的所有日志内容(因为我们是将 2 标准错误 作为输出内容的,

而标准错误默认是包括所有的输出内容+错误内容)。之后你只需要运行这个脚本即可启动应用程序啦:./start.sh

如果你想查看一下日志内容,你可以输入:vi nohup.out,或者你只想查看最后几行内容:tail -f nohup.out即可。

脚本关闭

编写关闭脚本:

其实我们一般是不需要关闭脚本的,因为我们通常是这样操作的:进入到该应用程序所在的目录:

ps aux | grep javaps -ef | grep java 二者并没有什么太大的区别,看你喜欢用哪个命令了,

然后找到该应用程序的 pid, 然后 kill -g 该pid 就杀死这个进程了。但是其实这样很麻烦,

你习惯了还好,一般我还是建议你使用 关闭脚本的

#!/bin/bash
PROJECTNAME=目标 pid=`ps -ef |grep $PROJECTNAME |grep -v "grep" |awk '{print $2}' ` if [ $pid ]; then ​ echo "$PROJECTNAME is running and pid=$pid" ​ kill -9 $pid ​ if [[ $? -eq 0 ]];then ​ echo "sucess to stop $PROJECTNAME " ​ else ​ echo "fail to stop $PROJECTNAME " ​ fi fi

一般目录结构就是如下图所示:

我实际中用的这个启动脚本内容如下:

ps:至于有人说的可能需要在 pom.xml 中指定 入口类,我持保留意见

Spring boot程序的部署及运行的更多相关文章

  1. Spring Boot从入门到精通(一)搭建第一个Spring Boot程序

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...

  2. 第一章 第一个spring boot程序(转载)

    第一章 第一个spring boot程序 本编博客转发自:http://www.cnblogs.com/java-zhao/p/5324185.html   环境: jdk:1.8.0_73 mave ...

  3. 我的第一个spring boot程序(spring boot 学习笔记之二)

    第一个spring boot程序 写在前面:鉴于spring注解以及springMVC的配置有大量细节和知识点,在学习理解之后,我们将直接进入spring boot的学习,在后续学习中用到注解及其他相 ...

  4. 一个简单的spring boot程序

    搭建一个spring boot项目十分的方便,网上也有许多,可以参考 https://www.cnblogs.com/ityouknow/p/5662753.html 进行项目的搭建.在此我就不详细介 ...

  5. 构建Spring Boot程序有用的文章

    构建Spring Boot程序有用的文章: http://www.jb51.net/article/111546.htm

  6. 第一个Spring Boot程序启动报错了

    创建完成第一个Spring Boot项目后,准备运行,尝一下胜利的果实. 启动日志如下 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ...

  7. Spring Boot程序接收命令行参数

    Spring Boot程序接收命令行参数 输入一行,回车,触发一次.如果想要调用service层,也是可以,能调用service层,就可以做很多事,触发一次就好比调用了一次http接口一样 packa ...

  8. Spring boot 应用打包部署

    1.Spring Boot内置web spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动.其内置Tomcat容器或Jetty容器,具体由配置来决定 ...

  9. spring boot生成的war包运行时出现java.lang.NullPointerException: null

    最近写了一个数据库同步的程序,见之前的博客,没有用到spring框架来集成,用的时纯Java代码.然后,项目经理要我把程序合到spring boot框架中,因为涉及到多数据源,时间又比较紧,同意我直接 ...

随机推荐

  1. luogu P2467 [SDOI2010]地精部落

    很有意思的dp计数题目. 思考一下发现开始时山峰和开始是山谷的方案数是相同的 所以我们只需要统计一个即可. 证明的话可以考虑对于任意一种开始时山峰的方案 每个数字变成n-a[i]+1 那么可以此方案还 ...

  2. Android JNI之静态注册

    这篇说静态注册,所谓静态注册,就是native的方法是直接通过方法名的规定格式和Java端的声明处代码对应起来的,其对应规则如下: JNIEXPORT <返回值> JNICALL Java ...

  3. markdown利器-小书匠

    markdown利器-小书匠 为什么要用markdown语法编写文档? 编写文档的好处这里就不多说了.相信很多人都会在一些博客网站上发布自己的博客,那么怎么能使得自己的博客内容更加具有通用性呢?正如j ...

  4. HashMap源码(数组算法)

    Jdk1.8初始化hashMap容量的算法 static final int tableSizeFor(int cap) { // 先减1,避免传进来的本来就是2的n次幂,导致算出来多了一次幂,比如传 ...

  5. cocos2d-x_下载游戏引擎并创建第一个项目

    我是一名小白. 下载并创建游戏项目 第一步:去官网下载cocos2d-x http://www.cocos.com/download 第二步:将安装包里边的 setup.py 拖进命令行点击回车键 , ...

  6. jQuery 多库共存

    多库共存 问题概述         jQuery使用$作为标识符,随着jQuery的流行,其他js的库也会用$作为标识符,这样就会引起冲突         需要一个解决方案 让jQuery和其他的JS ...

  7. akka-typed(9) - 业务分片、整合,谈谈lagom, 需要吗?

    在讨论lagom之前,先从遇到的需求开始介绍:现代企业的it系统变得越来越多元化.复杂化了.线上.线下各种系统必须用某种方式集成在一起.从各种it系统的基本共性分析:最明显的特征应该是后台数据库的角色 ...

  8. ECharts 常见的问题总结

    以前也用过ECharts(不得不说,这真的是百度的良心产品),但是都是一些简单的示例.这次因为工作的需要,做了很多表格,对ECharts有了更加深刻的理解,现在来总结一下. 第一个肯定是新手经常遇到的 ...

  9. Golang | 既是接口又是类型,interface是什么神仙用法?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第12篇文章,我们来继续聊聊interface的使用. 在上一篇文章当中我们介绍了面向对象的一些基本概念,以及gol ...

  10. 如何实现字符串转换成整数(实现atoi内置函数)?

    题目描述 输入一个由数字组成的字符串,把它转换成整数并输出.例如:输入字符串"123",输出整数123. 给定函数原型int StrToInt(const char *str) , ...