spring boot 打包成war后所有都要加项目名_20、云服务器部署上线项目部署

目前接口工程和前端工程都已通过tomcat服务器发布成功了,端口分别使用的是8088和8080端口,因此访问前端页面的时候暂时还有端口号,后续用nginx的时候会干掉8080端口号。目前的版本访问地址是:http://www.oursnail.cn:8080/fossi-shop/。支持用户注册和登录,并且可以使用支付宝沙箱APP支付(不要用真实的APP,当然我的这个也用不起来~)欢迎大家点一点哦,不过不要恶意攻击或压测,很脆弱。国庆节长假即将结束,能把单体项目上线,感觉还是不错的。

7799b5afeadf8b1dfa80846b8c954f22.png

本文完成剩下的部分:

  • springboot不同环境的配置

  • springboot打war包并上传发布

  • 发布前端项目

  • 解决cookie异常

一、多环境部署

一般,环境分为开发环境dev、测试环境test和生产环境prod。

为什么要分环境呢?因为开发环境、测试环境和生产环境往往一些url地址是不一样的,如果在这些环境直接手动来回更改,会很麻烦并且容易出错。springboot支持多种环境的配置文件直接切换,无需一项一项地修改配置。

springboot的配置文件我们现在主要就是一个application.yml,这个配置文件里面放的应该是无论哪种环境都不会变化的配置。然后根据不同环境新增application-dev.yml等配置文件来存放有差异的配置项,比如数据库的url,开发环境一般是本机,所以application-dev.yml中的spring.datasource.url一般是127.0.0.1打头的地址,即用的是本地的数据库。但是到了生产环境,这里可能是生产环境的一个实际的内网IP,因此这一项肯定是变化的,需要提取出来分别配置。

那么针对我们这个项目,来看看变化的部分是哪些?这些就是需要我们单独提出来的部分了。

  1. 数据源配置

  • url根据实际情况去做修改

  • 密码根据实际情况去做修改

mybatis sql执行详情日志打印

  • dev 可以打印

  • test 可以打印

  • prod 不要打印

此外,发布上线还有其他几个地方需要注意修改,不能忽略,按照下面一步一步进行检查,如果有所遗漏也没事,上线肯定会有bug,到时候回过头来再解决也是一个很好的思路。

  1. config.properties文件分为了两个文件:config-dev.propertiesconfig-prod.properties

  • prod文件中修改相关配置为实际存放头像的路径和访问的前缀

  • FileConfig引用配置文件的地方,需要将其改为@PropertySource("classpath:config-prod.properties")

#用户头像相关
file.imageNamePrfix=/face-
file.imageUserFaceLocation=/home/picture/faces/
# 注意这里要加上发布后的项目名
file.imageServerUrl=http://api.oursnail.cn:8088/yummyfood-api/
  1. 修改parameter.properties文件,指定支付回调地址的实际路径

# 支付后的回调通知接口地址,注意这里要加上发布后的项目名
alipay.callback.url=http://api.oursnail.cn:8088/yummyfood-api/payment/alipay_callback

这里我在后台设置了一条A记录,api.oursnail.cn可直接解析为IP地址,因此这里直接改为了域名。

dcf186717b4660aa3e1af349a52f57bd.png

  1. 修改corsFilter设定跨域的请求地址

# 防止老要修改,我把能加的都加了一遍
config.addAllowedOrigin("http://localhost:8080");config.addAllowedOrigin("http://111.231.119.253:8080");config.addAllowedOrigin("http://111.231.119.253:80");config.addAllowedOrigin("http://www.oursnail.cn:8080");config.addAllowedOrigin("http://www.oursnail.cn:80");config.addAllowedOrigin("http://oursnail.cn:8080");config.addAllowedOrigin("http://oursnail.cn:80");
  1. 修改logback-spring.xml中日志存放的路径

/workspace/yummyfoodlog/yummyfood-info-%d{yyyy-MM-dd}.%i.log.zip
  1. 修改静态资源映射的地址,我设定为/home/picture/faces/

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

