我很乐意为你详细讲解“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
脚本执行的操作包括:
- 停止
demo.service
系统服务; - 进入
/opt/demo
目录,使用Maven构建项目并生成jar
包; - 启动
demo
应用; - 配置系统服务;
- 开启
demo.service
系统服务; - 删除旧的
jar
包。
将deploy.sh
脚本上传到服务器中的/opt/demo
目录下,并为脚本添加可执行权限:
chmod +x /opt/demo/deploy.sh
现在,我们可以直接运行deploy.sh
脚本,完成对demo
应用的部署:
./deploy.sh
示例二
在第一个示例中,我们仅仅是打包并启动了Spring Boot应用。在真正的生产环境中,还需要考虑更多的安全、监控等问题。下面我们来看一个更加全面的示例。
假设我们有一个名为demo
的Spring Boot项目,该项目的代码已经托管到了GitHub上。我们可以按照下面的步骤进行自动化部署:
-
编写
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
脚本执行的操作包括:- 停止
demo.service
系统服务; - 进入
/opt/demo
目录,拉取最新的代码; - 使用Maven构建项目并生成
jar
包; - 启动
demo
应用,同时传入数据库连接信息和其他配置项; - 配置系统服务;
- 开启
demo.service
系统服务; - 删除旧的
jar
包。
- 停止
-
在服务器上创建一个包含数据库连接信息、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_passwordGITHUB_USERNAME=your_github_username
GITHUB_PASSWORD=your_github_password
``` -
修改
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
文件中的属性值读入到config
profile中的properties
中。 -
编写一个自动化部署脚本
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
脚本执行的操作包括:- 停止
demo.service
系统服务; - 进入
/opt/demo
目录,拉取最新的代码; - 更新
config.properties
文件; - 使用Maven构建项目并生成
jar
包; - 执行
demo
应用,同时传入配置文件路径; - 配置系统服务;
- 开启
demo.service
系统服务; - 删除旧的
jar
包。
- 停止
至此,我们已经完成了一个完整的Spring Boot应用的极速部署脚本。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot应用的极速部署脚本示例代码 - Python技术站