一、购买阿里云服务器,并部署Springboot项目,同时支持http和https访问

一、购买阿里云服务器

  购买阿里云服务器之后,需要做几件事:

  1. 申请一个免费的SSL证书,供https访问,并下载SSL证书
      在管理控制台找到SSL证书,下载(PS:Springboot使用内置Tomcat,下载对应的证书即可,留配置Springboot项目使用)在这里插入图片描述
  2. 购买一个域名,配置SSL证书,并进行和云服务器一起做DNS解析
  3. 修改访问密码
  4. 在“管理控制台”配置安全组策略
    在这里插入图片描述
      因为是阿里云服务器,不同于我们本地用虚拟机装Linux系统,在云服务器上要想访问某个端口,那么我们就必须在“防火墙”(安全组策略)中开启这些端口,同时我们还需要登录阿里云服务器开启这些端口。(PS:因为卡在这里,我一直访问不到服务器上部署的网站!!)

备注:配置“防火墙”(安全组策略)很重要,这个决定外网可以通过哪些端口访问服务器上的网站,必须保证上面的都被开启!!!!
443端口:HTTPS访问使用
80端口:HTTP访问使用
22端口:像PUTTY,Xshell等远程连接Linux工具访问使用
6379端口:REDIS
3306端口:MYSQL数据库,需要使用Navicat可视化工具远程连接时使用
8080端口:测试使用

二、部署Spring项目,并同时支持http和https访问

(一)添加SSL证书

  在项目的根目录添加证书:
在这里插入图片描述

(二)配置SSL证书和HTTPS访问端口
#配置HTTPS访问端口
server.port=443
#配置SSL证书文件名称、位置
server.ssl.key-store=1948147_www.freedu.site.pfx
#配置SSL证书秘钥
server.ssl.key-store-password=*****
(三)配置HTTP访问重定向为HTTPS访问,实现同时支持HTTP和HTTPS访问
package org.pc;

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.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class WechatApplication {

	public static void main(String[] args) {
		SpringApplication.run(WechatApplication.class, args);
	}
	@Bean
	public Connector connector() {
		Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
		/*
		 * 当我们访问http://localhost:8080的时候系统会自动重定向到https://localhost:8033这个地址上
		 * HTTP端口为:80
		 * HTTPS端口为:443
		 * 假如我们配置了域名,那么http://www.test.com和https://www.test.com都可实现访问
		 */
		connector.setPort(80);
		connector.setRedirectPort(443);
		connector.setScheme("http");
		connector.setSecure(false);
		return connector;
	}
	@Bean
	public TomcatServletWebServerFactory tomcatServletWebServerFactory() {
		TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
			@Override
			protected void postProcessContext(Context context) {
				SecurityConstraint securityConstraint = new SecurityConstraint();
				securityConstraint.setUserConstraint("CONFIDENTIAL");
				SecurityCollection collection = new SecurityCollection();
				collection.addPattern("/*");
				securityConstraint.addCollection(collection);
				context.addConstraint(securityConstraint);
			}
		};
		tomcat.addAdditionalTomcatConnectors(connector());
		return tomcat;
	}
}


(四)把Springboot项目打包,并上传到云服务器,同时将SSL证书也放置在同JAR包相同位置的文件夹

在这里插入图片描述

(五)启动项目

1.启动及其问题

java -jar **.jar

  注意:这样运行springboot项目,如果你关闭当前shell窗口,就会导致服务器的springboot关闭。因为我们现在用的是springboot自带的tomcat,不能在后台运行。
2.解决办法
在这里插入图片描述
通过创建stop.sh , start.sh ,run.sh这三个脚本文件来实现后台长久运行springboot
这里我把运行的qcl80.jar ,start .sh,stop.sh ,run.sh都放在home下的jar目录下
(1)创建stop.sh
vim stop.sh 创建文件然后把下面内容复制进去,一定要把***.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部署到阿里云,配置https,springboot项目同时支持http和https请求,阿里云配置https

猜你喜欢

转载自blog.csdn.net/panchang199266/article/details/88676915