【笔记】记录一次全新的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=trueif [ $? -ne 0 ];thenecho " 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" != "" ];
thenecho "1"
elseecho "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" ];
thenecho "端口不可用"port=$[$port+1]portOld=8080
elseportOld=8081echo "端口可用"
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.streamnginx -s reloadecho '10秒后向原服务发出退出请求'sleep 10echo '正在请求原程序优雅退出'
exitResult=`curl http://127.0.0.1:${portOld}/systemd/graceful/exit`
echo '优雅退出结果:'${exitResult}if [ "$exitResult" != "1" ]; thenecho '优雅退出失败'exit 1
elseecho '优雅退出成功'
fi

六、安装tesseract

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

七、提前准备好RDS

  • 用的是阿里云的

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据驱动:Facebook的广告策略与商业模式

在现代数字经济中&#xff0c;数据已经成为新的石油&#xff0c;驱动着企业的增长和创新。Facebook&#xff0c;作为全球最大的社交媒体平台之一&#xff0c;充分利用其庞大的用户数据和先进的算法技术&#xff0c;建立了一个高度精确和高效的广告生态系统。这不仅推动了平台自…

带着味蕾去旅行,在“必吃”餐厅里认识一座城

时代不同了&#xff0c;旅游也变了。十多年前的旅游&#xff0c;是文艺青年的诗与远方&#xff0c;生活在别处的荷尔蒙之旅&#xff0c;宁浩拍了部电影叫《心花怒放》&#xff0c;那些年不管是大理、丽江、拉萨、成都&#xff0c;还是张家界&#xff0c;商家最喜欢用的宣传口号…

Oracle Database 23ai新特性:DB_DEVELOPER_ROLE角色

角色介绍 从 Oracle Database 23ai 开始&#xff0c;新角色“DB_DEVELOPER_ROLE”允许管理员快速分配开发人员为 Oracle 数据库设计、构建和部署应用程序所需的所有必要权限。&#xff08;包括构建数据模型所需的系统权限以及监视和调试应用程序所需的对象权限&#xff09;。通…

NSSCTF-Web题目23(RCE-空格绕过)

目录 [SWPUCTF 2022 新生赛]webdog1__start 1、题目 2、知识点 3、思路 [FSCTF 2023]webshell是啥捏 4、题目 5、知识点 6、思路 [SWPUCTF 2022 新生赛]webdog1__start 1、题目 2、知识点 RCE、空格绕过&#xff0c;嵌套eval 3、思路 出现这个页面&#xff0c;没有其…

【SSL 1056】最大子矩阵 (多维DP)

题目大意 已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵&#xff0c;你的任务是找到最大的非空&#xff08;大小至少是 1 ∗ 1 1*1 1∗1&#xff09;子矩阵。 比如&#xff0c;如下 4 ∗ 4 4*4 4∗4 子矩阵 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 的最大子矩阵是 …

组件丰富、支持2/3D数据可视化的编辑器平台软件?

数据可视化编辑器通常用于创建交互式的图表和模型&#xff0c;可以帮助用户以更直观的方式展示数据。一些在线平台软件提供了丰富的组件&#xff0c;支持2D和3D数据可视化&#xff1a; 1、Plotly - 提供了多种语言的库&#xff0c;支持在线创建交互式图表&#xff0c;包括2D和…

mac|Mysql WorkBench导入文件失败(修改编码)

⚠️&#xff1a;表格中有中文的不适用表格中有中文的不适用表格中有中文的不适用表格中有中文的不适用 我有一个excel表&#xff0c;想导入到mysql数据库中&#xff0c;但是Workbench的导入格式只支持csv&#xff0c;通过excel、wps将excel另存为csv文件进行导入 导入会因为编…

【软件测试】之自动化测试

&#x1f3c0;&#x1f3c0;&#x1f3c0;来都来了&#xff0c;不妨点个关注&#xff01; &#x1f3a7;&#x1f3a7;&#x1f3a7;博客主页&#xff1a;欢迎各位大佬! 文章目录 什么是自动化测试Selenium介绍什么是SeleniumSelenium的特点工作原理 SeleniumJava环境搭建下载…

第1章 信息系统综合知识

