在Ubuntu上部署SpringBoot应用的操作步骤

 更新时间:2025年01月10日 10:39:53   作者:Damon小智  
随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一,Java 作为一种跨平台的编程语言,具有广泛的应用场景,本文将详细介绍如何在 Ubuntu 服务器上部署 Java 应用,需要的朋友可以参考下

一、部署准备

在开始之前,请确保你具备以下条件:

  • 一台运行 Ubuntu(如 Ubuntu 20.04 或 22.04)的服务器,具有 SSH 访问权限。
  • Java 应用程序的可执行 JAR 文件,确保在本地能够正常运行。

二、安装 Java 环境

首先,你需要在 Ubuntu 上安装 Java 运行环境(JRE)或 Java 开发工具包(JDK),以便能够运行 Java 应用。

1. 安装 JDK

Ubuntu 提供了 OpenJDK(Java 的开源实现)。你可以选择安装 JDK 8(业内主流版本)或 OpenJDK 17(业内下一个主流版本)。

sudo apt install openjdk-17-jdk -y

2. 验证 Java 安装

安装完成后,你可以使用以下命令检查 Java 是否安装成功:

java -version

你应该看到类似于以下的输出,表示 Java 安装成功:

openjdk version "17.0.2" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-60)
OpenJDK 64-Bit Server VM (build 11.0.11+9-60, mixed mode)

三、安装 MySQL(如需)

1. 安装MySQL服务器

sudo apt install mysql-server -y

2. 启动并设置MySQL开机自启

sudo systemctl start mysql
sudo systemctl enable mysql

3. 验证MySQL安装

登录MySQL以确认安装成功。

sudo mysql -u root -p

MySQL默认密码是root,直接登录即可。

4. 修改初始密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

5. 创建库和表

这里我们用SQL语句把项目需要的数据库建好即可。

四、部署 Java 应用

你可以通过构建一个可执行的 JAR 文件来部署 Java 应用程序。
假设你已经有一个构建好的 JAR 文件,将你的 JAR 文件传输到 Ubuntu 服务器上的目标目录。
在服务器上进入应用目录并运行 JAR 文件。

cd /var/www/java-app
java -jar app.jar

此时你的 Java 应用正在 8080 端口上运行。

五、配置 Nginx 作为反向代理(可选)

为了通过浏览器访问你的 Java 应用,你需要配置 Nginx 作为反向代理,将客户端请求转发到 Java 应用。以下是配置反向代理的步骤。

1. 安装 Nginx

如果 Nginx 尚未安装,可以使用以下命令进行安装:

sudo apt install nginx -y

2. 配置 Nginx

打开 Nginx 的配置文件进行编辑:

sudo nano /etc/nginx/sites-available/default

修改 server 块中的配置,将请求转发到 Java 应用的端口(如 8080):

