linux服务器部署SpringBoot项目

该文详细介绍了如何在Ubuntu20.04LTS系统上部署SpringBoot项目,包括安装JDK8,设置MySQL8数据库,创建用户和数据库,打包并运行SpringBoot应用,最后通过浏览器验证部署成功。

linux服务器部署SpringBoot项目

一、准备工作

1、评估服务器的系统、开发环境、资源配置等,是否与项目兼容。

2、允许不同网络环境下的客户端访问服务器。

我的服务器版本信息如下:

lsb_release -a

在这里插入图片描述
可以看到我的版本是 Ubuntu 20.04.6 LTS。接下来在这个版本下安装SpringBoot运行环境。

二、在linux上安装jdk

sudo apt install openjdk-8-jre-headless

安装完,验证版本:

java -version

在这里插入图片描述

三、安装mysql,并配置用户信息、创建项目用到的数据库和表

1、项目例子

在这里插入图片描述
从配置文件可以得知,需要在服务器创建一个nothing_phone数据库,和一个用户root、密码localhost
在这里插入图片描述
并且用到表User,包含类中字段。

2、linux安装mysql

从POM文件可知,需要安装8.0版本。
在这里插入图片描述
执行以下命令,更新源并安装mysql-server:

sudo apt update
sudo apt install mysql-server

安装完,查看SQL服务器是否正常运行:

sudo systemctl status mysql

在这里插入图片描述
可以看出已经是running状态,证明已经安装成功。

3、设置mysql用户和密码(保持与程序一致)

sudo mysql_secure_installation

用户:root
密码:localhost

