1. 场景介绍
在Java开发过程中,当我们的SpringBoot项目已经在本地完成开发,想要通过一个网址来访问到我们的项目时,就可以选择将项目部署到阿里云ECS云服务器或轻量应用服务器上,并绑定好域名,这样就能通过一个网址随时随地访问自己开发的项目了。
2. 目标读者
目标读者群体:需要将SpringBoot项目部署上云并通过网址随时随地访问的开发者。
技术背景:对阿里云云服务器产品的基本使用有一定了解的Java开发人员。
3. 前提条件
1.为使项目部署过程可视化,降低部署难度,本文通过宝塔面板完成SpringBoot项目部署上云。您需要在云服务器上安装最新版本的宝塔面板,并搭建好Apache/Nginx以及数据库环境。
2.您需要有一个自己的域名,并完成实名认证,若您的云服务器地域在中国内地,还需要对域名完成备案。
3.您需要知道如何配置ECS云服务的安全组或轻量应用服务器的防火墙,完成端口放行操作,否则可能因端口未放行的原因导致项目部署后无法访问。
以下两个官方文档可以帮助您学习端口放行的操作,请根据您产品的类型阅读:
添加安全组规则(云服务器ECS)
管理防火墙(轻量应用服务器)
4. 环境准备
4.1 本地开发环境要求
IDE:IntelliJ IDEA
依赖管理工具:Maven
4.2 云服务器需要安装的软件
宝塔面板最新版本
Apache/Nginx
JDK
数据库
3.可配置DNS解析的域名一个,并想好这个项目的网址。
5. 操作步骤
5.1 步骤一:对前端代码进行打包
说明
Tips:只有前后端分离的项目,才需要对前端代码单独打包,非前后端分离项目可以跳过本步骤。
1.修改前端代码中定义的后端访问地址为本项目的网址
如下代码是我前端项目中指定的后端请求地址,即Tomcat的访问路径,一共有3个。其中生产环境的地址就是项目部署到服务器后的后端请求地址,在没有特殊需求的时候这个地址就是项目的网址。
let api = {
local_api: "http://127.0.0.1:8103",//本地开发环境
dev_api: "http://172.16.26.234:8103",//局域网开发环境
prod_api: "http://stu.example.com"//生产环境
}
我们需要将后端地址修改为生产环境的地址,这样项目部署到服务器后才能正常向后端发送请求。
Vue.prototype.$server = api.prod_api; //全局配置后台地址
2.进行前端项目打包
以Vue项目为例,在前端项目路径下使用终端执行以下命令,可以对前端项目进行构建(Build),俗称打包,打包后的文件会生成在dist文件夹下。
npm run build
3.将打包好的前端文件放入后端
将dist文件夹下的文件复制到SpringBoot项目的src/main/resources/static下,如图所示。
5.2 步骤二:对SpringBoot代码进行打包
说明
SpringBoot代码即后端代码,我们需要将SpringBoot代码打成jar包。
1.修改pom.xml文件
在SpringBoot项目pom.xml文件中的标签中的任意一行添加如下代码,设置本项目进行打包操作时要打成jar包。
jar
2.开始打包
在IntelliJ IDEA的Maven面板中,运行Lifecycle中的package,开始将项目打包为jar包。
如果不想在打包过程中进行单元测试,可以点击“跳过测试”按钮,然后再运行package命令,当测试代码较多时,跳过单元测试可以大幅提高打包速度。
运行package命令后,可以在控制台看到一些输出的信息,当看到Build Success时则打包完成了。
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ stuinfo-query ---
[INFO] Tests are skipped.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ stuinfo-query ---
[INFO] Building jar: D:\Development\Developer\Java\Java-Projects\IndependentProject\StudentInfoQuery\target\stuinfo-query-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.4.1:repackage (repackage) @ stuinfo-query ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 27.158 s
[INFO] Finished at: 2022-05-02T09:36:43+08:00
[INFO] ------------------------------------------------------------------------
3.查看打包好的jar包
打包好的jar包存放在项目根目录的target目录下,最终我们需要将这个jar包部署到云服务器上运行。
5.3 步骤三:添加域名解析
现在,我们需要把我们准备好的域名完成DNS解析,将项目的网址解析到自己的云服务器上。下面的步骤以本项目为例,演示如何进行域名解析。
1.查看云服务器的公网IP
云服务器的公网IP地址可以在控制台查看,以下图这台轻量应用服务器为例,8.210.xxx.xxx就是这台服务器的公网IP地址。
2.在DNS解析控制台添加解析记录
前往管理您域名的DNS解析控制台,添加一条A记录,将二级域名的记录值设置为您云服务器的公网IP。
5.4 步骤四:在宝塔面板完成项目部署
1.创建项目运行目录
登录宝塔面板,在网站存放路径新建一个目录,作为本项目的运行目录,然后将项目的jar包上传到该目录。下图示例中服务器的网站存放路径是/www/wwwroot,项目运行根目录是/www/wwwroot/stu.example.com。
2.添加网站
在“网站”-“Java项目”中添加Java项目。
以上设置中,必须配置的参数有:
项目jar路径:选择刚刚上传的jar包的路径。
项目端口:项目在服务器上的运行端口,此端口需要在服务器防火墙中放行,确保可以外网访问。
项目JDK:选择已经安装的JDK即可,首次进入Java项目面板会提示安装。
项目执行命令:如果没有特殊需求,不要做任何改动,这是Spring Boot的启动参数。
绑定域名:输入本项目的网址,且确保该网址已经解析到云服务器的公网IP上,否则会无法使用域名进行访问。
设置完成,点击提交后,可以看到刚刚添加的项目。
3.检查运行状态
打开该项目的设置,在项目日志一栏,可以看到本项目的一些日志信息,这些日志与本地开发时控制台上的输出信息是一样的,我们可以通过这个日志检查的项目状态。如果没有看到报错信息,则项目是正常运行的。
至此,项目已经在宝塔面板完成部署,并成功运行!
6. 方案验证
现在,您可以使用任何终端设备,直接在浏览器输入您的项目网址,访问到您刚刚部署的SpringBoot项目。
7. 常见问题
1.项目在本地运行没有问题,部署到云服务器后无法与后端通信。
请检查前端代码中是否已经将后端访问地址修改为了项目网址,而不是localhost。
2.项目部署到云服务器后无法连接数据库。
请检查application.yaml中的数据源配置,如果数据库地址设置的是localhost,则云服务器上也必须安装与本地开发环境一致的数据库,否则会找不到数据源。
作者:AnonyEast