//实现静态资源的映射
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
// .addResourceLocations("classpath:/static/")
.addResourceLocations("classpath:/META-INF/resources/")//映射swagger2,否则会导致404
.addResourceLocations("file:/home/picture/faces/");//这个就是映射的路径,下面的文件就可以通过localhost:8088/xxx.png来访问了
}
}

由于是要作为发布版本,因此我这里都指定为prod版本。

二、打包

万事俱备,只欠打包了。

第一步:在api层的pom文件中指定打包方式为war

war

第二步:在根pom下,排除掉自带的内置tomcat:

<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcatartifactId>
<groupId>org.springframework.bootgroupId>
exclusion>
exclusions>
dependency>

第三步:既然不用内置tocmat了,那么就需要添加servlet依赖


<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
dependency>

第四步:项目启动类,原来的入口不能直接用了,需要另外一种外部tomcat启动的方式

public class WarStarterYummyFoodApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 指向Application这个Springboot启动类
return builder.sources(YummyFoodApplication.class);
}
}

第五步:指定war包生成的名字,在根pom文件中指定:

<build>
<finalName>yummyfood-apifinalName>
build>

最后执行mavencleaninstall生成最终的war包。这个war可以在生成后的target目录中看到,我们直接将其复制出来,上传到tomcat-apiwebapps目录下,由于tomcat是正在启动的,因此直接扔进去就会自动被解压。

如何验证我们修改的对不对呢?还记得我们的swagger嘛?我的访问地址是:

http://api.oursnail.cn:8088/yummyfood-api/doc.html

注意,这里我不用IP了,直接用域名

看看能不能正常展示就知道啦,并且可以选择里面一个功能做测试,比如展示首页轮播图。看看是否能请求到正常数据。我的看起来都是正常的。

320fe730d8bb5fcce9d1c8ac350415ff.png

三、发布前端工程

前端工程发布前要注意修改后端的一些地址。主要就是在app.js文件中。

我自己修改为:

/* 生产环境 */
serverUrl: "http://api.oursnail.cn:8088/yummyfood-api", // 接口服务接口地址
shopServerUrl: "http://www.oursnail.cn:8080/fossi-shop/", // 门户网站地址
paymentServerUrl: "http://api.oursnail.cn:8088/yummyfood-api", // 支付中心服务地址
centerServerUrl: "http://www.oursnail.cn:8080/fossi-center/", // 用户中心地址
cookieDomain: ".oursnail.cn;", // cookie 域

那么,按照目前的状况,我前端访问的路径是:

http://www.oursnail.cn:8080/fossi-shop

这里我用了www.oursnail.cn来访问,这个是要在云服务器上做解析的:

80941e0fb10f619b3e10a612cbfc166d.png

修改好两个前端工程的app.js后,就可以直接扔到tomcat-front这个tomcat下面了。我直接访问,可以看到一切正常:

bccbe6b5f529a326264abaa2d8573b4c.png

不过存在一个BUG,注册成功不能正常跳转,点击登录也有问题,发现左上侧还是不显示用户名,发现cookie中没有user这个数据,因此前端没有任何用户信息的展示。

其实后台的接口工程已经报错了,在我们注册或登录的时候,把信息放到.oursnail.cn这个域的时候失败了。

5946557b95909fdadc7a15a3a924052a.png

如何解决呢?原因就出在这个报错信息第一行的Rfc6265CookieProcessor这个处理器。我们可以用老版本的处理器就可以解决这个报错。我们可以自定义用老的cookie处理器来处理。如何指定呢?

tomcat-apiconf目录下有一个叫做context.xml的文件,我们在里面指定即可:

301cf5e644d05c988c3522f1f03bf6a2.png

重启项目,我们看到cookie问题已解决:

b2f9a59846c9fde867101f88290b9dd2.png

至此,大功告成!

对了,不要忘记确认支付宝回调地址也在网站的后台也修改过来:

bbc204483bbf2fa57e3d8a630ffc075c.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值