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

Idea_服务器自动化部署_傻瓜式教程

使用Alibaba Cloud Toolkit 在 IntelliJ IDEA 中一键部署项目到服务器

1. 安装 Alibaba Cloud Toolkit 插件

  • 确保 IntelliJ IDEA 版本为 2018.3 或以上。
  • 打开 IntelliJ IDEA,进入 File -> Settings -> Plugins,搜索并安装 Alibaba Cloud Toolkit 插件。

在这里插入图片描述

2. 配置服务器信息

  • 打开 Alibaba Cloud Toolkit,点击 Host 标签页,添加服务器信息:
    • 主机 IP、用户名、密码。

在这里插入图片描述

3. 部署项目

  • 右键点击项目,选择 Deploy to Host...,配置部署信息:
    • 选择 Maven BuildUpload File
    • 指定 Target Deploy HostDeploy Location
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

4. 执行部署

  • 点击 Run 执行部署,可以在 IDEA 的控制台中查看部署进度和日志。

在这里插入图片描述

5. 监控与日志

  • 使用 tail -f nohup.out 命令可以在 IDEA 内置终端中实时查看应用日志。

在这里插入图片描述

注意事项

  • 确保服务器已安装 Java 环境和所需的依赖。
  • 根据项目需求调整启动命令和部署路径。
  • 初次部署可能需要手动创建部署目录和配置文件。

通过 Alibaba Cloud Toolkit,您可以简化从本地开发环境到服务器部署的流程,实现一键部署,提高开发效率。

执行脚本

before.sh

#!/bin/bash

# 定义JAR文件的名称和位置
JAR_NAME="springboot-0.0.1-SNAPSHOT.jar"
JAR_PATH="./$JAR_NAME"

# 通过pgrep + grep找到java进程id
echo "查找Spring Boot应用的进程ID..."
PID=$(pgrep -f "$JAR_NAME")

# 检查是否找到进程ID
if [ -z "$PID" ]; then
    echo "没有找到运行中的Spring Boot应用。"
else
    # 停止Spring Boot应用
    echo "停止Spring Boot应用 (PID: $PID)..."
    kill -9 $PID
fi

# 等待进程终止
sleep 2

# 删除旧的JAR文件
echo "删除旧的JAR文件: $JAR_NAME"
rm -f "$JAR_PATH"

# 检查JAR文件是否已删除
if [ -f "$JAR_PATH" ]; then
    echo "无法删除JAR文件: $JAR_NAME"
    exit 1
fi

set ff=unix


after.sh

# 文件的路径
JAR_PATH="./springboot-0.0.1-SNAPSHOT.jar"

# 检查JAR文件是否存在
if [ ! -f "$JAR_PATH" ]; then
   echo "错误:JAR文件不存在 $JAR_PATH"
   exit 1
fi

# 停止正在运行的Spring Boot应用(如果正在运行)
echo "停止可能正在运行的Spring Boot应用..."
COUNT=$(ps -ef | grep "$JAR_PATH" | grep -v grep | wc -l)
if [ "$COUNT" -gt 0 ]; then
   echo "Spring Boot应用正在运行,正在停止..."
   kill -9 $(ps -ef | grep "$JAR_PATH" | grep -v grep | awk '{print $2}')
   echo "已停止."
fi

# 等待几秒钟确保应用已经停止
sleep 2

# 启动Spring Boot应用
echo "启动Spring Boot应用..."
nohup java -jar "$JAR_PATH" > nohup.out 2>&1 &

echo "Spring Boot应用已启动."
tail -f nohup.out
:set ff=unix


http://www.kler.cn/news/289038.html

相关文章:

  • MySQL中的分组统计
  • 云计算环境下的数据治理
  • 学习之git
  • 算法设计:实验二贪心算法
  • wget下载速度受到哪些因素影响?
  • MySQL:简述多版本并发控制MVCC
  • 无人机之电池篇
  • Python与R的完美协作:深入解析subprocess模块调用R脚本的参数传递机制
  • 安装WMware和Ubuntu并使用xShell连接
  • Map排序与转换的深入探索:Java与Kotlin的实现与应用
  • 宝兰德多款仓颉开源项目获GitCode官方G-Star毕业认证,释放开发效率新动能
  • 将军百战死,程序十年成
  • Spring Cloud Eureka与Kubernetes的集成:服务发现的混合方案
  • YOLO-World: Real-Time Open-Vocabulary Object Detection:实时开放词汇对象检测
  • QT教程-十七,QTextBrowser
  • dnsperf测试dns性能
  • 春秋云镜initial
  • c++----杨辉三角(补充)
  • 学懂C++(五十一): C++ 陷阱:详解多重继承与钻石继承引发的二义性问题
  • 上门家政系统源码开发详解
  • 界面控件Telerik UI for ASP.NET Core 2024 Q2亮点 - AI与UI的融合
  • Unified-IoU:用于高质量对象检测
  • 教你手机投屏到电视方法,用电视屏幕让家庭蛋糕制作更有趣
  • 数据结构-了解树和二叉树
  • 科研绘图系列:python语言聚类图(hclust plot)
  • mysql高级知识之集群
  • Ascend C算子开发(入门)—— 算子开发初体验
  • C++笔记---模板初阶
  • 论文速览【LLM】 —— 【ORLM】Training Large Language Models for Optimization Modeling
  • 多线程——创建