长治网站制作招聘信息杭州cms建站模板
长治网站制作招聘信息,杭州cms建站模板,wordpress修改标签页,海东营销网站建设服务#x1f50d; 错误根源
从日志可见#xff0c;核心问题是 java 命令找不到#xff1a;
nohup: 无法运行命令 java: 没有那个文件或目录Jenkins 执行环境#xff08;可能是容器/纯净系统#xff09;里 没有安装 Java#xff0c;或者 java 不在 sudo 的可执行路径中#x… 错误根源从日志可见核心问题是java命令找不到nohup: 无法运行命令 java: 没有那个文件或目录Jenkins 执行环境可能是容器/纯净系统里没有安装 Java或者java不在sudo的可执行路径中导致nohup java -jar ...执行失败。️ 解决方案2 种方式选其一方案 1使用 Java 绝对路径推荐不改环境你之前用/usr/local/maven/bin/mvn构建后端说明 Maven 已安装通常 Java 就在/usr/local/maven同级的java目录或/usr/local/java目录。先在服务器上找到 Java 绝对路径# 查找 java 可执行文件whichjava# 或查找所有可能的 java 路径find/usr/local-namejava-typef示例输出假设找到/usr/local/java/bin/java/usr/local/java/bin/java修改脚本中启动后端的命令将sudo nohup java -jar ...替换为绝对路径的 java# 原命令错误# sudo nohup java -jar ${BACKEND_DEPLOY_DIR}/ivos.jar ${DEPLOY_LOG} 21 # 修改后用绝对路径示例/usr/local/java/bin/javasudonohup/usr/local/java/bin/java-jar${BACKEND_DEPLOY_DIR}/ivos.jar${DEPLOY_LOG}21方案 2给 sudo 配置 Java 环境变量兼容 Jenkins 环境sudo会重置环境变量导致java命令找不到需在sudo前指定 Java 路径或修改sudoers配置。修改脚本启动命令推荐临时生效# 方式 A指定 JAVA_HOME 后执行替换为你的 Java 实际路径sudonohup/usr/local/java/bin/java-jar${BACKEND_DEPLOY_DIR}/ivos.jar${DEPLOY_LOG}21# 方式 B在 sudo 前传递 PATH 环境变量示例sudoPATH$PATHnohupjava-jar${BACKEND_DEPLOY_DIR}/ivos.jar${DEPLOY_LOG}21永久配置修改sudoers可选sudovisudo# 找到 Defaults env_reset 行添加 Java 路径Defaultssecure_path/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/java/bin修改后sudo java就能识别到java命令。✅ 修复后的脚本关键片段以/usr/local/java/bin/java为例# 强制启动新服务用绝对路径 javaecho开始启动新后端服务${DEPLOY_LOG}# 替换为你的 Java 绝对路径sudonohup/usr/local/java/bin/java-jar${BACKEND_DEPLOY_DIR}/ivos.jar${DEPLOY_LOG}21# 延长等待时间确保服务完全启动sleep8# 验证新服务是否启动NEW_PID$(lsof-t-i:${BACKEND_PORT})if[-n${NEW_PID}];thenecho✅ 后端服务重新启动成功进程ID${NEW_PID}echo后端服务日志路径${DEPLOY_LOG}elseecho❌ 后端服务启动失败最新日志tail-10${DEPLOY_LOG}exit1fi 验证修复保存修改后的脚本重新执行 Jenkins 构建观察日志nohup: 无法运行命令 java错误消失验证后端服务lsof -i:8081能看到 Java 进程说明启动成功前端访问http://192.168.8.130/ivos-web页面正常加载。 总结✅问题本质sudo环境下java命令路径未配置导致无法启动后端 Jar 包。✅核心修复使用 Java 绝对路径如/usr/local/java/bin/java或在sudo前传递PATH环境变量让nohup能找到java可执行文件。✅最终验证修复后后端服务会在8081端口正常监听前后端完全打通页面不再白屏。最终版脚本已修复 Java 路径问题#!/bin/bash# 关闭强制退出改用手动错误处理避免静默失败sete# 1. 定义全局变量 WORKSPACE_ROOT${WORKSPACE}FRONTEND_DIRivos-webBACKEND_DIRivosNGINX_WEB_DIR/usr/share/nginx/html/ivos-webBACKEND_DEPLOY_DIR/opt/ivosBACKEND_PORT8081DEPLOY_LOG${BACKEND_DEPLOY_DIR}/deploy.log# 【修复】Java 绝对路径请替换为你的实际路径JAVA_CMD/usr/local/java/bin/java# 通用函数错误退出 error_exit(){echo❌$1exit1}# 2. 前置清理确保部署目录可写 echo-e\n [0/5] 前置清理准备重新部署环境 # 强制创建/清空部署目录避免权限/残留文件问题sudomkdir-p${NGINX_WEB_DIR}${BACKEND_DEPLOY_DIR}sudochmod-R777${NGINX_WEB_DIR}${BACKEND_DEPLOY_DIR}# 清空旧日志避免日志过大echo重新部署时间$(date)${DEPLOY_LOG}echo✅ 部署环境清理完成# 3. 前端项目构建强制重新构建 echo-e\n [1/5] 开始重新构建前端项目 cd${WORKSPACE_ROOT}/${FRONTEND_DIR}||error_exit前端目录不存在构建终止# 强制删除旧依赖和构建产物确保全新构建rm-rfnode_modules package-lock.json dist# 重新安装依赖强制刷新npminstall--registryhttps://registry.npmmirror.com--force||error_exit前端依赖安装失败构建终止# 重新构建npmrun build||error_exit前端构建失败构建终止echo✅ 前端项目重新构建完成# 4. 后端项目构建强制重新打包 echo-e\n [2/5] 开始重新构建后端项目 cd${WORKSPACE_ROOT}/${BACKEND_DIR}||error_exit后端目录不存在构建终止# 强制清理旧打包产物重新打包/usr/local/maven/bin/mvn clean package-DskipTests-U||error_exit后端打包失败构建终止# 查找 Jar 包确保只取最新的可执行 JarBACKEND_JAR$(findtarget-name*.jar!-name*-sources.jar!-name*-tests.jar|head-1)[-z${BACKEND_JAR}]error_exit未找到后端 Jar 包构建终止echo✅ 找到后端 Jar 包${BACKEND_JAR}# 5. 部署前端到 Nginx强制覆盖 echo-e\n [3/5] 重新部署前端到 Nginx # 强制清空旧前端文件避免残留sudorm-rf${NGINX_WEB_DIR}/*# 强制复制新构建产物sudo 避免权限问题sudocp-r${WORKSPACE_ROOT}/${FRONTEND_DIR}/dist/*${NGINX_WEB_DIR}/||error_exit前端文件复制失败构建终止# 重启 Nginx确保静态资源生效可选sudosystemctl reload nginx/dev/nullecho✅ 前端文件强制覆盖部署完成Nginx 已重载# 6. 部署后端服务强制重启 echo-e\n [4/5] 重新部署后端服务 # 强制停止旧服务无论是否运行echo开始强制停止旧服务端口${BACKEND_PORT}${DEPLOY_LOG}OLD_PID$(lsof-t-i:${BACKEND_PORT})if[-n${OLD_PID}];thensudokill-9${OLD_PID}||echo⚠️ 旧服务进程${OLD_PID}停止失败强制清理sleep3# 等待端口释放echo旧服务进程${OLD_PID}已强制停止${DEPLOY_LOG}elseecho⚠️ 未检测到端口${BACKEND_PORT}占用的进程${DEPLOY_LOG}fi# 强制覆盖复制新 Jar 包sudocp${WORKSPACE_ROOT}/${BACKEND_DIR}/${BACKEND_JAR}${BACKEND_DEPLOY_DIR}/ivos.jar||error_exitJar 包复制失败构建终止# 【修复】强制启动新服务使用 Java 绝对路径echo开始启动新后端服务${DEPLOY_LOG}sudonohup${JAVA_CMD}-jar${BACKEND_DEPLOY_DIR}/ivos.jar${DEPLOY_LOG}21# 延长等待时间确保服务完全启动sleep8# 验证新服务是否启动NEW_PID$(lsof-t-i:${BACKEND_PORT})if[-n${NEW_PID}];thenecho✅ 后端服务重新启动成功进程ID${NEW_PID}echo后端服务日志路径${DEPLOY_LOG}elseecho❌ 后端服务启动失败最新日志tail-10${DEPLOY_LOG}exit1fi# 7. 部署完成 echo-e\n 前后端重新部署完成echo 前端访问地址http://$(hostname-I|awk{print $1})/ivos-webecho 后端接口地址http://$(hostname-I|awk{print $1}):${BACKEND_PORT}echo 部署日志路径${DEPLOY_LOG}exit0注意请先在服务器执行which java或find /usr/local -name java -type f找到你的 Java 实际路径替换脚本中JAVA_CMD/usr/local/java/bin/java的值。