【笔记】记录一次全新的Java项目部署过程

记录一次全新的Java项目部署过程

  • 环境:CentOS7

一、初始环境准备

yum install wget -y
yum install vim -y
yum install net-tools -y
mkdir /data
mkdir /data/html
mkdir /data/backend

一、安装JDK 17

  • 安装JDK17
# 下载rpm
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm
# 安装rpm(即安装jdk)
sudo yum -y install ./jdk-17_linux-x64_bin.rpm
# 校验安装是否成功
java -version

#得到如下输出说明成功
java version "17.0.11" 2024-04-16 LTS
Java(TM) SE Runtime Environment (build 17.0.11+7-LTS-207)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.11+7-LTS-207, mixed mode, sharing)

二、安装和配置Nginx

1 安装nginx
yum install epel-release
yum install nginx -y
2 配置nginx
# 配置文件默认位置
cd /etc/nginx/conf.d/
# 编辑配置文件
vim sh.conf
# 略
# server.stream、server.wx.stream等是动态的,根据启动的程序占用端口修改内容

三、安装redis

# 安装命令
yum install redis -y
# 启动redis
service redis start
# 停止redis
service redis stop
# 查看redis运行状态
service redis status
# 查看redis进程
ps -ef | grep redis
  • 设置为开机启动
chkconfig redis on
  • 设置密码
vi /etc/redis.conf
  • 查找 requirepass并修改密码
    在这里插入图片描述

四、测试环境打包

#在192.168.7.103上设置上设置免密登录服务器,用来传文件
ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.7.166
#一路按提示操作即可
  • 打包和上传命令
plat=${1}

folder=/data/chaiyou/oils-backend-template
distFolder=/data/chaiyou/bash/dist/server/


#跳转项目目录
cd ${folder}

#拉取最新代码
git pull

# gradle 打包
./gradlew :oils-backend:build -x test -x processTestResources -x checkstyleMain -x spotbugsMain -x verifyMergedCoverage -x compileTestJava -Dorg.gradle.java.home='/usr/local/jdk-17.0.8'  -Dorg.gradle.daemon=true

if [ $? -ne 0 ];then
 echo " build fail "
 exit 1
fi

#剪切打包结果jar包
# mv ${folder}/oils-backend/build/libs/oils-backend-0.0.1-SNAPSHOT.jar ${distFolder}/server.jar
scp ${folder}/oils-backend/build/libs/oils-backend-0.0.1-SNAPSHOT.jar root@192.168.7.166:/data/backend/

#登录到服务器上去执行重启命令
ssh root@192.168.7.166 << remotessh
cd /data/backend
bash restart.sh
exit

五、服务器上的重启脚本

  • 检查端口是否被占用的脚本(8080/8081端口交替使用)
  • checkPort.sh(位于/data/backend)
#!/bin/bash
#检查端口是否被占用,如果占用输出1,如果没有被占用输入0
port=${1}
#echo 'now checking port:'${port}
pIDa=`lsof -i :${port}|grep -v "PID" | awk '{print $2}'`
#echo $pIDa
if [ "$pIDa" != "" ];
then
   echo "1"
else
   echo "0"
fi
  • 重启脚本(restart.sh)
#默认端口
port=8080
portOld=8081

#今日日期
datestr=`date +"%Y%m%d%H%M%S"`

echo $datestr > date.log

#检查端口是否被占用
isPortInUse=`bash ./checkPort.sh ${port}`
if [ "$isPortInUse" == "1" ];
then
   echo "端口不可用"
   port=$[$port+1]
   portOld=8080
else
   portOld=8081
   echo "端口可用"
fi
echo '准备在端口'${port}'启动docker'


nohup java -Dspring.profiles.active=test -Dserver.port=${port} -jar oils-backend-0.0.1-SNAPSHOT.jar > output.${port}.log 2>&1 &


echo '正在启动程序,请耐心等待'
tail -f /data/backend/output.${port}.log | sed '/Started OilsApplication in\|JVM running for/q'

echo '准备修改nginx配置并重启'

echo 'proxy_pass http://127.0.0.1:'${port}'/web/;' > /etc/nginx/conf.d/server.stream
echo 'proxy_pass http://127.0.0.1:'${port}'/wx/;' > /etc/nginx/conf.d/server.wx.stream
echo 'proxy_pass http://127.0.0.1:'${port}';' > /etc/nginx/conf.d/doc.stream

