此处针对上一篇博客 - 搜索引擎项目做一个部署环节.
1.准备好前提环境
1.1 准备好轻量级云服务器
如何买一个 Linux 系统的云服务器 ??
阿里云, 腾讯云, 华为云, ucloud...... 哪个便宜就选哪个.
如何去买 ?? 我买的是腾讯云.
1. 浏览器搜索 "腾讯云学生计划" >>

2. 购买一个一年的 2核 2 G 的云服务器即可 >>

点击立即购买, 直接 qq 登录即可. 此处由于我已经买过了, 所以没有新用户权限了,演示不了. 操作其实也很简单, 登陆之后, 给云服务器装好系统就行了, 五分钟内就可以搞定. [注意系统镜像选择 Centos7]

3. 购买完成之后, 进入到控制台, 就可以查看云服务器详细信息了 >>

此处的 IP 地址, 一个是外网IP (公网), 也就是后续登录到云服务器上用的 IP.
4. 初次使用时, 默认密码是 root , 所以需要重置密码 >>

此处重置密码最好设置一个比较复杂的密码. 如果忘记密码了, 就在这里重新设置即可.
5. 进行远程登录 >>
需要使用到终端工具, 此处推荐的是 xshell.
如何下载安装 xshell ?? 浏览器直接搜索 xshell 官网即可 >>

然后点击下载即可 >>

然后选择免费版本下载即可 >>

然后随便起一个用户名, 用自己的邮箱即可 >>

注意这里点击下载之后, 它不会立即下载, 而是系统会发一封邮件到你的邮箱, 而邮箱里就包含了下载地址.点击下载地址下载安装即可, 安装过程很简单, 一路 next 即可.
安装好 xshell 之后, 就可以进行远程登录了
打开 xshell , 来到这个界面(大同小异), 选择新建即可 >>


点击连接后, 会弹出一个框框, 让我们输入用户名, 填写 root 即可, 然后勾选记住用户名 >>

点击确定后, 又会弹出输入密码框 >>

此处输入我们之前重置的密码即可, 输完密码之后, 就会显示这样的信息>>

1.2 安装一些依赖的程序
JDK,Ttomcat 以及MySQL
1.2.1 安装 JDK
推荐使用 yum 来安装, 这里的 yum 相当于linux 的应用商店>>
使用如下命令可以把 jdk 相关的软件包都罗列出来:
yum list | grep jdk
在罗列出的 jdk 软件包中, 我们选择下面这个软件包进行安装 :

此处的 devel 表示用来开发的软件工具包, x86_64 表示针对 64 位系统.
安装命令如下 :
yum install java-1.8.0-openjdk-devel.x86_64
1. 由于这个安装过程需要联网, 所以需要花一定的时间, 安装到某个步骤时, 会弹出 [y/d/N] 这样的选项, 没有安装过的就可以直接选择 y 继续安即可, 最后看到 Complete! 就说明安装成功.
2. 此处通过 xshell 操作的都是云服务器, 和本地环境无关, 也就是说如果你换了一台电脑再去登录同一台云服务器, 所看到的效果是完全一样的.
jdk 安装成功后, 输入如下命令验证是否安装成功 :
javac

如果直接输入 javac 不报错, 而是提示出一些帮助选项, 就说明你安装成功了!
1.2.2 安装 tomcat
-
使用如下命令查看 tomcat 软件安装包
yum list | grep tomcat

发现此处最新的版本也就只有 7.0, 而我们需要的 tomcat 是 8.5.
tomcat8.5下载地址:https://archive.apache.org/dist/tomcat/tomcat-8/
又因为 tomcat 是运行在 Java 上的, 而 Java 是跨平台的, 那么 tomcat 同样也是. 所以只需要把之前从官网上下载好的 tomcat 的压缩包拷贝 (拖拽) 到 linux 上, 进行解压缩即可.
如果你买的云服务器无法正常上传 (拖拽), 就那么就可以使用如下命令安装一个软件包 >>
yum install lrzsz
此处的 rz 负责从 windows 电脑把文件传到 linux 服务器
此处的 sz 负责从 linux 服务器把文件传到 windows.
-
解压缩
把 tomcat 的压缩包上传到 linux 服务器上后, 使用如下命令进行解压缩 >>
unzip apache-tomcat-8.5.72
解压缩完之后, 就到了一个 apache-tomcat-8.5.72 目录 :

使用 cd 命令进入到该目录下, 发现和Windows的 apache-tomcat-8.5.72 目录打开的效果是一样的.

如果 unzip 一敲, 出现找不到命令. 就先输入 yum install unzip 即可.
-
启动 tomcat
先 cd 到 bin 目录下, 然后找到 startup.sh 文件.

