如何一键部署本地Java项目到服务器上

一、背景

我开发了一个Java代码,现在想部署到服务器上,当然可以使用Jenkins部署,但是Jenkins配置和维护成本比较高,所以我今天分享的是轻量级的一键部署脚本

演示:本地Window的Java代码 -> Vmware虚拟机Centos7上

二、我的项目结构

如果你的项目结构不同,可以根据项目结构自行调整

三、操作步骤

1、对项目进行Maven编译

这里要注意你的脚本位置在哪里,我的脚本位置在项目的doc/script 目录下,所以执行下面之前,需要执行 cd ../../ 跳转到项目的根目录

# 跳转到项目根目录
cd ../../mvn clean package -DskipTests=true

2、部署到远程服务器

这里使用scp命令,当然首次执行会需要验证,我们只需要正确的填写登录的用户名密码即可

# 部署到远程服务器
scp user-center/target/user-center-0.0.1-SNAPSHOT.jar root@192.168.31.113:/usr/local/user-center.jar

这一步是要输入密码

然后输入服务器的root密码,然后按回车,jar包文件就同步到服务器上了,如果需要跳过输入密码这一步,可以看下面的免密登录ssh

之后我们去服务器中看看,文件的确已经上传到服务器上了

3、生成免密登录的SSH

a. 本机Window执行(如果已经生成过了就跳过这一步)

ssh-keygen -t rsa

b. 第二步在服务器的root目录下创建.ssh 文件夹(如果已经生成过了就跳过这一步)

mkdir .ssh

c 第三步把Window上的id_rsa.pub 内容拷贝到/root/.ssh/authorized_keys 中

这一步千万要注意,不是把这个id_rsa.pub 文件拷贝到/root/.ssh/authorized_keys 这个目录

authorized_keys 是一个文件!!!

authorized_keys 是一个文件!!!

authorized_keys 是一个文件!!!

重要的事情说3遍

d 第四步 修改authorized_keys 文件的执行权限

chmod 700 authorized_keys

e 第五步 重启sshd应用

systemctl restart sshd

4、编写服务器端Java的启动脚本

这里我直接上代码了,大概意思,先找到原先已经运行的user-center项目,kill 掉,再执行启动命令,等7秒钟之后,再检查一下程序是否正常启动

pid=$(ps -ef | grep user-center | grep -v grep | awk '{print $2}')if [ ! -z "$pid" ]; thenecho "当前运行user-center服务的pid是: ${pid}"kill -9 ${pid}echo -e "已结束当前user-center服务~\n"
elseecho -e "目前未运行user-center服务!\n"
finohup java -jar -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m -Xmn200m -Xss256k -Dspring.profiles.active=test user-center.jar >out.log 2>&1 &sleep 7pid=$(ps -ef | grep user-center | grep -v grep | awk '{print $2}')
if [ ! -z "$pid" ]; thenecho "user-center启动成功, pid是: ${pid}"
elseecho -e "user-center启动失败!\n"
fi

5、完整的本地端脚本如下

#!/bin/bashcd ../../
mvn clean package -DskipTests=true# 进入目录
cd ../../
# 部署到远程服务器
scp goods-center/target/goods-center-0.0.1-SNAPSHOT.jar root@192.168.31.112:/usr/local/goods-center.jar# 登录远程机器
ssh root@192.168.31.112 "cd /usr/local && sh restart_goods_center.sh"# 部署到远程服务器
scp user-center/target/user-center-0.0.1-SNAPSHOT.jar root@192.168.31.113:/usr/local/user-center.jar# 登录远程机器
ssh root@192.168.31.113 "cd /usr/local && sh restart_user_center.sh"

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

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

相关文章

面试题:RabbitMQ 有哪几种消息模式?

文章目录 前言核心组成Rabbitmq 消息模式3.1 Simple 模式ProductorCustomer 3.2 Fanout 模式ProductorCustomer 3.3 Direct 模式Productor 3.4 Topic 模式Productor 3.5 Work 模式3.5.1 轮询分发ProductorWorker1 3.5.2 公平分发Worker1 防止消息丢失机制4.1 消息确认4.2 持久化…

在WIN从零开始在QMUE上添加一块自己的开发板(一)