server {
    listen 80;

    server_name your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

保存并退出配置文件。

3. 测试并重启 Nginx

测试 Nginx 配置是否正确:

sudo nginx -t

如果配置无误,重启 Nginx:

sudo systemctl restart nginx

此时,Nginx 已经成功配置为将所有请求转发到 Java 应用。

六、设置 Java 应用为系统服务(可选)

为了确保 Java 应用在系统启动时自动启动,并且可以通过 systemctl 管理,我们需要将应用配置为一个 systemd 服务。

1. 创建 systemd 服务文件

创建一个新的 systemd 服务文件来管理 Java 应用:

sudo nano /etc/systemd/system/java-app.service

将以下内容添加到文件中:

[Unit]
Description=Java Web Application
After=network.target

[Service]
User=your-user
ExecStart=/usr/bin/java -jar /var/www/java-app/app.jar
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
WorkingDirectory=/var/www/java-app

[Install]
WantedBy=multi-user.target
  • ExecStart:指定启动应用的命令。
  • WorkingDirectory:指定应用的工作目录。
  • Restart:确保应用崩溃时会自动重启。

2. 启动并启用服务

重新加载 systemd 配置,使新服务生效:

sudo systemctl daemon-reload

启动 Java 应用服务:

sudo systemctl start java-app.service

启用服务,使其在系统启动时自动启动:

sudo systemctl enable java-app.service

3. 检查服务状态

你可以使用以下命令查看服务的状态:

sudo systemctl status java-app.service

确保 Java 应用正在运行并且没有错误。

七、日志管理

为了有效地监控 Java 应用的运行状态,建议设置日志记录。

1. 配置日志文件

你可以使用 Java 的日志框架(如 Logback 或 Log4j)来配置应用日志。确保日志输出到文件,而不是仅输出到控制台。

在 application.properties 或 logback.xml 配置中指定日志文件的路径。

例如,使用 Logback 配置文件:

<configuration>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>/var/log/java-app.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="FILE"/>
    </root>
</configuration>

2. 查看应用日志

你可以使用 tail 或 journalctl 来查看日志文件:

sudo tail -f /var/log/java-app.log

如果你通过 systemd 启动应用,还可以使用 journalctl 命令来查看应用的日志:

sudo journalctl -u java-app.service -f

八、测试部署

  • 在浏览器中访问你的服务器域名或 IP 地址,确保能正确加载 Java 应用。
  • 使用 curl 或 Postman 等工具测试 API 接口,确保后端服务正常工作。

九、总结

通过以上步骤,你可以在 Ubuntu 上成功部署 Java 应用,使用 Nginx 配置反向代理,确保应用能够高效稳定地提供服务。同时,借助 systemd,你还可以方便地管理应用的启动、停止及日志记录,确保服务的高可用性。

以上就是在Ubuntu上部署SpringBoot应用的操作步骤的详细内容,更多关于Ubuntu部署SpringBoot应用的资料请关注脚本之家其它相关文章!

相关文章

  • java提供的4种函数式接口

    java提供的4种函数式接口

    这篇文章主要介绍了java提供的4种函数式接口,函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型并有且只有一个抽象方法的接口,下文详细内容,需要的小伙伴可以参考一下
    2022-03-03
  • SpringAop的依赖注入方式

    SpringAop的依赖注入方式

    文章介绍了Spring框架的依赖注入(DI)和面向切面编程(AOP)的基本概念和实现方式,Spring通过IOC容器管理Bean的创建和依赖注入,并提供了多种AOP实现方式,包括代理机制和配置选项
    2025-02-02
  • mybatis QueryWrapper的条件构造之apply、last、select解析

    mybatis QueryWrapper的条件构造之apply、last、select解析

    这篇文章主要介绍了mybatis QueryWrapper的条件构造之apply、last、select,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • springboot 项目使用jasypt加密数据源的方法

    springboot 项目使用jasypt加密数据源的方法

    Jasypt 是一个 Java 库,它允许开发者以最小的努力为他/她的项目添加基本的加密功能,而且不需要对密码学的工作原理有深刻的了解。接下来通过本文给大家介绍springboot 项目使用jasypt加密数据源的问题,一起看看吧
    2021-11-11
  • java 注解实现一个可配置线程池的方法示例

    java 注解实现一个可配置线程池的方法示例

    这篇文章主要介绍了java 注解实现一个可配置线程池的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 详解java中的Collections类

    详解java中的Collections类

    这篇文章主要为大家详细介绍了java中的Collections类,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • MyBatis之自查询使用递归实现 N级联动效果(两种实现方式)

    MyBatis之自查询使用递归实现 N级联动效果(两种实现方式)

    这篇文章主要介绍了MyBatis之自查询使用递归实现 N级联动效果,本文给大家分享两种实现方式,需要的的朋友参考下吧
    2017-07-07
  • SpringBoot注册第三方Bean的方法总结

    SpringBoot注册第三方Bean的方法总结

    众所周知,SpringBoot默认会扫描启动类所在的包及其子包,一般我们都是在需要的类上通过注解的方式去将Bean注册交给IOC进行管理,但是注册第三方Bean的方案却不支持,所以本文给大家介绍了SpringBoot注册第三方Bean的方法,需要的朋友可以参考下
    2024-01-01
  • Java并发编程之线程安全性

    Java并发编程之线程安全性

    这篇文章主要介绍了Java并发编程之线程安全性,文章基于Java的相关内容详细的展开详细介绍,需要的小伙伴可以参考一下
    2022-04-04
  • 一文详解Java中的原子操作

    一文详解Java中的原子操作

    在Java中,原子操作尤为重要,尤其是在多线程环境中,想象一下,如果小黑在操作一个共享变量时,这个操作被其他线程打断,那会发生什么?可能会导致数据不一致,或者更糟糕的情况,本文将给大家详细介绍一下Java中的原子操作
    2024-01-01

最新评论