Spring Boot学习笔记-Nginx+Jar包部署项目
来源:互联网 发布:up to date数据库官网 编辑:程序博客网 时间:2024/05/23 07:24
写在前面
之前用Spring Boot写的获取英雄联盟战绩的小项目,只是上传到了Github上,Github地址:lol-api。一直没时间部署到服务器上。今天,找时间部署好了,网址是:api.51carry.com。具体的接口使用文档还没写。需要说明的是,部署的这台服务器,以前已经搭建好了环境(JDK + Nginx + Tomcat + Mysql),如果没搭建环境可以自行搭建,推荐使用oneinstack一键搭建脚本。因为是以Jar包形式部署,可以使用SpringBoot内置的Tomcat容器,所以Tomcat不需要自己另外装,我装是因为之前部署过其它项目。
准备工作
项目内的Spring Boot
配置文件需要添加如下配置:
server: port: 9090 #因为我之前启动了Tomcat,不能继续使用8080,这里按你所需的端口设置 use-forward-headers: true tomcat: remote-ip-header: x-forwarded-for protocol-header: x-forwarded-proto port-header: X-Forwarded-Port #其它设置是让Tomcat去Http头信息去获取协议信息,而不是从HttpServletRequest
将你测试完成的项目打成Jar包(查看之前的文章),上传到服务器的目录,上传可通过FTP、SFTP、SCP等等。我这里上传到/data/wwwroot/api.51carry.com/
下,并将Jar
包改名为lol.jar
。
运行项目
运行项目,如果直接使用java -jar lol.jar
的方式,不是很方便,是在前台运行的,下面就通过使用Linux
下的nohup
命令实现在后台运行我们的Spring Boot
项目。
nohup 命令
用途:不挂断地运行命令。
语法:nohup Command [ Arg … ][ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 &到命令的尾部。
通过使用nohup java -jar lol.jar &
命令,来使我们的lol.jar
在后台运行。为了方便管理,我们可以使用Shell
来编写一些简单的脚本。
启动应用的脚本:
#!/bin/bash nohup java -jar lol.jar &
关闭应用的脚本:
#!/bin/bash PID=$(ps -ef | grep lol.jar | grep -v grep | awk '{ print $2 }') if [ -z "$PID" ] then echo Application is already stopped else echo kill $PID kill $PID fi
接着,我们需要赋予这两个脚本的权限:
chmod 755 start.sh stop.sh
最后,我们执行以下命令后台运行项目:
./start.sh
运行结果如下:
实时查看日志
查看运行日志肯定是非常必要的,在上一步执行完毕start.sh
,输出一个提示nohup: appending output to 'nohup.out'
。其中,nohup.out
就是我们项目运行所输出的日志。我们可以使用如下命令实时查看日志:
tail -f nohup.out
显示如下:
Ctrl + C
关闭查看。
Nginx配置
这一部分,因为我之前已经将域名api.51carry.com
以A记录解析到了这台服务器,所以我直接也配置了server_name
为该域名,这样就可以通过域名访问我们的Spring Boot项目
。
server { listen 80; server_name api.51carry.com; #access_log /data/wwwlogs/api.51carry.com_nginx.log combined; location / { proxy_pass http://127.0.0.1:9090; #这里的端口记得改成项目对应的哦 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; } }
检测下配置文件,通过之后重启Nginx
就可以了。
测试
浏览器打开http://api.51carry.com,显示如下界面:
没错,这就是我的首页,哈哈哈,本来想写接口说明的,懒的还没写。
好了,下面在测试一下接口能不能使用吧,测试的这个接口是通过游戏昵称来查询该昵称都在哪些大区有角色,并返回基本信息:
测试完毕,配置成功。
疑问与猜想
配置的过程中,有些疑问,我觉得需要记录下来,如果有大牛能指点,那是最好不过了。猜想总归是猜想,不要当真。
1. 使用War
包部署和使用Jar
包部署,哪个才是部署Spring Boot
项目的最佳实践?或者说两种部署方式各自的优势与劣势是什么?
现在水平的我,认为
Jar
包的方式是最佳实践,因为Spring Boot
就是一个微框架,打包成一个Jar
包,直接内置了Java Web
容器,只要环境里配置好了Java
环境,就直接可以部署项目,也符合Spring Boot
微框架的定位。
2. 之前通过War
包部署的Java Web
项目,静态文件,如css
、js
、image
等,可以通过Nginx
配置,使静态文件直接走Nginx
,而缓解Tomcat
的压力,那么,Spring Boot
项目,我这里直接将所有请求都交给了它处理。我有疑问的是,Spring Boot
是否有动静态分离的功能,静态资源直接访问,动态资源才走Web
容器?或者是在Nginx
也可以直接配置?
这单纯的就是个猜想,下去我再慢慢查资料吧。
以上,仅仅是我自己的疑问,只是在搜索引擎简单的搜索了一下,没找到结果,所以才记录下来。其中,猜想只代表我自己的观点,请不要当真。当然,如果您可以解决我的疑惑,真的感激不尽。
小结
以上,就是我的部署过程,如果您对我这个查询英雄联盟战绩的小项目感兴趣,还烦请去点个star
,谢谢。项目的地址:lol-api。
个人博客:https://www.howieli.cn 和个人CSDN博客: http://blog.csdn.net/howieli_1995。
参考资料
- Spring Boot+Nginx+Tomcat+SSL配置笔记
- Spring Boot应用的后台运行配置
- Spring Boot学习笔记-Nginx+Jar包部署项目
- Cent OS 部署 Spring Boot jar 包
- spring boot项目打jar包发布
- Spring Boot项目导出jar包发布
- Spring Boot学习---2.将项目打成war包部署到自己的tomcat中
- spring boot 部署为jar
- spring boot jar部署内存不足
- Spring boot项目部署
- spring-boot项目部署
- spring boot项目打包成jar或者war包
- Spring boot项目以jar包形式启动中文乱码
- Spring-boot将项目打为jar包发布
- 执行spring boot jar包
- spring boot 打jar包
- spring boot jar包 瘦身
- Spring Boot学习--打包一个可执行的jar项目
- docker部署Spring boot项目
- Spring boot 项目Linux部署
- 作用域
- UVA 11134 Fabled Rook 枚举 multiset加速
- 关于海康威视网络摄像机二次开发问题
- 2-7 laravel中的Eloquent入门
- Trailing Zeroes (III) (数论(二分查找值,规律))
- Spring Boot学习笔记-Nginx+Jar包部署项目
- Unity3D学习(16)之初识DDD
- 文章标题
- 今天收到阿里巴巴一个电话面试
- babel-plugin-import不生效的问题
- [二进制分组 dsu on tree 二次函数] Codechef KILLER Painting Tree
- C++上机实验五——数组1
- linux内核分析1--反汇编分析
- 浅谈动态代理