欢迎光临
我们一直在努力

小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

前言:

我的后端项目是Java写的,用的Springboot框架。在部署服务器并配置https访问过程中,因为做了一些令人窒息的操作(事后发现),所以老是不能成功。

不成功具体点说就是:域名地址可以正常访问(http/https均可),而部署在服务器上的API仍然只能通过http访问,通过https访问会显示不安全连接!

通过提交工单,得到阿里云工作人员的帮助,他们给出了答案:

小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

然后我想,我好像知道是咋回事了呢。

1. Springboot框架是内嵌有tomcat的!!我只是把项目打成Jar包放到了我配置在服务器上的tomcat的webapps下,然后手动通过命令来运行程序。所以我用的还是内嵌的tomcat。

2. 我从阿里云上下载的SSL证书直接配置在服务器的tomcat上,所以它自然而然就跟我写的接口没啥关系了。

问题解决:

先思考一个问题:到底准备用Springboot内嵌的tomcat还是用服务器上的外部tomcat?

所以我无外乎两条路走:

1. 内嵌tomcat:在Springboot项目中直接配置SSL证书,使其可以通过https被访问;项目依然以Jar形式在服务器被运行。

2. 外部tomcat:剔除Springboot项目中的内嵌tomcat,修改项目相关配置,将其打成War包放到服务器的tomcat下加载运行。

实践:

前提:

  1. 无论哪种方式,都需要先在服务器上下载安装好Java环境哦(⊙o⊙);
  2. 准备好SSL证书!阿里云买域名就送了免费的证书,下载tomcat对应的证书文件!

方式一:使用内嵌tomcat部署程序 -- Jar包方式运行

参考文章:部署到阿里云,配置https,springboot项目同时支持http和https请求,阿里云配置https

1. 将在阿里云下载好的SSL证书文件(.pfx格式)和密码文件,先放到src/main/resource文件夹下,再在项目下application.properties文件中配置证书信息。

小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

 

2. 在Springboot启动程序中修改增加一些信息,如下:

 1 import org.apache.catalina.Context;  2 import org.apache.catalina.connector.Connector;  3 import org.apache.coyote.http11.Http11NioProtocol;  4 import org.apache.tomcat.jni.File;  5 import org.apache.tomcat.util.descriptor.web.SecurityCollection;  6 import org.apache.tomcat.util.descriptor.web.SecurityConstraint;  7 import org.springframework.boot.SpringApplication;  8 import org.springframework.boot.autoconfigure.SpringBootApplication;  9 import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer; 10 import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer; 11 import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; 12 import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; 13 import org.springframework.context.annotation.Bean; 14 import org.springframework.core.io.ClassPathResource; 15 16 @SpringBootApplication 17 public class HappyseatApplication implements EmbeddedServletContainerCustomizer { 18 19 public static void main(String[] args) { 20 SpringApplication.run(HappyseatApplication.class, args); 21  } 22 23 // 根据spring boot 1.5.X以下版本,添加这个!注意,版本不同添加的不一样↓↓↓↓ 24  @Bean 25 //拦截所有请求 26 public EmbeddedServletContainerFactory servletContainer() { 27 TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory(); 28 tomcat.addAdditionalTomcatConnectors(httpConnector()); // 添加http 29 return tomcat; 30  } 31 // 根据spring boot 1.5.X以下版本,添加这个!注意,版本不同添加此方法有所不同 ↑↑↑↑ 32 33 //配置http转https 34  @Bean 35 public Connector httpConnector() { 36 Connector connector = new Connector(TomcatEmbeddedServletContainerFactory.DEFAULT_PROTOCOL); 37 connector.setScheme("http"); 38 //Connector监听的http的端口号 39 connector.setPort(80); 40 connector.setSecure(false); 41 //监听到http的端口号后转向到的https的端口号 42 connector.setRedirectPort(443); 43 return connector; 44  } 45 46 //这里设置默认端口为443,即https的,如果这里不设置,会https和http争夺80端口 47  @Override 48 public void customize(ConfigurableEmbeddedServletContainer container) { 49 container.setPort(443); 50  } 51 52 53 }

3. 直接用 eclipse生成Jar包?

小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

4. 上传服务器:将Jar包和证书文件传到新建的/home/myapp目录下,如图:(ps:使用rz工具包可以传本地文件到服务器上,但需要在本地的远程连接工具中使用才可行)

小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

5. 启动程序!使用命令 nohup java -jar happyseat.jar >runlog.txt 2>&1 & 启动程序,加上nohup是为了让程序在shell窗口关闭后依旧运行在后台。

小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

6. 使用命令 netstat -atunlp 查看有关接口情况:发现刚刚启动的程序停止了,而443端口在运行的进程也不是刚刚启动得到的进程号。

小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

7. 查看日志也可以发现是说443端口已经被占用了,所以我就直接 kill 1907 ,再重新启动了我的程序。正常加载运行了~

小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

8. 接下来在浏览器中测试 https + 域名 + /hello,发现成功啦!

小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

9. 不过我很忧桑地发现,访问域名不能正常加载之前的页面了。。。因为之前的域名对应的网站是WordPress里的网站信息,我试着登网站也登不上了。

然后我尝试把我自己程序的端口改了,443端口也没有被占用,可是还是不行orz...tomcat日志里还是Address already in use.可能是配置文件出毛病了,回头再试试吧。。

小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

 

后续:修改了访问接口的端口号,在项目文件中,第二步的配置信息都删了(( ╯□╰ ))。然后重启服务器后Wordpress站点和接口都可以了。

我特意看了一下端口对应的进程情况,正常的时候443端口和80端口是有httpd服务在运行,所以还是建议换端口哦(⊙o⊙)。

方式二:用服务器上安装的外部tomcat自动加载程序包--War包加载运行

(大前提:服务器上安装了项目对应的tomcat版本喏!

按照网上很多方案试过,暂时还没成功,成功了更。。

更:指明路?部署springboot项目到云服务器的两种方式(jar+war)

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】》
文章链接:https://www.456zj.com/4516.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址