Spring Boot不同操作系统下的部署

部署方式

参考文章传送门1:https://zhuanlan.zhihu.com/p/25102504

传送门2:http://blog.didispace.com/spring-boot-run-backend/

1. linux下

  • 将打包文件放到Linux上
  • 启动前查看端口是否占用

  • 查看端口状态:

netstat -apn | grep 8100

如果之前有启动过,执行如下命令杀掉进程:

kill -9 $(netstat -tlnp | grep 8100 | awk '{print $7}' | awk -F '/' '{print $1}')

可以将上面的命令封装成关闭脚本shutdown.sh 使用的时候执行:

./shutdown.sh
  • 执行如下命令启动:
//& 后台执行 nohup表示输出到的文件
nohup java -jar o2o-1.0.0-SNAPSHOT.jar&

==注意==:上述命令有个问题,由于使用nohup时,会自动将输出写入nohup.out文件中,如果文件很大的话,nohup.out就会不停的增大,这是我们不希望看到的,因此,可以利用/dev/null来解决这个问题。

参考文章传送门:http://blog.csdn.net/geekster/article/details/6657620

Linux下有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。
如果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:

ls 1>/dev/null 2>/dev/null

还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:

ls >/dev/null 2>&1

注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,于是一切静悄悄:-)

linux重定向

0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出。
在一般使用时,默认的是标准输出,既1.当我们需要特殊用途时,可以使用其他标号。例如,将某个程序的错误信息输出到log文件中:./program 2>log。这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。
另外,也可以实现0,1,2之间的重定向。2>&1:将错误信息重定向到标准输出。

上述命令修改之后如下所示:

nohup java -jar o2o-1.0.0-SNAPSHOT.jar >/dev/null 1>logs/out.log &

如果什么输出信息也不想要的话:

nohup java -jar o2o-1.0.0-SNAPSHOT.jar >/dev/null 2>&1 &

==敏感词过滤==

海信赛维项目中做敏感词过滤的时候,TXT文档打成jar后,中文输出乱码,导致过滤敏感词匹配不到。此时,需要修改启动Spring Boot的命令:

// -Dfile.encoding:指定启动的时候的文件编码
nohup java -Dfile.encoding=utf-8 -jar o2o-1.0.0-SNAPSHOT.jar >/dev/null 1>logs/out.log &

启动的时候添加依赖jar路径:

//-Dloder.path:指定依赖库路径
nohup java -Dfile.encoding=utf-8 -Dloder.path='./lib' -jar o2o-1.0.0-SNAPSHOT.jar >/dev/null 1>logs/out.log &

最后上述启动命令封装成启动脚本startup.sh,启动的时候执行:

./startup.sh
  • 整合启动/关闭脚本命令:run.sh
#!/bin/bash
echo stop application
source shutdown.sh
echo start application
source startup.sh

2. Windows下

在Windows下部署SpringBoot应用有如下几种方式:
- 运行Spring Boot的应用主类(执行main方法)
- 使用Maven的Spring Boot插件 mvn spring-boot:run 来运行
- 打成jar包后,使用java -jar运行

开发的时候,通常使用前两种。 部署的时候使用第三种。在Windows的服务器上直接在命令行执行如下命令来运行:

java -jar xxx.jar

但是这种方式,由于命令行窗口一直在输出信息,占用内容,导致速度有所延迟。前台获取数据的时候感觉很慢,所以这种方式启动并非是后台运行。

要想后台运行,可以使用AlwaysUp。具体用法参考文章:https://zhuanlan.zhihu.com/p/25102504

你可能感兴趣的:(Spring,Boot学习)