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

我很乐意为你详细讲解“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日

相关文章

  • 解决kafka消息堆积及分区不均匀的问题

    要解决 Kafka 消息堆积及分区不均匀的问题,需要从多个方面入手。下面是一些攻略和示例: 1. 增加分区数量 如果分区数量不足,可能会导致消息在同一个分区中积累过多,从而导致消息堆积。因此,可以考虑增加分区数量。我们可以通过以下代码示例来实现: # 假设我们要将 topic 的分区数量增加到 10 bin/kafka-topics.sh –zookeep…

    Java 2023年5月20日
    00
  • 深入学习JavaScript执行上下文

    下面我将给出一份完整的攻略,帮助大家深入学习 JavaScript 执行上下文。 什么是执行上下文 在讲解如何深入学习 JavaScript 执行上下文之前,我们先来介绍一下什么是执行上下文。 在 JavaScript 中,每当代码运行到一个函数或者全局代码块的时候,都会创建一个执行上下文,用于存储当前代码执行的状态。执行上下文包含了当前环境中的变量、函数、…

    Java 2023年5月26日
    00
  • 实例讲解使用Spring通过JPA连接到Db2

    接下来我会为你详细讲解“实例讲解使用Spring通过JPA连接到Db2”的完整攻略。 前置要求 在开始之前,你需要先满足以下要求: 确保你已经安装好了Java开发环境和Maven构建工具。 确保你已经安装好了Db2数据库,并且已经创建好了相应的数据库和表。 确保你已经对Spring框架有一定的了解,包括Spring Boot、Spring Data JPA等…

    Java 2023年5月20日
    00
  • JavaWeb 中Cookie实现记住密码的功能示例

    JavaWeb 中 Cookie 实现记住密码的功能示例攻略 概述 在 JavaWeb 开发中,Cookie 是一种非常重要的数据传输机制。它将数据存储在客户端本地,通过浏览器发送到服务器,用于实现用户登录状态保持、购物车信息保存、网站个性化推荐等功能。其中,Cookie 实现记住密码的功能是非常常见的场景。 本攻略将详细讲解如何使用 Cookie 实现 J…

    Java 2023年6月15日
    00
  • 如何利用JAVA正则表达式轻松替换JSON中的大字段

    下面是如何利用Java正则表达式轻松替换JSON中的大字段的完整攻略: 什么是正则表达式 在介绍如何利用Java正则表达式替换JSON大字段之前,先来简单介绍一下正则表达式。正则表达式是一种文本模式,可以用来匹配搜索文本中的字符串。Java正则表达式是指Java语言中可用的正则表达式。在Java中,正则表达式由 java.util.regex 包提供支持。 …

    Java 2023年5月26日
    00
  • Java基础之教你如何正确运用依赖注入

    Java基础之教你如何正确运用依赖注入 什么是依赖注入? 依赖注入(Dependency Injection,简称DI)是一种软件设计模式,在这个模式中,对象在被创建的时候所需的依赖关系被动态注入到对象中。这种方式有助于减少模块之间的耦合性,同时也增强了代码的可扩展性和可维护性。 依赖注入的三种方式 依赖注入有三种方式:构造器注入,Setter注入和接口注入…

    Java 2023年5月27日
    00
  • 面试必备之Java 最常见 200+ 面试题全解析

    首先,我们需要明确这个攻略的目的,即为Java岗位的应聘者提供一份全面的面试题目汇总以及这些题目的解析,帮助应聘者更好地准备及应对面试。 其次,我们需要确定一些指导原则,如:- 每一个面试题都必须有解答- 对于解答,需要给出尽可能详细的解释- 除了题目的解答,还需要添加一些相关的知识点或技巧 在撰写收集题目和解答的过程中,可以按照如下步骤进行: 第一步:收集…

    Java 2023年6月1日
    00
  • Java语言Consistent Hash算法学习笔记(代码示例)

    Java语言Consistent Hash算法学习笔记(代码示例) 前言 Consistent Hash算法是一种让我们能够快速定位某个数据对象在分布式环境中哪个节点上的算法。本文将详细讲解一下Java语言中的Consistent Hash算法,同时会提供代码示例。 Consistent Hash算法介绍 Consistent Hash算法的主要思想是将节点…

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