编译部署SpringCloudAlibaba项目。当我们要把“代驾系统”部署到云主机之前,首先要把微服务项目打包成JAR文件。
1. 在安全组防火墙中,开放这些中间件的端口。
对于代驾项目的各个子系统的端口号,只开放网关端口即可,不需要开放其他子系统的端口,也不应该让外界能访问到其他子系统。
2. 安装JDK环境。
下载JDK15.0.2的压缩文件,然后把这个压缩文件上传到云主机的 /root 目录中,执行解压缩命令:
tar -xvf jdk-15.0.2_linux-x64_bin.tar.gz
运行VIM命令,打开配置文件:
vi /etc/profile
在文件的结尾添加如下的内容:
export JAVA_HOME=/root/jdk-15.0.2/
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
运行source命令,更新配置信息:
source /etc/profile
3. 编译微服务项目。
在 IDEA 中打开项目界面右侧的 Maven 面板,找到 hxds 根项目,先双击执行 clean 命令,然后再双击 package 命令,这样整个微服务系统中各个子系统都会被打包成 jar 文件。
打包结束之后,每个子系统中的target目录中会出现 jar 文件。如果你嫌弃bff- customer-0.0.1-SNAPSHOT.jar名字太长,可以把 jar 文件拷贝出来,然后改成 bff- customer.jar 这样的名字。
发布各个 Java 项目的时候,可以让 jar 包引用外部的 yml 文件。外部的 yml 文件改起来会很方便,不再需要改 jar 包里面的 yml 文件。
4. 运行各个子系统
common子系统:
因为微信支付需要使用商户的数字证书(apiclient_cert.p12),所以我们要把数字证书文件放到 Linux 系统的适合的位置。比如说 在 root 目录中创建 hxds 目录,用来放置各种部署的文件。
把 common 子系统的 application-common.yml 文件复制出来,然后修改其中的内容,特别是数字证书的路径要写成云主机上面的路径。wx: cert-path: ......
因为 common 子系统是个公共模块,打包的时候其他的子系统生成的 jar 文件会包含 common 子系统,所以我们不需要管 common 子系统打出的 jar 包。只需要让这些子系统引用 common 子系统外部的 application-common.yml 文件即可。我们把 application-common.yml 文件放到云主机的 /root/hxds 路径之下。
hxds-tm 子系统:
在云主机 /root/hxds 目录中创建 hxds-tm 文件夹,然后放入 jar 文件。把该子系统中的 application.properties 文件也放入到当前文件夹。
修改 application.properties 文件,把其中的连接信息都改成 localhost。
运行下面的命令,启动 TM 节点:
cd /root/hxds/hxds-tm
nohup java -jar -Dfile.encoding=utf-8 hxds-tm.jar --spring.config.location=application.properties >> out.log 2>&1 &
# "2>&1": 将标准错误2重定向到标准输出1中。“&”:让 bash 在后台运行。
nohup命令会把 jar 文件挂载后台运行,out.log文件中记录了 jar 文件运行的日志。如果想要排查错误,可以打开 out.log 文件,里面会有异常信息。如果你想要停止 jar 文件运行,可以执行下面的命令:
# 查看所有 Java 进程
ps -aux | grep java
# 根据进程编号关闭进程
kill -9 进程编码
bff-customer 子系统:
在云主机 /root/hxds 目录中创建 bff-customer 文件夹,然后放入 jar 文件。把该子系统的 application.yml 文件也放入到当前文件夹。
修改 application.yml 文件的内容,把 nacos、redis、mysql 等中间件的连接信息都可以改成 localhost,因为我们连接的是云主机本地的各种中间件。
执行下面的命令:
cd /root/hxds/bff-customer/
nohup java -jar -Dfile.encoding=utf-8 bff-customer.jar --spring.config.location=/root/hxds/application-common.yml,application.yml >> out.log 2>&1 &
bff-driver 及其他子系统:操作步骤与上面类似。