Spring Boot应用的极速部署脚本示例代码

yizhihongxing

我很乐意为你详细讲解“Spring Boot应用的极速部署脚本示例代码”的完整攻略。

准备工作

在开始讲解之前,我们需要先进行一些准备工作:

  • 安装JDK,确保环境变量已经配置完成。
  • 安装Maven,确保环境变量已经配置完成。

极速部署脚本示例代码

接下来,我们将演示如何使用shell脚本自动化打包部署Spring Boot应用。这里提供两个示例:

示例一

假设我们有一个Spring Boot项目,项目的名称为demo,位于/opt/demo目录下。

我们可以使用下面的命令来编写deploy.sh脚本:

#!/bin/bash

# 停止服务
systemctl stop demo.service

# 构建jar包
cd /opt/demo
mvn clean package

# 启动服务
java -jar /opt/demo/target/demo-1.0.0.jar --spring.profiles.active=prod

# 配置系统服务
cp /opt/demo/demo.service /etc/systemd/system/

# 开启服务
systemctl daemon-reload
systemctl start demo.service
systemctl enable demo.service

# 删除旧的jar包
rm -f /opt/demo/demo-1.0.0.jar

deploy.sh脚本执行的操作包括:

  1. 停止demo.service系统服务;
  2. 进入/opt/demo目录,使用Maven构建项目并生成jar包;
  3. 启动demo应用;
  4. 配置系统服务;
  5. 开启demo.service系统服务;
  6. 删除旧的jar包。

deploy.sh脚本上传到服务器中的/opt/demo目录下,并为脚本添加可执行权限:

chmod +x /opt/demo/deploy.sh

现在,我们可以直接运行deploy.sh脚本,完成对demo应用的部署:

./deploy.sh

示例二

在第一个示例中,我们仅仅是打包并启动了Spring Boot应用。在真正的生产环境中,还需要考虑更多的安全、监控等问题。下面我们来看一个更加全面的示例。

假设我们有一个名为demo的Spring Boot项目,该项目的代码已经托管到了GitHub上。我们可以按照下面的步骤进行自动化部署:

  1. 编写deploy.sh脚本,该脚本用于拉取GitHub上的最新代码并部署运行应用:

    ```bash

    !/bin/bash

    停止服务

    systemctl stop demo.service

    拉取最新代码

    cd /opt/demo/
    git pull origin master

    构建jar包

    mvn clean package

    启动服务

    java -jar /opt/demo/target/demo-1.0.0.jar \
    --spring.profiles.active=prod \
    --spring.datasource.url=jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME} \
    --spring.datasource.username=${DB_USERNAME} \
    --spring.datasource.password=${DB_PASSWORD}

    配置系统服务

    cp /opt/demo/demo.service /etc/systemd/system/

    开启服务

    systemctl daemon-reload
    systemctl start demo.service
    systemctl enable demo.service

    删除旧的jar包

    rm -f /opt/demo/demo-1.0.0.jar
    ```

    deploy.sh脚本执行的操作包括:

    1. 停止demo.service系统服务;
    2. 进入/opt/demo目录,拉取最新的代码;
    3. 使用Maven构建项目并生成jar包;
    4. 启动demo应用,同时传入数据库连接信息和其他配置项;
    5. 配置系统服务;
    6. 开启demo.service系统服务;
    7. 删除旧的jar包。
  2. 在服务器上创建一个包含数据库连接信息、Github授权信息等文件的配置文件。可以将配置文件上传到服务器的/opt/demo目录下。例如,我们命名配置文件为config.properties。该文件的内容如下:

    ```
    DB_HOST=your_db_host
    DB_PORT=your_db_port
    DB_NAME=your_db_name
    DB_USERNAME=your_db_username
    DB_PASSWORD=your_db_password

    GITHUB_USERNAME=your_github_username
    GITHUB_PASSWORD=your_github_password
    ```

  3. 修改demo项目的pom.xml文件,使项目能够在打包时自动加载config.properties文件。修改后的pom.xml文件如下:

    ```xml
    <?xml version="1.0" encoding="UTF-8"?>
    4.0.0

    <groupId>org.example</groupId>
    <artifactId>demo</artifactId>
    <version>1.0.0</version>
    
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    
    <properties>
        <java.version>1.8</java.version>
        <spring-boot.version>2.5.0</spring-boot.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    
    <profiles>
        <profile>
            <id>config</id>
            <properties>
                <configFilePath>/opt/demo/config.properties</configFilePath>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>properties-maven-plugin</artifactId>
                        <version>1.0-alpha-2</version>
                        <executions>
                            <execution>
                                <phase>initialize</phase>
                                <goals>
                                    <goal>read-project-properties</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    

    ```

    pom.xml文件使用了Maven的properties-maven-plugin插件,允许我们使用config.properties文件中的属性值。该插件将会在构建项目的过程中将config.properties文件中的属性值读入到configprofile中的properties中。

  4. 编写一个自动化部署脚本auto_deploy.sh,该脚本用于自动化拉取代码、更新配置文件、重新打包部署应用等操作。该脚本的内容如下:

    ```bash

    !/bin/bash

    停止系统服务

    systemctl stop demo.service

    拉取最新代码

    cd /opt/demo/
    git pull origin master

    更新配置文件

    cp /opt/demo/config.properties /opt/demo/target/classes/

    构建jar包

    mvn clean package -Pconfig

    启动服务

    java -jar /opt/demo/target/demo-1.0.0.jar \
    --spring.profiles.active=prod \
    --spring.config.location=file:/opt/demo/target/classes/config.properties

    配置系统服务

    cp /opt/demo/demo.service /etc/systemd/system/

    启动系统服务

    systemctl daemon-reload
    systemctl start demo.service
    systemctl enable demo.service

    删除旧的jar包

    rm -f /opt/demo/demo-1.0.0.jar
    ```

    auto_deploy.sh脚本执行的操作包括:

    1. 停止demo.service系统服务;
    2. 进入/opt/demo目录,拉取最新的代码;
    3. 更新config.properties文件;
    4. 使用Maven构建项目并生成jar包;
    5. 执行demo应用,同时传入配置文件路径;
    6. 配置系统服务;
    7. 开启demo.service系统服务;
    8. 删除旧的jar包。

