SpringBoot项目部署到阿里云服务器
一、说明
上一周已经成功编写了几个基本且简单的后台接口,但是只能在本机上才能成功的访问到后台接口,组内其他同学是没有办法访问到后台接口的,为了让前端的同学可以访问到后台接口,就要把Spring Boot项目部署到一个服务器上,这一周的工作是部署服务器,然后把Spring Boot部署到服务器上运行,让前端同学也可以访问到后台接口。
二、部署ECS服务器
1、购买阿里云服务器
阿里有一个开发者成长计划,学生经过认证和测试后可以免费试用两个月,测试是关于云服务器的一些基本的连接测试,很简单,大约十五分钟就可以完成,这里就不再一一赘述。然后领取服务器,选择服务器的配置:
地域选择华北2北京,本来想选择华北1青岛,但是华北1青岛的服务器已经没有剩余,只能选择剩余地域中离济南最近的北京,因为距离近可以提升用户访问速度。
操作系统选择CentOS7.5,原因是官方建议ASP、.NET、HTML、数据库ACCESS、SQL Server建议选择Windows;PHP、PERL、CGI、数据库MySQL、SQLite建议选择Linux。我的数据库采用的是MySQL,于是选择了Linux操作系统CentOS7.5。
购买完成后,进入阿里云首页,点击 “控制台”>>“云服务器ECS”>>“实例”,进入到一下页面:
在实例列表中就可以看到我们购买的云服务器,点进去,我们需要对服务器的安全组进行设置
点击配置安全组规则,进入到以下页面:
点击该安全组,进入以下页面配置规则:
之前我已经配置完毕,只是手动添加了一个新的规则,因为我的Sprint Boot使用的端口号是8800,为了前端同学可以访问到接口,因此要添加新的端口号8800,如上图优先级为1的规则。
返回实例列表页面,重置实例密码:
因为我不知道初始化的密码是多少,因此我需要重置。
2、Xshell的安装使用
简单测试一下,会发现网页登陆云服务器的方式有一个弊端,那就是只要一小段时间不操作,服务器就会进入休眠,又得输入连接密码才能激活,很烦。所以采用别的方式登录这个云服务器。
Xshell是一个终端模拟软件,换言之,只要在本地Windows系统下安装这个软件,打开输入账号密码,就能登录远程的云服务器。
打开Xshell们可以看到如下界面:
新建一个会话,将公网IP输入到主机栏,端口号设置为22,但由于我之前已经建立了连接(如上图),此处就不再粘贴新建会话的图。
点击 ”确定”>>“连接”,把服务器账号填进“登录的用户名”,把服务器密码填进“密码”,也就是我刚才重置后的密码(由于我第一次连接时勾选了记住密码,因此下面的图中没有输入密码的表单),如下图:
登录成功,进入服务器。以后就可以通过这个界面对云服务器进行远程操控,在上面进行jdk,springboot部署等操作了。
3、在云服务器上安装jdk
先用Xshell连接到云服务器(或者直接在阿里云官网中远程连接也行),然后在本地Windows系统中下载 Linux系统下的jdk。
应当根据实际情况下载需要的jdk版本,我的Spring Boot项目用的是jdk11,因此我要下载jdk11。下载后的文件是jdk-11.0.10_linux-x64_bin.tar。
然后我们要把这个文件传到云服务器上去。听起来很高端,其实很简单的。在Xshell上执行rz命令就可以实现。首先我们要在云服务器上安装这个命令。
在Xshell中执行:
yum install lrzsz
要把上传的文件放到哪个目录,就要先cd进入那个目录。这里我选择的目录是/usr/java,但是服务器起初没有这个目录,要创建,因此执行以下命令:
cd usr
mkdir java
然后进入到该目录下:
cd /usr/java
然后输入 rz 把安装包上传上去:
rz
等待上传完毕后使用ls命令查看目录。可以看到,刚才上传的安装包已经存在于目录中了(ls命令:查看当前目录下的文件):
接下来解压安装包就算安装成功了!使用tar命令解压压缩包。(tar命令:解压):
tar -zxvf jdk-11.0.10_linux-x64_bin.tar.gz
然后就跟在windows系统下安装完jdk一样,还要设置系统环境变量。linux系统中的设置方法为:找到文件 /etc/profile ,向其中添加如下代码:
export JAVA_HOME=/usr/java/jdk-11.0.10
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
先cd进目录 /etc ,再使用 vim命令编辑文件profile(vim命令:编写修改文件内容):
cd etc
vim profile
进来以后是下面这个界面,按 i 键入编辑:
在文件的最后把上面的代码打进去。然后按ESC键退出编辑,输入 :wq + 回车键保存退出文件。
立即执行profile文件,使之生效,使用source命令(source命令:依次执行文件所有语句):
source /etc/profile
到这一步,jdk的安装就全部完成了。最后,再使用java命令验证一下,如果可以看到版本信息就可以了:
java -version
至此,服务器的部署完毕,接下来本来要在服务器上安装MySQL,但是又想试试云数据库,于是决定购买一个云数据库使用,同时也能学到如何部署和使用云数据库!
二、部署云数据库MySQL
1、购买云数据库MySQL
进入阿里云官网购买云数据库(各项配置不再重复):
进入控制台>>RDS数据库>>实例,可以看到以下界面:
点击实例进入详情页:
2、申请外网并添加白名单
返回实例详情页面,点击左侧“数据库连接”>>申请外网地址,这一步的目的是为了让本地机的Spring Boot项目可以成功访问到云数据库,否则项目运行时会报错:连接失败!申请完毕后,有如下显示:
可以看到已经生成了外网地址。
点击设置白名单,进入页面新,点击添加白名单分组,添加以下IP地址:
白名单IP段设置为0.0.0.0/0意味着对公网开放,请谨慎使用。若为了测试连接设置,测试后请立即修改。
白名单IP地址设置为127.0.0.1(初始化时的名单),表示禁止所有地址访问。
其他两个IP地址一个是本机的IP地址(233.99.16.122),一个是云服务器的公网(8.140.117.15)。
至此,本机可以访问云数据库了!
2、创建数据库
返回实例详情页面,点击左侧“数据库管理”>>创建数据库,有如下显示:
输入数据库名称“dituquan”,创建一个新账号,用户名是rootzwr,然后输入该用户名,再点击确定,即可成功创建数据库!
三、部署SpringBoot项目到云服务器
1、Spring Boot项目打包
linux云服务器上的环境我们都已经配置好了,但好像差了一个tomcat?因为springboot内置了tomcat,所以后面把它打包成jar包就可以免去tomcat的配置了(如果是打包成war包,那还是要配置tomcat的)。
回到本地windows Springboot项目,下面对项目做一些设置
打开pom.xml,添加如下语句,将项目的打包形式设置好
<!-- 打包成jar包 -->
<packaging>jar</packaging>
打开application.yml,重新设置项目运行端口为8800,当然不设置也是可以的,只不过要把端口添加到安全组中。
项目打包成jar包,右键项目 >> Run As >> Maven install,项目打包成功,可以在左边target文件夹中看到项目的jar包,把它剪切到桌面,可以看到如下文件:
把这个jar复制到桌面,打开Xshell,使用rz指令把它上传到linux云服务器的根目录:
耐心等待上传成功,使用ls指令可以看到我们上传成功的jar包:
2、运行项目的jar包
要想在linux系统上运行这个项目,就要保证他运行所用的端口没有被占用,不然运行就会报错,查看端口使用情况:
netstat -anp | grep 8800 //netstat -anp | grep <端口号>
没有任何反应,说明没有被占用。
使用java指令运行项目jar包,这样项目就算部署成功了
java -jar demo-0.0.1-SNAPSHOT.jar //***为你的jar包名
等待项目启动完成后,在浏览器输入http://8.140.117.15:8800/hello:
成功访问!至此,前端同学可以使用自己的电脑访问后端接口了!
打开Navacat15,建立与云数据库的连接:
这里的主机就是云数据库的外网地址,也就是刚才申请的地址。用户名和密码就是创建数据库时申请的账号。
连接成功后,打开dituquan数据库,可以看到有如下表:
说明Spring Boot项目成功在云数据库上创建了表!也就是说,Spring Boot项目成功连接了云数据库!
这种启动方式是一次启动,当关掉Xshell的时候,网站又访问不上了,又得重新打开Xshell,执行 java -jar demo-0.0.1-SNAPSHOT.jar。所以要使用下面的方法让这个项目在服务器上自动不间断地跑。
关掉重启一下Xshell(这样的话原本的项目就停掉了),创建并编写文件 start.sh,向其中添加字段 : java demo-0.0.1-SNAPSHOT.jar 。按ESC + :wq + 回车键保存退出。
给这个start.sh 管理员权限,然后用nohup指令不间断地运行(nohup指令:忽略所有挂断(SIGHUP)信号,不挂断地运行命令):
chmod 777 start.sh //赋予管理员权限
nohup ./start.sh & //不间断运行文件内的指令
把Xshell关掉,在浏览器上输入http://8.140.117.15:8800/hello发现项目还是可以进入,说明已经设置成功了。至此springboot项目部署到阿里云服务器上完结!
四、总结
这一周成功部署了阿里云服务器和云数据库,并且把Spring Boot项目连接到了云数据库,并在云服务器上成功的跑了起来!准备工作完成,在接下来的工作中,主要工作就是开发接口了,因此要专注起来。任重道远,继续努力!