第1章 信息系统综合知识 本章主要介绍信息系统综合知识&#xff0c;介绍信息、信息系统的基本概念&#xff0c;概述两化融合和国家信息化战略&#xff0c;讲解电子政务、电子商务的典型应用&#xff0c;描述信息化整体总体规划以及IT战略的主要内容。 1.1 信息的定义和属性 …

【TB作品】矩阵键盘电话拨号,ATMEGA16单片机,Proteus仿真 atmega16矩阵键盘电话拨号

atmega16矩阵键盘电话拨号 c代码和仿真图&#xff1a; 使用ATmega16实现矩阵键盘电话拨号功能 项目背景 在电子设计和嵌入式系统开发中&#xff0c;矩阵键盘是常见的人机交互方式。它可以实现较多按键的输入&#xff0c;同时节省单片机的I/O资源。结合LCD显示和蜂鸣器&am…

Flume集群部署(手把手部署图文详细版)

前景概要&#xff1a; Kafka消息订阅系统在大数据业务中有着重要运用&#xff0c;尤其在实时业务中&#xff0c;kafka是必不可少的组件之一。 Flume是大数据组件中重要的数据采集工具&#xff0c;我们常利用Flume采集各种数据源的数据供其他组件分析使用。例如在实时业务中&…

Java房屋租赁管理系统附论文

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…

以智能化为舵手,引领现代计算机系统架构新航向

编者按&#xff1a;如今计算机系统承载的服务和算法逻辑日益复杂&#xff0c;理解、设计并改进计算机系统已成为核心挑战。面对系统复杂度和规模的指数级增长&#xff0c;以及新的大模型驱动场景下的分布式系统形态的涌现&#xff0c;人们亟需创新方法与技术来应对。在计算机系…

光明领鲜物流荣膺“2023中国冷链物流百强企业”荣誉称号

近日&#xff0c;以“全球链接跨界融合”为主题的2024第十六届全球食品冷链大会举行&#xff0c;光明乳业旗下光明领鲜物流受邀参加。 作为光明乳业全产业链中重要组成部分&#xff0c;光明领鲜物流始终保持高标准严要求&#xff0c;专注于冷链质量和服务持续完善&#xff0c;并…

Python基础语法(与C++对比)(持续更新ing)

代码块 Python在统一缩进体系内&#xff0c;为同一代码块C{...}内部的为同一代码块 注释 Python 单行注释&#xff1a;#... 多行注释&#xff1a;... C 单行注释&#xff1a;//... 多行注释: /*...*/ 数据类型 1. Python数据类型 Python中支持数字之间使用下划线 _ 分割…

DB2数据库日常维护

一、DB2系统结构 创建实例 db2icrt 实例名 删除实例 db2idrop 实例名 查询实例 db2ilist 实例名 启动实例 db2start 停止实例 db2stop 创建数据库 create database 库名 [on 存储路径] [using codeset 字符集] [TERRITORY 区域码] [pagesize 页大小] 删除数据库 drop database…

秋招力扣刷题——从前序与中序遍历序列构造二叉树

一、题目要求 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 二、解法思路 根据二叉树的遍历结构重构二叉树&#xff0c;至少两种遍历方式结合&…

FPGA的理解,个人的见解,不一定对

类似于面包板上搭建电路&#xff0c;但是使用的是逻辑单元模块&#xff1b;如加法器&#xff0c;减法器&#xff0c;寄存器等 没有模拟电路的电容&#xff0c;电阻&#xff1b;但是逻辑单元的底层实现&#xff0c;使用MOS管等电路实现电路的开关&#xff1b;从而表示0&#xf…

大牛“私藏”宝刊,易Accept!中科院1区-Top,偏爱国人,2个月可录!

本周投稿推荐 SCI • 能源科学类&#xff0c;1.5-2.0&#xff08;来稿即录25天&#xff09; • 计算机类&#xff0c;2.0-3.0&#xff08;纯正刊29天录用&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09; CNKI • 7天录用-检索&#xff08;急录友好&a…

Another Redis Desktop Manager工具自定义解析数据

自定义解析数据,支持多种程序终端输出 /Users/admin/go/src/baobao_all/ws_server/baobao/main_test/encipher_tool_redis/redis_tool {VALUE}/bin/bash -c "/Users/admin/Downloads/redis_tool {VALUE}"写个go程序解析数据 package mainimport ("encoding/jso…