首次使用(后续就不用了), 在启动 tomcat 之前, 需要先给 .sh 文件都加上可执行权限 (也就是使其变绿), 使用如下命令 :
chmod +x *.sh
使用如下命令来启动 tomcat :
./startup.sh
或者 sh startup.sh
-
验证 tomcat 是否在正常工作
三种方案 :
1. 使用 ps 查看 tomcat 的进程
2. 使用 netstat 查看对应的 8080 端口
3. 使用浏览器访问 tomcat 的欢迎页面
-
第一种方案使用命令 ps aux | grep tomcat
-
第二种方案使用命令 netstat -anp | grep 8080

显示一个Java 进程绑定了 8080 端口.
-
第三种方案在浏览器使用外网 IP 访问 8080 欢迎页面 :

这种方式, 如果没有开放端口, 是访问不了的, 这是云服务器商, 为了保证云服务器安全的, 默认禁止了外部的客户端访问服务器上的各种端口, 就相当于一个 "防火墙".
所以此处为了让外界能够访问到服务器的 8080 端口, 就需要把8080 端口从防火墙里给放开!!
5. 如何开放 8080 端口 :

进入到控制台详情页面后, 选择防火墙 :

然后点击左侧的添加规则,. 然后启动 8080 端口即可.

1.2.3 安装 MySQL (此项目不涉及)
说是说安装 MySQL , 实际上是安装 MariaDB.
具体安装步骤可以参照这篇文章 : https://zhuanlan.zhihu.com/p/49046496
安装好了之后, 就可以测试客户端连接了 >>
只需要输入如下命令即可. (默认是没有密码的)
mysql -uroot

后续操作就和我们学过的 MySQL 一模一样了.
2. 把程序依赖的数据给拷贝到云服务器上
搜索引擎项目所依赖的数据有以下三个文件 >>

直接将这三个文件拖入到 xshell 中即可, 我这里已经准备好了数据文件>>

3. 打包部署
如果你的程序涉及到 MySQL 的操作, 那么就还需要在云服务器上建库建表, 此处不涉及, 就省略了这一步操作 (操作简单, 你会操作本地 MySQL , 就会操作云服务器的 MySQL)
3.1 打开 IDEA 双击 package

当出现 BUILD SUCCESS 字样, 则说明打包成功!!

此时打开左侧的 target 目录, 找到一个 jar 包, 右击 open in -> explorer :

你可以对该文件进行重命名(随意), 也可以使用默认的, 此处我为了方便在 linux 上操作, 就进行了重命名.
3.2 将生成的 jar 包上传到 Linux 上
直接拖拽即可.

此时我的 Linux 上就已经有 api_searcher_index.jar 这个 jar 包了.
3.3 在 Linux 环境下运行程序
使用如下命令运行程序 :
java -jar api_searcher_index.jar

此时你的程序就可以被大家一起玩转了, 别人只需要使用你的云服务器的外网 IP 就能访问你的静态页面, 进而访问你的程序了.
但是这种运行方式, 一旦你关闭了 xshell 窗口, 也就意味着你刚刚输入的命令随着终端程序的关闭而被杀死, 但是你的电脑肯定会在某个时间关机的, 一旦关机, xshell 终端也就会随之被关闭
那么我们该如何在 linux 环境上运行 SpringBoot 程序呢 ??其实这涉及到 Linux 中的一个概念 : 前台进程 VS 后台进程
此处的前台进程和后台进程和 Java 里面的前台进程,后台进程没啥关系.
1. 前台进程 : 是在终端中运行的命令,那么该终端就为进程的控制终端, 一旦这个终端关闭, 这个进程也随之消失. (直接输入一个命令产生的进程, 都是前台进程.)
2. 后台进程 : 也叫守护进程(Daemon), 是运行在后台的一种特殊进程,不受终端控制,它不需要终端的交互; Linux的大多数服务器就是使用守护进程实现的. 比如Web服务器的httpd等.
下面提供一种在 Linux 上运行后台进程的命令 :
nohup java -jar api_searcher_index.jar &

此时目录下多了一个 nohup.out 的文件, 使用 cat 文件名打开该文件 :

发现其实这个文件里的东西就是 SpringBoot 程序运行时打印的日志文件. 此时这些文件就不在终端显示了, 但是现在就算你关闭了 xshell 终端, 别人依旧可以访问你的服务器了.
【注意事项】
通常情况下, 如果你的 8080 端口已经被占用了, 那么你再使用 8080 端口来绑定你现在正在部署的程序, 那么就会执行失败.
解决方案 :
1. 把其他占用 8080 端口的进程给干掉.
2. 重新开放一个端口供当前程序使用. 这个操作需要在打包前就要做好, 在 application.yml 配置文件中更改端口号, 然后按照 1.2.2 步骤中的开放 8080 端口的操作去开放你指定的端口即可.
对于上述第一种方案 :
1. 第一步, 使用命令 lsof -i : 8080 查询出运行的 SpringBoot 进程.
2. 第二步, 使用命令 kill -9 pid(进程id) 将占用该端口的进程杀死即可.
谢谢观看!