1. 准备好前提环境
1.1 准备好轻量级云服务器
1. 服务器
2. 远程连接
使用 xshell
1.2 安装一些依赖的程序
JDK,Ttomcat 以及 MySQL
1.2.1 安装 JDK
方法一:(只能到 jdk8)
推荐使用 yum 来安装, 这里的 yum 相当于 linux 的应用商店>> 使用如下命令可以把 jdk 相关的软件包都罗列出来:yum list | grep jdk
在罗列出的 jdk 软件包中, 我们选择下面这个软件包进行安装 :
此处的 devel 表示用来开发的软件工具包, x86_64 表示针对 64 位系统. 安装命令如下 :yum install java-1.8.0-openjdk-devel.x86_64
- 由于这个安装过程需要联网, 所以需要花一定的时间, 安装到某个步骤时, 会弹出 [y/d/N] 这样的选项, 没有安装过的就可以直接选择 y 继续安即可, 最后看到 Complete! 就说明安装成功.
- 此处通过 xshell 操作的都是云服务器, 和本地环境无关, 也就是说如果你换了一台电脑再去登录同一台云服务器, 所看到的效果是完全一样的. jdk 安装成功后, 输入如下命令验证是否安装成功 :
javac
如果直接输入 javac 不报错, 而是提示出一些帮助选项, 就说明你安装成功了!
方法二:添加 AdoptOpenJDK 仓库 (只到 JDK15)
1. 导入 AdoptOpenJDK 的 GPG 密钥:
sudo rpm --import https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public
2. 添加 AdoptOpenJDK 仓库:
sudo tee /etc/yum.repos.d/adoptopenjdk.repo <<EOM
[AdoptOpenJDK]
name=AdoptOpenJDK
baseurl=https://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/centos/\$releasever/\$basearch
enabled=1
gpgcheck=1
gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public
EOM
3. 更新 yum 的包索引:
sudo yum update
4. 下载 jdk
sudo yum install adoptopenjdk-17-hotspot
方法三:使用 Adoptium 安装 Java 17
1. 导入 Adoptium 的 GPG 密钥:
sudo rpm --import https://packages.adoptium.net/artifactory/api/gpg/key/public
2. 添加 Adoptium 仓库:
sudo tee /etc/yum.repos.d/adoptium.repo <<EOM
[Adoptium]
name=Adoptium
baseurl=https://packages.adoptium.net/artifactory/rpm/centos/\$releasever/\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.adoptium.net/artifactory/api/gpg/key/public
EOM
3. 安装 JDK:
sudo yum update
sudo yum install temurin-17-jdk
1.2.2 安装 tomcat
1. 使用如下命令查看 tomcat 软件安装包
yum list | grep tomcat
发现此处最新的版本也就只有 7.0, 而我们需要的 tomcat 是 8.5. 又因为 tomcat 是运行在 Java 上的, 而 Java 是跨平台的, 那么 tomcat 同样也是. 所以只需要把之前从官网上下载好的 tomcat 的压缩包拷贝 (拖拽) 到 linux 上, 进行解压缩即可. 如果你买的云服务器无法正常上传 (拖拽), 就那么就可以使用如下命令安装一个软件包 >>yum install lrzsz
此处的 rz 负责从 windows 电脑把文件传到 linux 服务器 此处的 sz 负责从 linux 服务器把文件传到 windows.
2. 解压缩
把 tomcat 的压缩包上传到 linux 服务器上后, 使用如下命令进行解压缩 >>unzip apache-tomcat-8.5.72
解压缩完之后, 就到了一个 apache-tomcat-8.5.72 目录 :
使用 cd 命令进入到该目录下, 发现和 Windows 的 apache-tomcat-8.5.72 目录打开的效果是一样的.
如果 unzip 一敲, 出现找不到命令. 就先输入 yum install unzip
即可.
3. 启动 tomcat
先 cd 到 bin 目录下, 然后找到 startup.sh 文件.
首次使用 (后续就不用了), 在启动 tomcat 之前, 需要先给 .sh 文件都加上可执行权限 (也就是使其变绿), 使用如下命令 :chmod +x *.sh
使用如下命令来启动 tomcat :./startup.sh
或者 sh startup.sh
4. 验证 tomcat 是否在正常工作三种方案 :
- 第一种方案使用命令 ps aux | grep tomcat
- 第二种方案使用命令 netstat -anp | grep 8080
显示一个 Java 进程绑定了 8080 端口.
- 第三种方案在浏览器使用外网 IP 访问 8080 欢迎页面 :
这种方式, 如果没有开放端口, 是访问不了的, 这是云服务器商, 为了保证云服务器安全的, 默认禁止了外部的客户端访问服务器上的各种端口, 就相当于一个 "防火墙". 所以此处为了让外界能够访问到服务器的 8080 端口, 就需要把 8080 端口从防火墙里给放开!!
1.2.3 安装 MySQL
说是说安装 MySQL , 实际上是安装 MariaDB.
以下操作都以 root 用户进行操作
1. 安装
删除`sudo yum remove mariadb-server mariadb mariadb-libs mariadb-devel`
安装 mariadb 服务 yum install -y mariadb-server
安装 mariadb 命令行客户端 yum install -y mariadb
安装 mariadb C libraryyum install -y mariadb-libs
安装 mariadb 开发包 yum install -y mariadb-devel
2. 启动
启动服务 systemctl start mariadb
设置服务开启自启动 systemctl enable mariadb
查看服务状态 systemctl status mariadb
可能的输出为,注意到 Active 状态为 active (running)● mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since 五 2018-11-09 12:49:23 CST; 19min ago
Main PID: 1510 (mysqld_safe)
CGroup: /system.slice/mariadb.service
├─1510 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
└─2030 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-...
11 月 09 12:49:15 peixinchen.host systemd[1]: Starting MariaDB database server...
11 月 09 12:49:17 peixinchen.host mariadb-prepare-db-dir[1062]: Database MariaDB is probably initialized in /var/lib/m...ne.
11 月 09 12:49:19 peixinchen.host mysqld_safe[1510]: 181109 12:49:19 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
11 月 09 12:49:19 peixinchen.host mysqld_safe[1510]: 181109 12:49:19 mysqld_safe Starting mysqld daemon with databas...mysql
11 月 09 12:49:23 peixinchen.host systemd[1]: Started MariaDB database server.
Hint: Some lines were ellipsized, use -l to show in full.
3. 测试连接
使用命令行客户端尝试连接 mysql -uroot -p
可能的输出为 Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
查看 mariadb 版本号 MariaDB [(none)]> select version();
+----------------+
| version() |
+----------------+
| 5.5.60-MariaDB |
+----------------+
1 row in set (0.01 sec)
创建数据库时为了支持中文,统一使用 utf8mb4 字符集 MariaDB [(none)]> create database demo_db charset utf8mb4;
安装好了之后, 就可以测试客户端连接了 >> 只需要输入如下命令即可. (默认是没有密码的)mysql -uroot
后续操作就和我们学过的 MySQL 一模一样了.
4. 连接到本地的 navicat
2. 把程序依赖的数据给拷贝到云服务器上
搜索引擎项目所依赖的数据有以下三个文件 >>
直接将这三个文件拖入到 xshell 中即可, 我这里已经准备好了数据文件>>
3. 打包部署
如果你的程序涉及到 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 里面的前台进程, 后台进程没啥关系.
- 前台进程 : 是在终端中运行的命令,那么该终端就为进程的控制终端, 一旦这个终端关闭, 这个进程也随之消失. (直接输入一个命令产生的进程, 都是前台进程.)
- 后台进程 : 也叫守护进程 (Daemon), 是运行在后台的一种特殊进程,不受终端控制,它不需要终端的交互; Linux 的大多数服务器就是使用守护进程实现的. 比如 Web 服务器的 httpd 等. 下面提供一种在 Linux 上运行后台进程的命令 : nohup java -jar api_searcher_index.jar &
此时目录下多了一个 nohup.out 的文件, 使用 cat 文件名打开该文件 :
发现其实这个文件里的东西就是 SpringBoot 程序运行时打印的日志文件. 此时这些文件就不在终端显示了, 但是现在就算你关闭了 xshell 终端, 别人依旧可以访问你的服务器了.
【注意事项】
一. 通常情况下, 如果你的 8080 端口已经被占用了, 那么你再使用 8080 端口来绑定你现在正在部署的程序, 那么就会执行失败.
解决方案 :
- 把其他占用 8080 端口的进程给干掉.
- 重新开放一个端口供当前程序使用. 这个操作需要在打包前就要做好, 在 application.yml 配置文件中更改端口号, 然后按照 1.2.2 步骤中的开放 8080 端口的操作去开放你指定的端口即可. 对于上述第一种方案 :
- 第一步, 使用命令 sudo netstat -tulnp | grep :8080 查询出运行的 SpringBoot 进程.
- 第二步, 使用命令 kill -9 pid(进程 id) 将占用该端口的进程杀死即可.
二. 您遇到的错误信息是关于数据库连接的问题。
错误消息 "Host '121.41.176.129' is not allowed to connect to this MariaDB server" 指出尝试连接 MariaDB 数据库服务器的主机 (IP 地址为 121.41.176.129) 没有被允许连接。
这通常是由于数据库服务器的配置中没有允许来自该 IP 地址的连接。以下是可能的解决步骤:
1. 更新数据库权限:
您需要登录到您的 MariaDB 数据库服务器,并更新数据库的权限设置,以允许来自您的应用程序 IP 地址的连接。这可以通过执行如下 SQL 命令来完成:GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'121.41.176.129' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
替换 your_database 、 your_user 和 your_password 为您的数据库名、用户和密码。如果您的应用程序和数据库服务器在同一台机器上,您可能需要将 '121.41.176.129' 替换为 'localhost'。
2. 检查数据库服务器的配置:
确保数据库服务器配置 (如 my.cnf 或 my.ini 文件) 没有限制来自特定 IP 地址的连接。您可能需要检查诸如 bind-address 或类似设置。
3. 检查网络防火墙设置:
确保没有网络防火墙规则阻止来自您应用程序所在服务器的连接。
4. 检查数据库连接配置:
在您的 Spring Boot 应用程序中,检查数据库连接配置,确保使用正确的主机名、端口、用户名和密码。
5. 重启数据库服务:
在更改数据库权限或配置后,您可能需要重启 MariaDB 服务以使更改生效。
Comments NOTHING