Linux

简介: 本文介绍如何将一个简单的SpringBoot项目打包并部署到Linux服务器。内容涵盖工程搭建、jar包打包、JDK安装配置、应用上传与启动,以及通过心跳接口验证服务是否正常运行,适用于Java应用的Linux部署入门学习。

1.系统打包

为方便测试,这里我以一个简单的SpringBoot工程为例,工程中预留了一个心跳健康检查接口

即后续可以通过访问这个接口,感知应用是否健康,如果有正常返回即说明工程成功部署

工程搭建

如不想0-1搭建,也可直接采用这个:📎LinuxDemo.zip

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.yzxb</groupId>
    <artifactId>linux</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>linux</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <finalName>linuxDemo</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>cn.yzxb.linux.LinuxApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

启动类

package cn.yzxb.linux;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class LinuxApplication {
    public static void main(String[] args) {
        SpringApplication.run(LinuxApplication.class, args);
        System.out.println("Linux run success");
    }
}

controller

package cn.yzxb.linux.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("heart")
public class LinuxController {
    @GetMapping
    public String heartBeat() {
        return "I'm OK";
    }
}

应用打包

2.上传应用

找到上述打包路径所在的jar文件,借助于xshell或finalshell等工具,上传至自己指定的路径即可

应用启动前,请确保你已正确安装对应版本的JDK,如未安装可参照下述操作

1.上传JDK

📎jdk-8u271-linux-x64.tar.gz

2.安装JDK

  • 在jdk所在目录解压即可:tar -zxvf jdk-8u271-linux-x64.tar.gz

3.配置JAVA_HOME(注意JAVA_HOME路径)

  • vim /etc/profile

export JAVA_HOME=/tmp/linux/jdk1.8.0_271

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH

export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin

export PATH=$PATH:${JAVA_PATH}

  • source /etc/profile

4.验证JDK

  • source /etc/profile

3.启动应用

4.验证心跳

相关文章
|
8月前
|
监控 Java 测试技术
OOM排查之路:一次曲折的线上故障复盘
本文记录了一次Paimon数据湖与RocksDB集成服务中反复出现的内存溢出(OOM)问题排查全过程。通过MAT、NMT、async-profiler等工具,结合监控分析与专家协作,最终定位到RocksDB通过JNI申请的堆外内存未释放是根因,并分享了转向Flink写入Paimon的解决方案及排查思路,为类似技术栈提供借鉴。(239字)
|
8月前
|
敏捷开发 Java 测试技术
为什么要单元测试
本文探讨单元测试如何提升软件研发效率,打破“写单测拖慢进度”的误区。通过解析测试金字塔,阐明单元测试在保障代码质量、提升可维护性与团队协作中的核心作用,并揭示常见反模式与认知误区,倡导开发者重视单测,实现从“爬行”到“奔跑”的工程进化。
为什么要单元测试
|
8月前
|
存储 缓存 运维
一场FullGC故障排查
本文记录了一次由Full GC引发的CPU使用率飙升至104%的问题排查过程。通过分析JVM堆内存,发现大对象(List&lt;Map&gt;)导致老年代频繁被占满,进而触发Full GC。利用JProfiler定位到问题根源:Excel数据以低效结构加载至内存且长期驻留,造成内存膨胀。最终提出“治本”与“治标”两类解决方案,并总结了线上高CPU问题的排查思路与经验。
 一场FullGC故障排查
|
8月前
|
存储 缓存 监控
EFC&CTO:缓存引发数据不一致问题排查与深度解析
EFC客户端在适配CTO测试时发现数据不一致问题,经排查为分布式缓存版本号回退导致读取旧数据,进而污染pagecache并写坏文件系统。通过维护递增版本号修复,最终解决问题并优化对POSIX语义的理解。
|
8月前
|
消息中间件 监控 Java
RocketMQ:底层Netty频繁OS OOM
本文记录了一例Java应用因Netty多ClassLoader加载多个PooledByteBufAllocator实例,导致堆外内存超限引发OS OOM的排查过程。通过NMT、Arthas等工具分析,发现多个中间件独立加载Netty,各自绕过JVM直接内存限制分配堆外内存,总量远超MaxDirectMemorySize。最终定位RocketMQ客户端为主要内存占用者,建议短期调小Java堆让出内存,长期优化中间件内存使用。
 RocketMQ:底层Netty频繁OS OOM
|
8月前
|
测试技术
发布模式
蓝绿部署通过两套并行系统实现零停机发布,绿色为现役系统,蓝色为新版本。测试无误后切换流量,支持快速回滚。适用于系统内聚、数据解耦场景,保障发布稳定性。
|
8月前
|
缓存 安全 Java
第五章 Spring框架
Spring的IOC(控制反转)指将对象创建交给容器管理,DI(依赖注入)则实现对象间的依赖关系自动注入。Bean默认单例非线程安全,作用域可设为singleton、prototype等,通过@Scope注解配置。Bean生命周期包括实例化、初始化、销毁等阶段,循环依赖通过三级缓存解决,但构造函数循环依赖需@Lazy解决。AOP基于动态代理实现日志、事务等横切关注点,事务通过@Transactional注解管理,支持传播行为如REQUIRED、REQUIRES_NEW。常用注解涵盖声明、注入、配置及AOP等方面。
|
8月前
|
存储 缓存 安全
1-Java基础篇
本文系统讲解Java核心知识,涵盖final关键字、重载与重写、==与equals区别、反射机制、String类对比、集合框架、线程安全类、HashMap原理、ConcurrentHashMap实现、线程池使用与参数配置、JVM组成及运行时数据区、类加载器与双亲委派模型等,结合项目实践解析技术应用。
|
8月前
|
负载均衡 算法 Java
5-微服务篇
本文详解SpringBoot自动装配原理、启动流程、核心注解@SpringBootApplication组成,以及SpringCloud微服务中注册发现、负载均衡、限流熔断等机制,涵盖常用组件如Nacos、Ribbon、Feign、Sentinel及Gateway的使用与配置,适用于面试与实战。
|
8月前
|
Java 关系型数据库 网络安全
低代码平台RuoYi:代码本地运行(☆☆)
简介:本任务要求新入职员工掌握SpringCloud、MySQL、Maven等技术栈,通过SSH方式拉取若依(RuoYi)项目代码并本地运行。需观看文档、解决常见Git权限问题,录制不少于8分钟的视频,结构化输出对项目技术栈、核心功能、数据库关系的理解,并提出困惑,助力快速融入团队开发。
低代码平台RuoYi:代码本地运行(☆☆)