4、登录mysql创建程序中用的数据库、表并插入测试数据

 CREATE DATABASE nothing_phone;
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` varchar(30) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '姓名',
  `age` int(11) DEFAULT NULL COMMENT '年龄',
  `email` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
INSERT INTO `user` VALUES ('1', 'Jone', '18', 'test1@baomidou.com');
INSERT INTO `user` VALUES ('2', 'Jack', '20', 'test2@baomidou.com');
INSERT INTO `user` VALUES ('3', 'Tom', '28', 'test3@baomidou.com');
INSERT INTO `user` VALUES ('4', 'Sandy', '21', 'test4@baomidou.com');
INSERT INTO `user` VALUES ('5', 'Billie', '24', 'test5@baomidou.com');

四、打包项目并部署运行

1、在项目根目录,执行如下命令

mvn clean package -Dmaven.test.skip=true

mvn clean:清除项目target目录下的文件。
mvn package:打包项目。
-Dmaven.test.skip=true:排除测试代码后进行打包。

2、将项目.jar部署到服务器

在这里插入图片描述

3、运行项目

在服务器项目目录执行下面命令:

nohup java -jar ./springBoot_athena-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod &

在这里插入图片描述
1922929代表程序的pid

可以执行命令查看:

netstat -ntlp

在这里插入图片描述

4、停止程序运行

kill pid

五、在浏览器执行 https://服务器域名:端口/page,返回数据

在这里插入图片描述
到此就部署成功了~

<think>根据用户需求,用户希望了解在Linux服务器部署Spring Boot项目的详细步骤和方法。结合站内引用内容,我们可以整理出两种主流部署方式:传统jar包部署和Docker容器化部署。以下将分步骤详细说明,并引用相关参考资料。 ### 一、传统jar包部署方式 1. **环境准备** - 确保服务器已安装Java运行环境(推荐JDK8或JDK11) ```bash # 检查Java版本 java -version ``` - 若未安装,使用包管理器安装(以Ubuntu为例): ```bash sudo apt update sudo apt install openjdk-11-jdk ``` 2. **项目打包** - 在本地使用Maven或Gradle将项目打包为可执行jar文件: ```bash # Maven项目打包命令 mvn clean package -DskipTests ``` - 生成的jar包位于`target/`目录下,命名通常为`*.jar`。 3. **上传jar包至服务器** - 使用`scp`命令将jar包上传到服务器: ```bash scp target/your-project.jar user@server_ip:/path/to/deploy ``` 4. **启动项目** - 通过`nohup`命令后台运行jar包,并指定生产环境配置[^3]: ```bash nohup java -server -Xms64m -Xmx128m -jar your-project.jar --spring.profiles.active=prod > application.log 2>&1 & ``` - `-Xms`和`-Xmx`:设置JVM堆内存初始值和最大值(根据实际需求调整) - `--spring.profiles.active=prod`:激活生产环境配置 5. **验证服务** - 检查日志文件或通过端口访问确认服务状态: ```bash tail -f application.log # 实时查看日志 curl http://localhost:8080/health # 测试健康检查接口 ``` ### 二、Docker容器化部署方式 1. **环境准备** - 在服务器安装Docker引擎: ```bash # Ubuntu安装示例 sudo apt install docker.io ``` 2. **编写Dockerfile** 在Spring Boot项目根目录创建`Dockerfile`文件,内容参考: ```dockerfile FROM openjdk:11-jre-slim COPY target/*.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 3. **构建Docker镜像** 进入项目目录执行构建命令[^2]: ```bash docker build -t your-image-name:1.0 . ``` 4. **运行容器** - 映射端口并启动容器: ```bash docker run -d -p 8080:8080 --name spring-app your-image-name:1.0 ``` - 添加`-v`参数可挂载配置文件或日志目录 5. **管理容器** ```bash docker ps -a # 查看运行状态 docker logs spring-app # 查看容器日志 ``` ### 三、部署优化建议 1. **日志管理** - 使用`logback`或`log4j2`配置日志轮转,避免日志文件过大 - 对于Docker部署,建议将日志输出到标准流,由Docker日志驱动收集 2. **性能调优** - 根据服务器内存调整JVM参数(如`-Xmx`) - 使用`spring-boot-actuator`监控应用性能指标 3. **安全加固** - 禁用敏感端点(如`/actuator/env`) - 使用HTTPS加密通信 ### 四、自动化部署(进阶) 结合Jenkins或GitLab CI实现持续部署: 1. 代码提交触发构建 2. 自动运行测试并打包 3. 通过SSH或Kubernetes插件部署服务器 §§相关问题§§ 1. 如何为Spring Boot项目配置多环境配置文件? 2. Docker部署时如何管理敏感信息(如数据库密码)? 3. 生产环境中如何监控Spring Boot应用的健康状态? 4. 常见的Spring Boot部署失败原因有哪些? [^1]: Linux部署Spring Boot项目详解:从环境搭建到性能优化 : Linux系统中使用Docker部署Spring Boot项目 : Linux服务器部署Spring Boot项目的一些shell命令脚本 </think> ### Linux服务器部署Spring Boot项目详细步骤 #### 一、环境准备 1. **安装JDK** - 检查Java环境:`java -version` - 安装OpenJDK(以JDK11为例): ```bash sudo apt update sudo apt install openjdk-11-jdk ``` 2. **配置防火墙** - 开放应用端口(如8080): ```bash sudo ufw allow 8080 sudo ufw reload ``` #### 二、项目打包与上传 1. **本地打包Spring Boot项目** - 使用Maven生成可执行jar: ```bash mvn clean package -DskipTests ``` - 生成文件位于:`target/*.jar` 2. **上传文件到服务器** - 使用SCP命令传输: ```bash scp target/your-project.jar user@server_ip:/home/ubuntu ``` #### 三、传统部署方式(直接运行JAR) ```bash # 进入项目目录 cd /home/ubuntu # 后台启动应用(带JVM调优参数) nohup java -server -Xms256m -Xmx512m -jar your-project.jar \ --spring.profiles.active=prod > application.log 2>&1 & # 验证进程 ps aux | grep java ``` #### 四、Docker容器化部署 1. **创建Dockerfile** ```dockerfile FROM eclipse-temurin:17-jdk-alpine COPY target/*.jar app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","/app.jar"] ``` 2. **构建并运行容器** ```bash # 构建镜像 docker build -t spring-app:1.0 . # 运行容器(挂载日志目录) docker run -d -p 8080:8080 \ -v /var/log/spring:/logs \ --name spring-container spring-app:1.0 ``` #### 五、生产环境优化 1. **日志管理** - 使用`logback-spring.xml`配置日志轮转 - 关键配置示例: ```xml <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/logs/application.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>/logs/application.%d{yyyy-MM}.%i.log.gz</fileNamePattern> <maxFileSize>100MB</maxFileSize> </rollingPolicy> </appender> ``` 2. **监控与维护** - 健康检查接口:`curl http://localhost:8080/actuator/health` - 查看实时日志:`docker logs -f spring-container` #### 六、自动化部署脚本 ```bash #!/bin/bash # deploy.sh PROJECT_DIR="/home/ubuntu" JAR_NAME="your-project.jar" # 停止旧进程 pkill -f $JAR_NAME # 启动新版本 nohup java -jar $PROJECT_DIR/$JAR_NAME \ --spring.profiles.active=prod > $PROJECT_DIR/app.log 2>&1 & ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Senye_ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值