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

Linux系统中部署java服务(docker)

1、不使用docker

1. 检查并安装 Java 环境

检查 Java 是否已安装:

java -version

 

2. 上传 Java 项目 JAR 文件

可以创建一个server文件夹,然后上传目录 

查看当前目录

 然后创建目录上传jar包

3. 启动 Java 服务 

java -jar hywl-server.jar

这个命令会 阻塞当前终端,关闭终端后服务会终止 

✅ 4. 后台启动 Java 服务  

nohup java -jar hywl-server.jar > app.log 2>&1 &
nohup java -jar -Dspring.profiles.active=dev hywl-server.jar > app.log 2>&1 &
tail -f app.log

停止服务:

通过 ps 命令查找并终止进程

ps -ef | grep hywl-server.jar

 PID 是 5007,然后执行:

kill -9 5007

补充:

信号数字信号名称作用
1SIGHUP挂起信号,重新加载配置
2SIGINT中断(Ctrl + C)
9SIGKILL强制终止进程
15SIGTERM终止进程(默认信号)
18SIGCONT继续运行停止的进程
19SIGSTOP暂停进程

 

✅ 5.脚本后台启动 Java 服务  

启动脚本:

vi start.sh
#!/bin/bash# 项目名称(JAR文件名称)
APP_NAME="hywl-server.jar"# JVM 参数(可根据需要调整)
JAVA_OPTS="-Xms512m -Xmx1024m -Dspring.profiles.active=dev"# 日志文件路径
LOG_FILE="app.log"# 检查进程是否已启动
PID=$(pgrep -f "$APP_NAME")if [ -n "$PID" ]; thenecho "服务已启动,PID: $PID"exit 0
fi# 启动服务
echo "启动服务: $APP_NAME"
nohup java -jar $JAVA_OPTS $APP_NAME > $LOG_FILE 2>&1 &# 获取新的PID
PID=$(pgrep -f "$APP_NAME")
echo "服务启动成功,PID: $PID"
echo "日志文件:$LOG_FILE"

然后设置脚本权限

chmod +x start.sh

最后启动服务

./start.sh

再编写一个停止脚本 stop.sh: 

vi stop.sh
#!/bin/bash# 项目名称(JAR文件名称)
APP_NAME="hywl-server.jar"# 获取PID
PID=$(pgrep -f "$APP_NAME")if [ -z "$PID" ]; thenecho "服务未运行"exit 0
fi# 停止服务
echo "停止服务,PID: $PID"
kill -9 $PIDecho "服务已停止"
chmod +x stop.sh

再编写一个 restart.sh

vi restart.sh
#!/bin/bash./stop.sh
sleep 2
./start.sh
chmod +x restart.sh

 ✅ 6.脚本后台启动 Java 服务 (plus)