nginx -s reload

echo '10秒后向原服务发出退出请求'

sleep 10

echo '正在请求原程序优雅退出'
exitResult=`curl http://127.0.0.1:${portOld}/systemd/graceful/exit`
echo '优雅退出结果:'${exitResult}

if [ "$exitResult" != "1" ]; then
  echo '优雅退出失败'
  exit 1
else
  echo '优雅退出成功'
fi

六、安装tesseract

  • 我的项目需要用到这个做最基本的图像识别
yum install tesseract -y
yum install tesseract-langpack-deu -y

七、提前准备好RDS

  • 用的是阿里云的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/771345.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

@amap/amap-jsapi-loader 实现高德地图中添加多边围栏,并可编辑,编辑后获得围栏各个点的经纬度

先上一张效果图 看看是不是大家想要的效果&#xff5e; ❤️ 希望其中的小点能帮助大家&#xff0c;主要看怎么绘制在地图上的代码即可 1.第一步要加入项目package.json中或者直接yarn install它都可以 想必大家应该都会 "amap/amap-jsapi-loader": "0.0.7&qu…

深圳合规新动向,这个关键环节要做好

随着全球商业环境的日益复杂化&#xff0c;企业合规管理已成为维护公司稳健运营和市场竞争力的核心要素。特别是对于位于创新前沿的深圳市&#xff0c;有效的合规管理系统不仅是满足法律和监管要求的必须&#xff0c;更是企业可持续发展的关键。 深圳市在全国率先探索并成功实…

卡尔曼滤波Q和R怎么调

卡尔曼滤波器是一种有效的估计算法&#xff0c;主要用于在存在噪声的环境中估计动态系统的状态。它通过结合预测模型&#xff08;系统动态&#xff09;和观测数据&#xff08;包括噪声&#xff09;来实现这一点。在卡尔曼滤波中&#xff0c;调整过程噪声协方差矩阵 ( Q ) 和测量…

uboot run命令基本使用

