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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: java后台代码部署到阿里云服务器

最近在学习springboot,感觉springboot开发后台,提供api接口太方便了。简直是傻瓜式开发,一直都是本地在跑springboot项目。梦想着有一天,项目能在阿里云上跑。只有在阿里云上跑才是真正的java服务器项目。这里就带大家一起把springboot项目部署到阿里云,并且支持https

准备工作

  • 阿里云ecs一个
  • 域名一个(我的是https://30paotui.com
  • ca证书一份(用来支持https)
  • 本地打包好的springboot项目。我这里用jar不用war
  • ftp客户端一个,用来把jar传到阿里云服务器上,我用的是filezilla客户端,可以百度下载。

一,购买阿里云ecs配置安全组规则

  • 如果不配置安全组规则,我们将没法访问我们阿里云服务器 ,下图中的80/80和443/443必须配置,因为只有这里配置了才能支持http和https访问我们的网站
    在这里插入图片描述
  • 配置如下,授权对象哪里最好填0.0.0.0/0
    在这里插入图片描述

二,买域名

至于域名怎么买,我就不啰嗦了,不会的自行百度
30paotui.com我买的域名
在这里插入图片描述

三,通过filezilla连接阿里云服务器,运行项目

在这里插入图片描述
我在我的服务器home目录下新建一个jar文件,把打包好的springboot的jar包放到这里,我的是qcl80.jar
在这里插入图片描述
然后就可以通过 java -jar qcl80.jar 运行springboot项目
在这里插入图片描述
注意:这样运行springboot项目,如果你关闭当前shell窗口,就会导致服务器的springboot关闭。因为我们现在用的是springboot自带的tomcat,不能在后台运行。

springboot生成的jar在阿里云的linux服务器后台运行,不会在shell客户端关闭时关闭

在这里插入图片描述
通过创建stop.sh , start.sh ,run.sh这三个脚本文件来实现后台长久运行springboot
这里我把运行的qcl80.jar ,start .sh,stop.sh ,run.sh都放在home下的jar目录下
1,创建stop.sh
vim stop.sh 创建文件然后把下面内容复制进去,一定要把qcl80.jar替换成你的jar

#!/bin/bash
PID=$(ps -ef | grep qcl80.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo Application is already stopped
else
    echo kill $PID
    kill $PID
fi

2,创建start.sh,这里我们用80端口,这样可以直接通过ip访问,不用再输端口了
vim start.sh 输入这个命令后然后把下面的内容复制进去

#!/bin/bash
nohup java -jar qcl80.jar --server.port=80 &

3,创建run.sh

整合了关闭和启动的脚本:run.sh,由于会先执行关闭应用,然后再启动应用,这样不会引起端口冲突等问题,适合在持续集成系统中进行反复调用。
把下面内容复制进去,一定要注意复制时不能少东西

#!/bin/bash
echo stop application
source stop.sh
echo start application
source start.sh

4,start .sh,stop.sh ,run.sh都创建后
./run.sh 运行run.sh脚本
如果遇到没有权限运行的问题,就在run.sh所在目录下执行
chmod u+x *.sh 这样就ok了。
执行完以后,我们可以去nohup.out文件中查看启动的log
cat nohup.out 这个命令可以查看jar启动的log

在这里插入图片描述

到此我们的springboot项目就启动了,可以通过你阿里云的公网ip访问你的网站了
在这里插入图片描述
在这里插入图片描述
由于我配置了https,所以这里用IP访问会显示不安全,接下来给大家讲解怎么配置https访问。

四,配置https

1,申请阿里云免费的ca证书,ca证书是实现https必不可少的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通常审核10分钟左右就行,如果资料不全或者不真实可能就久些。

  • 购买完ca证书,并且审核通过后,就去下载相应的ca证书,由于我们springboot内置的是tomcat,所以我们这里下载tomcat对于的ca证书
    在这里插入图片描述

下载后解压
在这里插入图片描述
然后在我们的springboot配置文件中配置
在这里插入图片描述

注意:214590826650132.pfx还需要在我们能阿里云的home/jar目录下放一份,即和我们的打包jar放在同一个目录下
在这里插入图片描述

HTTP自动转向HTTPS

实现http转https就是我们访问
30paotui.com
www.30paotui.com
http://30paotui.com
http://www.30paotui.com
都会指向https://30paotui.com

  • 实现上面的功能需要我们在springboot的application中配置如下代码
package com.qcl;

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class SellApplication implements EmbeddedServletContainerCustomizer {

    public static void main(String[] args) {
        SpringApplication.run(SellApplication.class, args);
    }


    //拦截所有请求
    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }

    //配置http转https
    @Bean
    public Connector httpConnector() {
        Connector connector = new Connector(TomcatEmbeddedServletContainerFactory.DEFAULT_PROTOCOL);
        connector.setScheme("http");
        //Connector监听的http的端口号
        connector.setPort(80);
        connector.setSecure(false);
        //监听到http的端口号后转向到的https的端口号
        connector.setRedirectPort(443);
        return connector;
    }

    //这里设置默认端口为443,即https的,如果这里不设置,会https和http争夺80端口
    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        container.setPort(443);
    }
}

至此,我们的springboot就可以在阿里云上运行了,同时支持http和https的访问
在这里插入图片描述
视频讲解:https://edu.csdn.net/course/detail/23443

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
23天前
|
Java API Spring
SpringBoot项目调用HTTP接口5种方式你了解多少?
SpringBoot项目调用HTTP接口5种方式你了解多少?
75 2
|
23天前
|
Java 调度 Spring
SpringBoot实现多线程定时任务动态定时任务配置文件配置定时任务
SpringBoot实现多线程定时任务动态定时任务配置文件配置定时任务
43 0
|
1月前
|
SQL Java 数据库连接
springboot中配置mybatis别名该怎么写?
springboot中配置mybatis别名该怎么写?
31 0
|
1月前
File和FTP和HTTP软件配置
File和FTP和HTTP软件配置
|
12天前
|
Java Shell 测试技术
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
24 0
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
|
16天前
|
Java 容器
SpringBoot使用配置注解开启自动配置功能&整合spring-boot-configuration-processor
SpringBoot使用配置注解开启自动配置功能&整合spring-boot-configuration-processor
14 0
|
23天前
|
Java 应用服务中间件
Springboot启动的时候初始化的线程池默认配置tomcat
Springboot启动的时候初始化的线程池默认配置tomcat
13 1
|
23天前
|
Java
SpringBoot配置图片访问404SpringBoot配置图片访问路径springboot如何访问图片
SpringBoot配置图片访问404SpringBoot配置图片访问路径springboot如何访问图片
6 0
|
27天前
|
前端开发 应用服务中间件 网络安全
http转为https,ssl证书安装及nginx配置
http转为https,ssl证书安装及nginx配置
43 1