文章目录 一、前言二、源码编译(一)安装Msys2(二)配置GCC工具链(三)安装QEMU构建依赖(四)下载编译QEMU源码 二、QUME编程基础(一)QOM机制(二&…

LabVIEW振动筛螺栓松动故障诊断

LabVIEW振动筛螺栓松动故障诊断 概述:利用LabVIEW解决振动筛螺栓松动的故障诊断问题。通过集成的方法,不仅提高了故障检测的准确性,还优化了维护流程,为类似的机械设备故障提供了可靠的解决方案。 由于工作条件复杂,…

Linux系统安装NFS服务器

NFS是一种网络文件系统,英文全称Network File System,通过NFS可以让不同的主机系统之间共享文件或目录。通过NFS,用户可以直接在本地NFS客户端读写NFS服务端上的文件,是非常好的共享存储工具。本篇文章将介绍如何在CentOS7上安装N…

android 开发 W/TextToSpeech: speak failed: not bound to TTS engine

问题 笔者使用TTS(TextToSpeech)对于文本内容进行语音播报,控制台报错 android 开发 speak failed:not bound to TTS engine详细问题 笔者核心代码: import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.speech.tts.…

[嵌入式软件][入门篇][仿真平台] STM32F103实现LED、按键

上一篇:[嵌入式软件][入门篇] 搭建在线仿真平台(STM32) 文章目录 一、点亮LED灯(1) 简介(2) 示例代码(3) 仿真效果(闪烁) 二、按键检测(1) 简介1. 按键原理2. 检测按键端口3. 消抖 (2) 示例代码1 (按下点亮,松开熄灭&a…

一个简单的Web程序(详解创建一个Flask项目后自带的一个简单的Web程序)

程序代码截图如下: 1.应用初始化 在创建 Flask 程序时,通常需要先创建一个应用实例进行应用初始化。 from flask import Flask # 应用的初始化 app Flask(__name__) 上述代码中,使用 Flask 类创建了一个应用实例 app。 __name__ 参数用…

mp4文件可以转成mp3音频吗

现在是个非常流行刷短视频一个年代,刷短视似乎成了人们休闲娱乐的一种方式,在日常刷短视频过程中,肯定会有很多同学被短视频 bgm 神曲洗脑,比如很多被网红翻唱带火的歌曲,例如其中"不负人间”,就是其中…

Python 散点图的绘制(Seaborn篇-03)

Python 散点图的绘制(Seaborn篇-03)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

BuildRoot配置RTL8822CE WIFIBT模块(BT部分)

BuildRoot配置RTL8822CE WIFI&BT模块(WIFI部分)-CSDN博客 WIFI部分更新一下: ①、rkwifibt.mk 查看了output/rockchip_rk3399_tinkerboard2/build/的两个目录都有wifi相关的ko(后面make clean之后剩下linux-headers-custom路径的)&…

使用函数计算,数禾如何实现高效的数据处理?

作者:邱鑫鑫,王彬,牟柏旭 公司背景和业务 数禾科技以大数据和技术为驱动,为金融机构提供高效的智能零售金融解决方案,服务银行、信托、消费金融公司、保险、小贷公司等持牌金融机构,业务涵盖消费信贷、小…

菜鸟关于做前、后端的整理(html、js),以及疑问

涉及到后端的接口py&#xff0c;前端html和js 这三部分就按照如下格式放到server项目主路径下&#xff0c;这样后端机可以作为一个前端server main.pystaticmain.jsmain.htmlhtml 首先是html要设定网页的显示 <!DOCTYPE html> <html> <head><title>…

电力能源实景三维可视化合集,智慧电网数字孪生

电力能源是现代社会发展和运行的基石&#xff0c;渗透于工业、商业、农业、家庭生活等方方面面&#xff0c;它为经济、生活质量、环境保护和社会发展提供了巨大的机会和潜力。图扑软件应用自研 HT for Web 强大的渲染引擎&#xff0c;助力现代化的电力能源数字孪生场景&#xf…

【Vue】vue项目中Uncaught runtime errors:怎样关闭

vue项目中Uncaught runtime errors:怎样关闭 一、背景描述二、报错原因三、解决方案3.1 只显示错误信息不全屏覆盖3.2 取消全屏覆盖 四、参考资料 一、背景描述 项目本来运行的好好&#xff0c;换了个新的浏览器&#xff0c;新的Chrome浏览器版本号是116.0.5845.97&#xff08…

视频增强修复Topaz Video AI

Topaz Video AI是一款强大的视频增强软件&#xff0c;利用人工智能技术对数千个视频进行训练&#xff0c;结合多个输入视频的帧信息来提高素材的分辨率。该软件可将视频的分辨率提高到最高8K&#xff0c;并保持真实的细节和运动一致性。同时&#xff0c;它还能自动修复视频中的…

HCIA-HarmonyOS设备开发认证-序

序 最近涉及到HarmonyOS鸿蒙系统设备开发&#xff0c;在网络上已经有很多相关资料&#xff0c;视频教程&#xff0c;我也移植了公司的一个stm32G474板卡&#xff0c;运行LiteOS-m L0系统。 一面看资料一面移植&#xff0c;遇到不少坑&#xff0c;当看到运行的LOGO时&#xff0…

protobuf学习日记 | 认识protobuf中的类型

目录 前言 一、标量数据类型 二、protobuf中的 “数组” 三、特殊类型 1、枚举类型 &#xff08;1&#xff09;类型讲解 &#xff08;2&#xff09;升级通讯录 2、Any类型 &#xff08;1&#xff09;类型讲解 &#xff08;2&#xff09;升级通讯录 3、oneof类型 …

LeetCode、2300. 咒语和药水的成功对数【中等,排序+二分】

文章目录 前言LeetCode、2300. 咒语和药水的成功对数【中等&#xff0c;排序二分】题目及类型思路及代码 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术领域…

elementUI+el-upload 上传、下载、删除文件以及文件展示列表自定义为表格展示

Upload 上传组件的使用 官方文档链接使用el-upload组件上传文件 具体参数说明&#xff0c;如何实现上传、下载、删除等功能获取文件列表进行file-list格式匹配代码 文件展示列表自定义为表格展示 使用的具体参数说明文件大小展示问题&#xff08;KB/MB&#xff09;文件下载代码…

【GitHub项目推荐--微软开源的可视化工具】【转载】

说到数据可视化&#xff0c;大家都很熟悉了&#xff0c;设计师、数据分析师、数据科学家等&#xff0c;都需要用各种方式各种途径做着数据可视化的工作.....当然许多程序员在工作中有时也需要用到一些数据可视化工具&#xff0c;如果工具用得好&#xff0c;就可以把原本枯燥凌乱…