至此,我们已经完成了一个完整的Spring Boot应用的极速部署脚本。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot应用的极速部署脚本示例代码 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 如何在Java SpringBoot项目中配置动态数据源你知道吗

    当我们使用 SpringBoot 开发项目时,通常会遇到需要动态切换不同数据源的需求。这时候,我们可以通过配置动态数据源来解决这个问题。下面是详细讲解如何在 Java SpringBoot 项目中配置动态数据源的攻略。 1. 引入相关依赖 我们需要引入如下两个 SpringBoot 的依赖: <dependency> <groupId&gt…

    Java 2023年5月20日
    00
  • 简单记录Cent OS服务器配置JDK+Tomcat+MySQL

    我来为您详细讲解如何简单记录CentOS服务器配置JDK+Tomcat+MySQL的完整攻略。 一、安装JDK 1. 下载JDK 从Oracle官网下载对应版本的JDK,然后将其复制到Linux服务器上。 2. 解压JDK 使用命令行解压JDK压缩包: tar -zxvf jdk-xxxx.tar.gz 3. 配置环境变量 将JDK添加到环境变量中,让系统能…

    Java 2023年5月19日
    00
  • SpringBoot关于自定义注解实现接口幂等性方式

    对于SpringBoot自定义注解实现接口幂等性,一般可以通过以下几个步骤来完成: 1. 创建幂等性注解 幂等性注解一般包含以下内容: 注解名称:一般用 @Idempotent 表示。 作用范围:一般有方法级别和参数级别两种。 验证方式:一般有请求参数和请求头两种。 具体实现示例: @Target({ElementType.METHOD, ElementTy…

    Java 2023年5月20日
    00
  • Java的Struts框架报错“ForwardProcessorException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“NoSuchRequestHandlingMethodException”错误。这个错误通常由以下原因之一起: 找不到请求处理方法:如果在Action类中找不到与请求匹配的处理方法,则可能会出现此错误。在这种情况下,需要检查Action类以解决此问题。 请求路径错误:如果请求路径不正确,则可能会出现此错误。在这…

    Java 2023年5月5日
    00
  • 2023-5-6第一次创建博客的第一篇文章

    关于最近学习记下来的一些要点以及模糊的地方总结 对象类型和引用类型可以用链式结构 2进制是toBinaryString 10进制是Decimal 16进制是toHexString 8进制是octal final 1.修饰类 不能被继承 2.修饰方法 不能被重写,能被重载 3.修饰变量 值不可被重新赋值 属性可以被修改 4.修饰引用数据类型 引用对象不能被修改…

    Java 2023年5月6日
    00
  • Java入门教程–带包的类如何编译与运行

    Java是一门面向对象的高级编程语言,使用它编写的程序可以运行在不同的平台上,最重要的是Java是开源的。在Java入门教程中,带包的类在编译和运行时,需要注意以下几点: 包的概念 Java中的包是用来组织类和接口的,用于避免命名冲突,也方便管理和维护代码。在包中的类和接口使用前需要导入。 编写带包的Java类 在编写Java类时,需要在文件的头部加入包声明…

    Java 2023年5月26日
    00
  • 类加载的生命周期包括哪些阶段?

    以下是关于类加载的生命周期包括哪些阶段的详细讲解: 类加载的生命周期包括哪些阶段? 类加载的生命周期包括以下几个阶段: 加载(Loading):将类的字码加载到内存中。 链接(Linking):将类的二进制数据合并到 Java 运行时环境中。 验证(Verification):验证的字节码是否符合 Java 虚拟机规范。 准备(Preparation):为类…

    Java 2023年5月12日
    00
  • 如何安装java的运行环境IDEA

    安装Java的运行环境(JRE)是使用IntelliJ IDEA的前提条件。在安装IDEA之前,用户需要先安装JRE。以下是完整的安装JRE以及IntelliJ IDEA的攻略: 1. 安装Java的运行环境(JRE) Windows系统 打开Oracle Java SE下载页面。 在“Java SE 15及后续版本”下,单击“JDK下载”。 接受许可协议并…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部