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"