我们将本地开发好的项目部署到远程服务器上,使任何机器都可以通过我们远程服务器的公网ip或者域名加上端口号访问到我们的项目。这里详细的列出每个步骤,并且也列举了在部署过程中常见的问题:
通常来说,Springboot 部署会采用两种方式:全部打包成一个jar,或者打包成一个war。现在讲一下打包成 jar 部署。
一.环境搭建
我们以当下最流行的springboot项目为例,最终打成的是一个jar包, 先clean后package,jar包要在远程服务器上跑起来,环境搭建是第一步,也就是安装jdk环境,至于tomcat的话,springboot自带tomcat,所以不安装也可以;
二.数据库的部署
在本地开发的时候,我们代码里面的数据库连接主机名写的是localhost,之所以这样写了能访问到,那是因为我们的项目和数据库都在我们的本地机器上,所以可以访问到;而如果项目部署到远程服务器上,要访问到数据库,应该先部署数据库,至于数据库连接还能不能写localhost,要分两种情况,如果我们的数据库和项目都部署到了同一台远程服务器上,那可以;如果部署在不同机器上,那显然不行,这种情况的话数据库连接的主机名就需要修改成数据库所部署的那台机器的公网ip或者域名。
这里用到两种方法实现数据库部署到远程服务器:
方法一:Xshell连接远程服务器进行命令行操作
1.将本地的数据库导出成.sql文件
2.在远程服务器中创建一个文件夹,专门存放.sql文件的
3.执行rz命令(前提是安装了lrzsz),将本地的.sql文件上传到远程服务器上该文件夹;也可以使用xftp实现文件传输
4.登录mysql:mysql -u root -p(回车后输入密码)
5.执行.sql文件之前需要先创建对应的数据库
CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
6.选中刚刚创建的数据库之后再执行.sql文件:use 数据库名
7.执行.sql文件:source ***.sql
(注意如果我们是在.sql文件所在的文件夹中执行该命令就不用加路径,否则需要加上.sql文件所在路径)
方法二:本地Navicat连接远程服务器的数据库进行可视化操作
同样是先将本地的数据库导出成.sql文件,下面是部分截图:
基本都是表结构和表数据,可以看到导出来的.sql文件并没有为我们创建数据库,所以在导入.sql文件之前需要先手动创建数据库,并且在我们导出来的.sql文件中添加一行加上我们的数据库。
三.把本地打好的jar包上传到远程服务器
1.当我们已经将数据库部署到远程服务器上,如果数据库和项目部署不在同一台远程服务器上,那么在将项目打成jar包之前需要先修改数据库连接的配置信息,将主机名修改成数据库所部署的那台机器的公网ip或者域名,如果数据库和项目部署在同一台远程服务器上,那么主机名可以继续使用localhost;
2.Xshell连接阿里云远程服务器,并使用xftp将本地的jar包传输到远程服务器上,如果安装了lrzsz就可以直接使用rz命令上传;
3.放行端口号,部署项目成功之后,要能够访问到项目,还应该在阿里云控制台开放对应的端口。
4.启动项目,使用nohup java -jar jar包名 & 命令运行jar包。【注:nohup加上&表示项目可以在后台永久的执行,即使关闭Xshell终端也不会停止运行;如果后面想要停止该项目的运行,可以直接结束该项目端口占用的进程。】
# 通过进程名结束占用端口的进程 | killall 进程名 |
# 通过进程ID结束占用端口的进程 | kill 进程ID |
# 通过进程ID强制结束占用端口的进程 | kill -9 进程ID |
以上命令执行之后会提示:nohup: ignoring input and appending output to ‘nohup.out’,这是正常提示,并不是错误,直接打回车就可以。该提示产生的原因是nohup默认会把标准输出重定向到默认文件nohup.out中,也可以自定义该输出文件,例如:nohup java -jar jar包名 >temp.txt & 但是标准错误输出没有重定向到某个文件,所以会有该提示。
如果想要不输出该提示,省去打回车键的操作,那么可以使用以下命令:nohup java -jar jar包名 2>&1 & 解释:2>&1 是将错误提示信息的输出重定向到标准输出,而这里的标准输出已经重定向到默认文件nohup.out中,也就是说标准的错误提示也直接输出到nohup.out中,所以就没有提示了,也就不用再打回车了。