From add88ec6b824c0eb5d5f4cc3fef475a461df0d8c Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: Sun, 13 Apr 2025 21:38:51 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=85=B3=E9=97=AD=E6=9C=8D?=
=?UTF-8?q?=E5=8A=A1=E6=8E=A5=E5=8F=A3=E4=BB=A5=E5=8F=8A=E5=9C=A8linux?=
=?UTF-8?q?=E4=B8=8A=E5=AE=89=E8=A3=85=E4=B8=BA=E6=9C=8D=E5=8A=A1=E7=9A=84?=
=?UTF-8?q?=E8=84=9A=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 2 +
.../vmp/vmanager/server/ServerController.java | 32 +++--------
src/main/resources/install.sh | 57 +++++++++++++++++++
3 files changed, 66 insertions(+), 25 deletions(-)
create mode 100755 src/main/resources/install.sh
diff --git a/pom.xml b/pom.xml
index 01ea188eb..82d123434 100644
--- a/pom.xml
+++ b/pom.xml
@@ -431,6 +431,7 @@
**/application.yml
**/application-*.yml
**/local.jks
+ **/install.sh
@@ -450,6 +451,7 @@
application.yml
application-*.yml
+ install.sh
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
index 0da1ef460..eeeb65849 100755
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
@@ -28,6 +28,7 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -47,7 +48,7 @@ import java.util.*;
@SuppressWarnings("rawtypes")
@Tag(name = "服务控制")
-
+@Slf4j
@RestController
@RequestMapping("/api/server")
public class ServerController {
@@ -176,33 +177,14 @@ public class ServerController {
}
- @Operation(summary = "重启服务", security = @SecurityRequirement(name = JwtUtils.HEADER))
- @GetMapping(value = "/restart")
+ @Operation(summary = "关闭服务", security = @SecurityRequirement(name = JwtUtils.HEADER))
+ @GetMapping(value = "/shutdown")
@ResponseBody
- public void restart() {
-// taskExecutor.execute(()-> {
-// try {
-// Thread.sleep(3000);
-// SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider");
-// SipStackImpl stack = (SipStackImpl) up.getSipStack();
-// stack.stop();
-// Iterator listener = stack.getListeningPoints();
-// while (listener.hasNext()) {
-// stack.deleteListeningPoint((ListeningPoint) listener.next());
-// }
-// Iterator providers = stack.getSipProviders();
-// while (providers.hasNext()) {
-// stack.deleteSipProvider((SipProvider) providers.next());
-// }
-// VManageBootstrap.restart();
-// } catch (InterruptedException | ObjectInUseException e) {
-// throw new ControllerException(ErrorCode.ERROR100.getCode(), e.getMessage());
-// }
-// });
+ public void shutdown() {
+ log.info("正在关闭服务。。。");
+ System.exit(1);
}
- ;
-
@Operation(summary = "获取系统配置信息", security = @SecurityRequirement(name = JwtUtils.HEADER))
@GetMapping(value = "/system/configInfo")
@ResponseBody
diff --git a/src/main/resources/install.sh b/src/main/resources/install.sh
new file mode 100755
index 000000000..3d76cf1d7
--- /dev/null
+++ b/src/main/resources/install.sh
@@ -0,0 +1,57 @@
+#! /bin/sh
+
+WORD_DIR=$(cd $(dirname $0); pwd)
+SERVICE_NAME="wvp"
+
+# 检查是否为 root 用户
+if [ "$(id -u)" -ne 0 ]; then
+ echo "提示: 建议使用 root 用户执行此脚本,否则可能权限不足!"
+ read -p "继续?(y/n) " -n 1 -r
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
+ exit 1
+ fi
+ echo
+fi
+
+# 当前目录直接搜索(不含子目录)
+jar_files=(*.jar)
+
+if [ ${#jar_files[@]} -eq 0 ]; then
+ echo "当前目录无 JAR 文件!"
+ exit 1
+fi
+
+# 遍历结果
+for jar in "${jar_files[@]}"; do
+ echo "找到 JAR 文件: $jar"
+done
+
+# 写文件
+# 生成 Systemd 服务文件内容
+SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
+cat << EOF | sudo tee "$SERVICE_FILE" > /dev/null
+[Unit]
+Description=${SERVICE_NAME}
+After=syslog.target
+
+[Service]
+User=$USER
+WorkingDirectory=${WORD_DIR}
+ExecStart=java -jar ${jar_files}
+SuccessExitStatus=143
+Restart=on-failure
+RestartSec=10s
+Environment=SPRING_PROFILES_ACTIVE=prod
+
+[Install]
+WantedBy=multi-user.target
+EOF
+
+# 重载 Systemd 并启动服务
+sudo systemctl daemon-reload
+sudo systemctl enable "$SERVICE_NAME"
+sudo systemctl start "$SERVICE_NAME"
+
+# 验证服务状态
+echo "服务已安装!执行以下命令查看状态:"
+echo "sudo systemctl status $SERVICE_NAME"