run 命令可以用于运行环境变量的中定义的命令,run bootcmd 可以运行bootcmd中启动命令 作用:可以运行我们自定义的环境变量 include/command.h common/cli.c /*** board_run_command() - Fallback function to execute a command** When no command line features are enabled …

自然语言处理学习--3

对自然语言处理领域相关文献进行梳理和总结&#xff0c;对学习的文献进行梳理和学习记录。希望和感兴趣的小伙伴们一起学习。欢迎大家在评论区进行学习交流&#xff01; 论文&#xff1a;《ChineseBERT: Chinese Pretraining Enhanced by Glyph and Pinyin Information》 下面…

软件确认测试和系统测试包括哪些测试内容?有什么区别?

一、软件确认测试 软件确认测试&#xff0c;顾名思义&#xff0c;是为了确认软件的正确性和完整性而进行的测试过程。它旨在验证软件是否符合用户需求和软件开发规范。测试内容包括&#xff1a; 1、功能确认&#xff1a;通过对软件各项功能进行测试&#xff0c;验证其是否按照…

商用车水箱浮球液位开关

商用车水箱浮球液位开关概览 商用车水箱浮球液位开关是一种用于监测商用车辆水箱液位的设备&#xff0c;它可以有效地控制和监控水箱中的水位&#xff0c;确保车辆的正常运作。这种液位开关通常安装在水箱内部&#xff0c;通过浮球和磁性原理来感知液位的变化&#xff0c;并通…

AI墓地:738个倒闭AI项目的启示

近年来&#xff0c;人工智能技术迅猛发展&#xff0c;然而&#xff0c;不少AI项目却在市场上悄然消失。根据AI工具聚合网站“DANG”的统计&#xff0c;截至2024年6月&#xff0c;共有738个AI项目停运或停止维护。本文将探讨这些AI项目失败的原因&#xff0c;并分析当前AI初创企…

商务视频推广打造有吸引力的7个秘诀-华媒舍

商务视频推广是现代企业发展的重要工具&#xff0c;它能够帮助企业吸引更多的目标客户&#xff0c;提升品牌知名度&#xff0c;增加销售量。但是&#xff0c;如何打造一部有吸引力的商务视频推广呢&#xff1f;本文将为您介绍7个秘诀&#xff0c;帮助您在商务视频推广中取得成功…

【Unity navmeshaggent 组件】

【Unity navmeshaggent 组件】 组件概述&#xff1a; NavMeshAgent是Unity AI系统中的一个组件&#xff0c;它允许游戏对象&#xff08;通常是一个角色或AI&#xff09;在导航网格&#xff08;NavMesh&#xff09;上自动寻路。 组件属性&#xff1a; Radius&#xff1a;导航…

100个名人的家,娄艺潇的家:大美国色,浪漫栖居

冠珠瓷砖「100个名人的家」&#xff0c;大美筑家&#xff0c;中国冠珠2024大美筑家之旅&#xff0c;冠珠瓷砖「100个名人的家」&#xff0c;探索中国人的烟火浪漫与美学追求。从中国家文化、人文居所、人生底蕴层面&#xff0c;发掘大美人居的故事&#xff0c;以中国瓷砖、空间…

无人机测绘需要注意什么?

无人机测绘是一项高精度的测量工作&#xff0c;需要注意以下四点&#xff1a; 一、作业前准备&#xff1a;沟通相关事宜&#xff0c;现场勘查&#xff0c;飞行环境检查等&#xff1b; 二、航线规划与像控点布设&#xff1a;航线规划是任务规划的核心内容&#xff0c;需要综合…

工业智能网关在现代工业生产中的重要性-天拓四方

工业智能网关是一款具备挖掘工业设备数据并接入到自主开发的云平台的智能嵌入式网络设备。它具备数据采集、协议解析、边缘计算&#xff0c;以及4G/5G/WiFi数据传输等功能&#xff0c;并能接入工业云平台。这种网关不仅支持采集PLC、传感器、仪器仪表和各种控制器&#xff0c;还…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(二十一)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 31 节&#xff09; P31《30.数据持久化-关系型数据库》 上一节中学习了使用用户首选项的方式实现数据持久化&#xff0c;但用户首…

航空数据管控系统-①项目准备阶段:任务2:项目技术预研(技术架构)

任务描述 掌握项目的总体功能&#xff0c;及实现流程。预习项目中所使用到的技术和知识点。 任务指导 一、项目效果展示 图1-数据统计大屏页面 图2-航空实时监控页面 二、项目架构 1、总体架构&#xff1a; 2、技术架构 技术清单&#xff1a; 功能 组件 说明 消息中间件…

用增之Facebook(二)

事件上报&#xff1a; SDK集成参考上一篇文章&#xff0c;代码的调用就一个方法 AppEventsLogger mLogger AppEventsLogger.newLogger(context); 例如&#xff0c;普通事件上传 mLogger.logEvent(“event_name”, bundle); 支付事件比较特殊 Currency curr Currency.getIns…

猫咖老板教你一招解决猫浮毛问题,质量好的猫用空气净化器分享

作为一名猫咖店老板&#xff0c;我经常被朋友问到关于宠物空气净化器的各种问题。有人认为这是个神器&#xff0c;而有人则认为这完全是花钱买智商税。其实我刚开始对购买宠物空气净化器也持怀疑态度&#xff0c;心想这么多钱花下去真的有效吗&#xff1f;但使用后&#xff0c;…

针对SVN、GIT版本管理工具进行源代码加密保护

针对SVN、GIT版本管理工具进行源代码加密保护 在软件开发过程中&#xff0c;版本管理工具如SVN和GIT是不可或缺的组成部分&#xff0c;它们帮助团队管理源代码的变更和版本。然而&#xff0c;这些工具也面临着源代码泄露的安全风险。如果不针对数据进行加密保护&#xff0c;很…

qt QTreeView的简单使用(多级子节点)

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);setWindowTitle("QTreeView的简单使用");model new QStandardItemModel;model->setHorizontalHeaderLabels(QStringList() << "left&q…

元宇宙虚拟实景展馆树立客户对企业的信任和好感

在数字化浪潮的推动下&#xff0c;企业迎来了前所未有的营销新机遇——3D数字展厅。3D数字展厅作为现代营销中的新型工具&#xff0c;不仅是企业与客户互动、传递信息的桥梁&#xff0c;更是企业展示实力、彰显品牌魅力的舞台。 辽宁3D数字展厅制作以其独特的设计理念和先进的制…