当前位置: 首页 > article >正文

CentOS系统环境搭建(二十四)——借助Git实现一键部署

centos系统环境搭建专栏🔗点击跳转

文章目录

  • 如何一键部署
    • 1.后端
      • 1.1 拉取代码
      • 1.2 打包
        • 1.2.1 如果打包没问题,只看这部分即可
        • 1.2.2 maven有问题看这一部分
          • 1.2.2.1 安装jdk
          • 1.2.2.2 Jdk路径寻找,使用命令
          • 1.2.2.3 由此可知,jdk路径为
          • 1.2.2.4 编辑环境变量文件
          • 1.2.2.5 刷新全局变量
          • 1.2.2.6 验证
    • 2.前端
      • 拉取代码
    • 3.一键部署

如何一键部署

我希望只写一个脚本点击一下就能部署最新代码的前后端服务!让我们想想,部署总是很麻烦,一堆一堆的重复操作,如何将重复的步骤去掉,整合进一个sh脚本里,将前后端部署简化为一步操作呢?

1.后端

1.1 拉取代码

我git部署是基于前两篇文章,CentOS系统环境搭建(二十一)——安装git并且配置ssh拉取github代码和CentOS系统环境搭建(二十二)——Git进阶,基于前文可知,首先,后端代码保存在

cd /srv/tencent/code/tencent

如果我们在此文件夹下执行拉取命令。

git pull

这就会将后端代码更新至最新。

1.2 打包

1.2.1 如果打包没问题,只看这部分即可

有了最新的源码以后,就可以执行打jar包操作了。

这是一个spring boot项目,可以看到我的项目结构如下

[root@VM-4-17-centos tencent]# ll
total 52
-rw-r--r-- 1 root root 35149 Nov 21 15:09 LICENSE
-rw-r--r-- 1 root root  4157 Nov 21 15:09 pom.xml
-rw-r--r-- 1 root root  3828 Nov 21 15:09 README.md
drwxr-xr-x 4 root root  4096 Nov 21 15:09 src

如果我们在此文件夹/srv/tencent/code/tencent下执行打包命令。

mvn clean package

成功后,我们的/srv/tencent/code/tencent/target下就会有一个打好的jar包了。

cd /srv/tencent/code/tencent/target
1.2.2 maven有问题看这一部分

若想执行maven打包,你要确定你的maven能用,电脑一定要配置的有JAVA_HOME,你可以先用这个命令验证一下有没有配置。

echo $JAVA_HOME

如果你没问题这部分你不用看,有问题的话可以看看我这部分,稍微讲一下maven如何正确配置。首先,基于本系列的文章CentOS系统环境搭建(五)——Centos7安装maven,你已经用压缩包的方式安装了maven。然后如何配置JAVA_HOME呢?

1.2.2.1 安装jdk

首先,基于我前文CentOS系统环境搭建(四)——Centos7安装Java可知,我们最早用yum install -y java-1.8.0-openjdk安装的jdk,这样安装其实是只有jre,并没有jdk。因此,我们应该先安装jdk。

yum install -y java-1.8.0-openjdk-devel
1.2.2.2 Jdk路径寻找,使用命令
sudo alternatives --config java

返回

[root@VM-4-17-centos /]# sudo alternatives --config java

There is 1 program that provides 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-2.el7_9.x86_64/jre/bin/java)
1.2.2.3 由此可知,jdk路径为
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-2.el7_9.x86_64
1.2.2.4 编辑环境变量文件
vim /etc/profile

末尾写上

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-2.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
1.2.2.5 刷新全局变量
source /etc/profile
1.2.2.6 验证
echo $JAVA_HOME

然后回到文章1.2.1部分去重新打包。

2.前端

拉取代码

我git部署是基于前两篇文章,CentOS系统环境搭建(二十一)——安装git并且配置ssh拉取github代码和CentOS系统环境搭建(二十二)——Git进阶,由前文可知,前端代码保存于

cd /srv/tencent/code/page/dist

更新代码

git pull origin main

3.一键部署

思考一下,整个步骤就这么几步。

  1. git拉取后端代码。
  2. 打包。
  3. 终止旧服务的jar包。
  4. 复制新jar包替换旧jar包。
  5. 启动新jar包。
  6. git拉取前端代码。
  7. 将新的dist文件夹覆盖旧的dist文件夹。
  8. 重启nginx。

因此,我们的bash脚本如下。关于关闭jar包和启动jar包部分,还有nginx部分,不明白的可以看这两篇,CentOS系统环境搭建(十一)——CentOS7安装使用Nginx并部署前后端分离项目和CentOS系统环境搭建(二十三)——运行Java服务。

#!/bin/bash

# 后端代码更新和打包
cd /srv/tencent/code/tencent
git pull
mvn clean package

# 停止旧的后端服务
cd /srv/tencent/server
./stop_jar.sh

# 替换jar包
cp /srv/tencent/code/tencent/target/tencent-2023.09.13.jar /srv/tencent/server/tencent-2023.09.13.jar

# 启动新的后端服务
cd /srv/tencent/server
./run_jar.sh

# 前端代码更新
cd /srv/tencent/code/page/dist
git pull origin main

# 替换前端文件夹
cp -R /srv/tencent/code/page/dist /srv/tencent/page/dist

# 重新加载 Nginx
cd /usr/local/nginx/sbin
./nginx -s reload

将脚本放在/srv/tencent

cd /srv/tencent

新建部署脚本

vim deploy.sh

赋予执行权限

chmod +x deploy.sh

执行

./deploy.sh

今后,你只需要更新一下你的GitHub仓库,然后运行脚本,就会更新你的服务器服务!


http://www.kler.cn/a/154353.html

相关文章:

  • 三十九、Python(pytest框架-中)
  • 大数据-226 离线数仓 - Flume 优化配置 自定义拦截器 拦截原理 拦截器实现 Java
  • 躺平成长-人工智能进行编程-(12)
  • 计算机网络:运输层 —— TCP的流量控制
  • Flink_DataStreamAPI_执行环境
  • 算法沉淀一:双指针
  • 基于 Python+flask 构建态势感知系统(附完整源码)
  • 基于ChatGPT等大模型快速爬虫提取网页内容
  • 口袋参谋:仅用两招,100%解决店铺没流量、没点击!
  • web前端开发规范、HTML规范、JavaScript规范、style规范
  • 重生奇迹MU再生原石
  • 【Linux】-信号-(信号的产生,保存,处理,以及os是怎么读取硬件的输入,硬件异常和coredump,定时器的原理简单的用户态和内核态的详细介绍)
  • 5、Qt:项目中包含多个子项目(.pro)/子模块(.pri)
  • macbook电脑运行缓慢和卡顿内存怎么清理了?
  • 外包搞了6年,技术退步明显......
  • 【数值计算方法(黄明游)】矩阵特征值与特征向量的计算(五):Householder方法【理论到程序】
  • form表单封装button封装的两种方式
  • Centos查看运行内存大小
  • linux shell编程
  • ardupilot开发 --- 机载计算机 篇
  • Java基础(第九期):Java中的集合 ArrayList 集合的增删改查 Java实现学生信息管理系统
  • 一、服务器准备
  • 使用coco数据集进行语义分割(1):数据预处理,制作ground truth
  • 【大数据】区分 hdfs dfs -ls 与 hdfs dfs -ls /
  • 动静分离策略
  • 【C语言】与文件有关的操作