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日

相关文章

  • 详解Spring Boot 使用Java代码创建Bean并注册到Spring中

    这里我们将分步骤地详解如何使用Java代码创建Bean并注册到Spring中。 步骤一:创建Bean 我们要创建一个简单的Java类,并使用@Component注解将其标记为Spring Bean。示例代码如下: import org.springframework.stereotype.Component; @Component public class …

    Java 2023年5月19日
    00
  • Java Arrays.asList使用方法解析

    Java Arrays.asList使用方法解析 Arrays.asList是Java中常用的快速创建列表的方法之一,它可以方便地将数组转换成List。在这篇攻略中,我们将深入探讨Arrays.asList的用法。 Arrays.asList用法 首先,让我们来看一个简单的例子: String[] array = {"a", "…

    Java 2023年5月26日
    00
  • Tomcat 是如何管理Session的方法示例

    Tomcat 是一个流行的 Java Web 服务器,可以通过 Session 技术实现 Web 应用程序的状态管理。下面我们来详细讲解 Tomcat 是如何管理 Session 的方法示例。 1. 使用 HTTPSession 接口 Tomcat 通过内置的 HTTPSession 接口来管理 Session。若要在应用程序中使用 Session,可以通过…

    Java 2023年5月19日
    00
  • 浅谈解决Hibernate懒加载的4种方式

    浅谈解决Hibernate懒加载的4种方式 在使用Hibernate时,我们经常会遇到懒加载的问题。当我们从数据库中查询一个实体类对象时,Hibernate并不会直接查询与该对象关联的所有数据。它只会查询该实体类对象的基本属性,而关联数据则会在访问时再进行查询。这种机制称为懒加载。然而,有时候我们需要一次性把所有关联数据都查询出来,这时候就需要解决懒加载的问…

    Java 2023年5月19日
    00
  • java开发 线上问题排查命令详解

    Java开发 线上问题排查命令详解 在Java应用线上运行过程中可能会遇到各种问题,例如应用启动失败、性能瓶颈等等。本文将介绍一些常用的Java开发线上问题排查命令,帮助开发人员更快速、准确地定位问题。 查看应用状态 jps jps命令用于列出Java应用进程的PID(进程ID)和名称,可用于检查应用是否正常启动并在运行。 jps 输出示例: 1234 Ap…

    Java 2023年5月27日
    00
  • java生成自增编号数字的问题

    生成自增编号是Java应用程序开发中经常出现的需求,可以为数据库中的表设置自增主键,也可以为业务中不同种类的数据生成不同的编号。本篇攻略将介绍如何使用Java来实现自增编号。 方案一:使用数据库的自增主键 数据库中可以设置自增主键,通过以下步骤实现: 在数据库中创建自增主键 CREATE TABLE user ( id INT PRIMARY KEY AUT…

    Java 2023年5月20日
    00
  • 一文理解kafka rebalance负载均衡

    一文理解Kafka Rebalance负载均衡 在Kafka中,消费者组(Consumer Group)中的多个消费者(Consumer)会协同消费一个或多个Topic的分区(Partition)。消费者组通过Partition的分配策略来确定每个消费者负责消费哪些分区。当新的消费者加入或退出消费者组时,需要重新进行分区分配,这个过程被称为Rebalance…

    Java 2023年5月20日
    00
  • Spring引入外部属性文件配置数据库连接的步骤详解

    首先需要说明的是 Spring 引入外部属性文件配置数据库连接的过程非常简单,只需要遵循下面的几个步骤即可。 1. 创建属性文件 首先需要在项目的某个目录下创建一个属性文件,比如我们创建一个 db.properties 文件,用于存储数据库连接的相关信息,示例代码如下: jdbc.driver=com.mysql.jdbc.Driver jdbc.url=j…

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