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

前言:

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

  不成功具体点说就是:域名地址可以正常访问(http/https均可),而部署在服务器上的API仍然只能通过http访问,通过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://blog.csdn.net/qiushi_1990/article/details/79915880

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

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包??

      

      

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

     

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

    

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

    

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

     

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

      

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

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

    

后续:我怀疑是项目里配置的问题,,待解决。。

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

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

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

    

  

  

原文地址:https://www.cnblogs.com/codecheng/p/10636280.html

时间: 2024-07-29 21:04:34

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

Java Web项目部署到阿里云服务器(ECS)

本篇随笔只是记录博主第一次将自己的Java项目部署到阿里云服务器的大致过程,具体细节还请参考别的博文. 一.项目介绍 我做的项目是利用maven项目构建工具进行搭建基于SSM框架的代码共享管理系统,主要功能是发布相关博文,对博文进行CRUD操作...所以说也算是个入门的SSM项目. 二.域名以及ECS 由于想要将自己的项目发布到公网上,所以首先想到的是去购买一个域名,于是到了阿里云计算官网上购买了万网的域名,过程比较简单:首先注册阿里云账号并进行相关的实名认证,在控制台中的信息模板进行实名认证,

如何把php项目部署到阿里云服务器window server2012__含公网ip访问时jquery/ajax失效解决办法

记一次蛋疼的折腾. 弄了一晚上最后发觉是360浏览器的问题,换个浏览器就好了.垃圾360用什么IE7文档模式.导致界面和功能失效. 建议大家测试的时候用firefox或者chrome. 项目部署到服务器后360浏览器兼容模式显示错误的解决办法:http://www.cnblogs.com/zj917/p/6697724.html -------------------------------------------------- 正文: 上篇博客说临时起意做了个有意思的聊天版,就想把它部署到阿里

javaWeb项目部署到阿里云服务器步骤

记录web项目部署到阿里云服务器步骤 (使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以完成打包,如下图: 2.安装Xshell和Xftp两种软件 简单介绍下这两种软件作用(详情请百度相关文档) Xshell:通过网络连接到远程服务器主机. Xftp:能在Linux.Unix和Windows之间互传文件. 3.通过Xshell连接远程主机,如下图    4.创建会话完成,点击连接,显示

将web项目部署到阿里云服务器上

将web项目部署到阿里云服务器(ubantu14.0.14)上的一般流程: 1.下载putty.在host name栏输入远程服务器ip地址,端口默认为22.阿里云服务器可以通过控制台查看公网ip地址,点击open进行连接 2.输入用户名和密码后进入dos界面,用apt-get update 命令更新,否则很多东西安装不了 3.安装vsftpd服务,通过命令apt-get vsftpd安装,注意 这里的ftp和之后的Tomcat.MySQL数据库端口在阿里云服务器中是默认关闭的,需要进入阿里云控

将javaweb项目部署到阿里云服务器

主要步骤:1. 购买阿里云服务器2. 远程连接3. 在云服务器上配javaweb环境:jdk,tomcat,MySQL4. 将项目的war文件放到Tomcat下关于云服务器ECS:如果还想在买服务器之后,再买域名.买的服务器时间就要至少三个月,因为剩余时间 3 个月及以上的实例才能申请备案服务号.一.阿里云服务器1. 我买的学生优惠版服务器,先登录阿里云官网,进行学生身份认证.因为支付宝之前已经学生认证过了,所以可以一键认证,省了很多步骤.2. 下载阿里云app,在学生专区购买云服务器.先选择操

【UEditor】 UEditor整合项目上传资源到阿里云服务器

目录 关于此文 下载源码 JSP代码 Java代码 阿里云jar包引入配置 成功啦! 回到顶部 关于此文 项目中要实现编辑器生成带格式的html文档,存入模板,最后生成html的URL,所以选择了UEditor. UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点. 之前没有接触过编辑器,从头开始摸索.看API,看网上的例子.之前,用的是UMeditor,是UEditor的mini版本.用的人少,例子也少.让我很苦恼.之后又换回了完整版

Vue+Flask部署到阿里云服务器

本文用于记录自己在阿里云部署Vue+Flask组合的详细过程. 在阿里云部署Vue+Flask组合的前提是已经在自己电脑上成功部署,参考:https://minatsuki-yui.github.io/2018/01/04/vue&flask/?from=timeline 阿里云ECS建网站基础配置,参考:https://www.jianshu.com/p/2604e53a7f6a?from=singlemessage Python环境配置 阿里云服务器中已经存在Python2.7和Python

如何让springboot打包的项目部署在阿里云上使用https和http方式访问

前言 问题描述:怎么让springboot部署在服务器上使用https协议方式访问我们的接口或者域名,目的是某些平台请求的是https协议,而不是https 部署环境:阿里云 centos7服务器,springboot项目打包的jar,nginx反向代理 注:部署前需要解决几个问题 1)需要配置springboot项目支持https协议, 2)需要配置阿里云的安全组,放行相关的端口,如本文中开放的8080和8081端口 3)配置nginx的nginx.conf文件做好反向代理 4)申请ssl文件

如何将APP部署在阿里云服务器

1,APP应用需要什么样的云服务器? 为了帮助大家了解如何使用阿里云云服务器及相关应用,阿里云的移动云团队开发了一个简单的APP应用:移动云相册,其中使用了ECS主要用作部署云相册的API服务(图片信息调用.图片列表调用)和图片缩略图处理,因为这个应用服务端使用了JAVA语言开发,因此在上面安装tomcat来部署应用.具体部署1)远程登录:第一次购买ECS后,会把该ECS服务器的root账号.密码发送购买者的邮箱,然后购买者可以通过远程登录到ECS服务器,具体远程登录可以参考如下:Windows