#!/bin/bash
set -eDATE=$(date +%Y%m%d%H%M)
# 基础路径(绝对路径)
BASE_PATH=/root/service/
# 服务名称。同时约定部署服务的 jar 包名字也为它。
SERVER_NAME=hywl-server
# 环境
PROFILES_ACTIVE=dev# heapError 存放路径
HEAP_ERROR_PATH=$BASE_PATH/heapError
# JVM 参数
JAVA_OPS="-Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$HEAP_ERROR_PATH"# SkyWalking Agent 配置
#export SW_AGENT_NAME=$SERVER_NAME
#export SW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.0.84:11800
#export SW_GRPC_LOG_SERVER_HOST=192.168.0.84
#export SW_AGENT_TRACE_IGNORE_PATH="Redisson/PING,/actuator/**,/admin/**"
#export JAVA_AGENT=-javaagent:/work/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar# 停止:优雅关闭之前已经启动的服务
function stop() {echo "[stop] 开始停止 $BASE_PATH/$SERVER_NAME"PID=$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v "grep" | awk '{print $2}')# 如果 Java 服务启动中,则进行关闭if [ -n "$PID" ]; then# 正常关闭echo "[stop] $BASE_PATH/$SERVER_NAME 运行中,开始 kill [$PID]"kill -15 $PID# 等待最大 120 秒,直到关闭完成。for ((i = 0; i < 120; i++))dosleep 1PID=$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v "grep" | awk '{print $2}')if [ -n "$PID" ]; thenecho -e ".\c"elseecho '[stop] 停止 $BASE_PATH/$SERVER_NAME 成功'breakfidone# 如果正常关闭失败,那么进行强制 kill -9 进行关闭if [ -n "$PID" ]; thenecho "[stop] $BASE_PATH/$SERVER_NAME 失败,强制 kill -9 $PID"kill -9 $PIDfi# 如果 Java 服务未启动,则无需关闭elseecho "[stop] $BASE_PATH/$SERVER_NAME 未启动,无需停止"fi
}# 启动:启动后端项目
function start() {# 开启启动前,打印启动参数echo "[start] 开始启动 $BASE_PATH/$SERVER_NAME"echo "[start] JAVA_OPS: $JAVA_OPS"echo "[start] JAVA_AGENT: $JAVA_AGENT"echo "[start] PROFILES: $PROFILES_ACTIVE"# 开始启动nohup java -server $JAVA_OPS $JAVA_AGENT -jar $BASE_PATH/$SERVER_NAME.jar --spring.profiles.active=$PROFILES_ACTIVE > nohup.out 2>&1 &echo "[start] 启动 $BASE_PATH/$SERVER_NAME 完成"
}# 部署
function deploy() {cd $BASE_PATH# 第一步:停止 Java 服务stop# 第二步:启动 Java 服务start
}deploy

 一般修改

 

 

启动:

tail -f nohup.out

 

2、使用docker

02Docker(mysql、nginx)-CSDN博客

http://www.xdnf.cn/news/466561.html

相关文章:

  • WSF3089 N沟道MOSFET在按摩椅中的应用分析
  • SpringBoot 3.4.5版本导入Lomobok依赖后无法生效的问题
  • 软件设计师考试《综合知识》设计模式之——工厂模式与抽象工厂模式考点分析
  • Windows软件插件-写MP4
  • 极验验证码全套接口(无感,滑块,点字,点图,语序,推理,九宫格)
  • UR5e机器人Matlab仿真
  • UI自动化测试方案详解
  • SpringAOP
  • k8s(12) — 版本控制和滚动更新(金丝雀部署理念)
  • [IP地址科普] 服务器公网IP、私网IP、弹性IP是什么?区别与应用场景详解
  • [吾爱出品] pdf提取工具,文本、表格、图片提取
  • LLM笔记(三)位置编码(1)
  • java中XML的使用
  • 工业大数据的定义
  • ExecutorService详解:Java 17线程池管理从零到一
  • Git 常用命令详解
  • 基于基金净值百分位的交易策略
  • 游戏行业DDoS攻击类型及防御分析
  • 飞凌嵌入式旗下教育品牌ElfBoard即将亮相「第63届高等教育博览会」
  • 阿里云的网络有哪些
  • 智能视觉赋能精准抓取:富唯智能重新定义机械臂应用新高度​
  • 开源免费iOS或macOS安装虚拟机运行window/Linux系统
  • Top-p采样:解锁语言模型的创意之门
  • Da14531蓝牙特征值1读没有回调解决
  • 掌握Multi-Agent实践(七):基于AgentScope分布式模式实现多智能体高效协作[并行加速大模型辅助搜索、分布式多用户协同辩论赛]
  • 基于智能推荐的就业平台的设计与实现(招聘系统)(SpringBoot Thymeleaf)+文档
  • 鸿蒙OSUniApp 制作简洁高效的标签云组件#三方框架 #Uniapp
  • [吾爱出品] 中医问诊辅助记录软件
  • Missashe考研日记—Day37-Day43
  • SAP ABAP 中驼峰字段名转 JSON 的实现方案