写在前面
之前用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 和个人优快云博客: http://blog.youkuaiyun.com/howieli_1995。
本文介绍了如何使用Nginx部署Spring Boot的Jar包项目,包括项目配置、Jar包上传、后台运行命令、Nginx配置以及测试验证。在Nginx配置中,讨论了动静态资源分离的可能性。

775

被折叠的 条评论
为什么被折叠?



