从零开始让你的Spring Boot项目跑在Linux服务器

首先我们来讲解“从零开始让你的Spring Boot项目跑在Linux服务器”的攻略。

准备工作

在将Spring Boot项目跑在Linux服务器之前,需要先确保我们已经满足以下条件:

  • 已经有一台Linux服务器,并且可以通过SSH连接;
  • 已经安装好Java Runtime Environment(JRE);
  • 已经下载好我们的Spring Boot项目并打包成jar包。

将jar包上传至服务器

将Jar包上传至服务器的方式有很多种,比如使用FTP工具、使用SCP命令等等,这里我们演示使用SCP命令的方式。

首先进入到本地保存项目的目录,执行以下命令将jar包上传至服务器(假设服务器IP为192.168.1.100,上传至服务器的路径为/home/user/app):

scp target/xxx.jar user@192.168.1.100:/home/user/app/

其中target/xxx.jar为我们打包好的jar包路径,user为服务器用户名,192.168.1.100为服务器IP地址,/home/user/app/为上传至服务器的路径。

安装并配置Systemd

Systemd是Linux系统中的一种系统和服务管理器,可以允许用户将自己的服务作为系统服务来运行。我们使用Systemd来管理我们的Spring Boot应用。

首先通过以下命令安装Systemd:

sudo yum install -y systemd

系统安装好Systemd后,我们需要为我们的应用创建一个Systemd service文件,用于指定如何启动我们的应用。在/etc/systemd/system/目录下创建一个myapp.service文件,文件内容如下:

[Unit]
Description=My Spring Boot App
After=syslog.target

[Service]
User=tomcat
ExecStart=/usr/bin/java -jar /home/user/app/xxx.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

在此文件中,我们指定了应用描述、启动用户、以及如何启动我们的Spring Boot应用。

接着,将此文件添加至systemctl,并启动:

sudo systemctl daemon-reload
sudo systemctl start myapp.service

至此,在Linux上已经成功部署了Spring Boot应用。

示例1

以下是一组示例,说明如何将一个简单的Spring Boot应用跑在Linux服务器上。

  1. 编写Spring Boot应用代码
@SpringBootApplication
@RestController
public class MyApplication {
  @RequestMapping("/")
  public String home() {
    return "Hello, world!";
  }

  public static void main(String[] args) {
    SpringApplication.run(MyApplication.class, args);
  }
}
  1. 在命令行中打包此项目(需要保证已经安装好maven):
mvn package
  1. 将打包好的jar包上传到Linux服务器中。

  2. 创建/etc/systemd/system/myapp.service文件,添加以下内容:

[Unit]
Description=My Spring Boot App
After=syslog.target

[Service]
User=tomcat
ExecStart=/usr/bin/java -jar /home/user/app/xxx.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

其中xxx.jar为我们刚刚上传至服务器的jar包。

  1. 重新加载配置文件,并启动服务:
sudo systemctl daemon-reload
sudo systemctl start myapp.service
  1. 访问网站,在浏览器中访问http://服务器ip:8080,即可看到“Hello, world!”的页面。

示例2

另一个示例是如何将带有数据库的Spring Boot应用跑在Linux服务器上。

  1. 编写Spring Boot应用代码(此处以MySQL数据库为例):
@SpringBootApplication
@RestController
public class MyApplication {
  @Autowired
  private JdbcTemplate jdbcTemplate;

  @RequestMapping("/")
  public String home() {
    String sql = "SELECT COUNT(*) FROM users";
    int count = jdbcTemplate.queryForObject(sql, Integer.class);
    return "Hello, world! There are " + count + " users in the database.";
  }

  public static void main(String[] args) {
    SpringApplication.run(MyApplication.class, args);
  }
}
  1. application.properties文件中添加数据库配置:
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  1. 在命令行中打包此项目。

  2. 将打包好的jar包上传到Linux服务器中。

  3. 创建/etc/systemd/system/myapp.service文件,添加以下内容:

[Unit]
Description=My Spring Boot App
After=syslog.target

[Service]
User=tomcat
ExecStart=/usr/bin/java -jar /home/user/app/xxx.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

其中xxx.jar为我们刚刚上传至服务器的jar包。

  1. 安装MySQL数据库,并创建test数据库,以及users表。

  2. 重新加载配置文件,并启动服务:

sudo systemctl daemon-reload
sudo systemctl start myapp.service
  1. 访问网站,在浏览器中访问http://服务器ip:8080,即可看到“Hello, world! There are X users in the database.”的页面,其中X为数据库中users表中的记录数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:从零开始让你的Spring Boot项目跑在Linux服务器 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • spring Security的自定义用户认证过程详解

    【Spring Security的自定义用户认证过程详解】 介绍 Spring Security是一个流行的安全框架,用于保护Web应用程序和REST API。Spring Security通过AuthenticationManager接口处理认证过程。该接口负责通过认证用户提供的凭据,最终生成一个用于描述身份验证后的用户认证信息 — Authenticat…

    Java 2023年5月20日
    00
  • 微信小程序webSocket的使用方法

    接下来我将详细讲解微信小程序中使用WebSocket的方法。主要分为以下几个步骤: 1. 引入WebSocket API 在小程序页面js文件里,需要引入WebSocket API,代码如下: // 引入WebSocket API const socket = require(‘../../utils/websocket.js’) 其中websocket.j…

    Java 2023年5月23日
    00
  • Java线程死锁代码详解

    这里我给你提供一份“Java线程死锁代码详解”的攻略,希望能对你有所帮助。 背景介绍 线程死锁在多线程环境下是非常常见的情况,而解决线程死锁也非常困难,因此需要我们对线程死锁有一个深入的了解。本文将详细讲解Java线程死锁的原因、示例以及如何解决死锁。 什么是线程死锁? 当两个或更多的线程互相持有对方所需要的资源,同时等待对方释放资源,就会出现线程死锁。可以…

    Java 2023年5月24日
    00
  • 常见的Java网络编程协议有哪些?

    常见的Java网络编程协议有如下几种: TCP/IP协议:TCP/IP协议是互联网传输层协议的基础协议。Java中通过Socket实现TCP/IP协议网络编程。Socket类提供了底层的TCP/IP通信功能,开发者可以使用它来创建基于TCP协议的网络应用程序。 HTTP协议:HTTP协议是Web应用程序中使用得最多的协议。Java中通过HttpURLConn…

    Java 2023年5月11日
    00
  • Java中解密微信加密数据工具类

    Java中解密微信加密数据工具类 – 完整攻略 对于开发微信小程序的开发者而言,解密微信加密数据是一个重要的任务。为了提供更好的开发体验,我们可以利用Java来解密微信加密数据,本文将详细讲解Java中解密微信加密数据的完整攻略。 前置条件 在开始讲解如何在Java中解密微信加密数据之前,我们需要做好以下几个前置条件: 在微信官方平台上注册自己的小程序,并获…

    Java 2023年5月23日
    00
  • JDBC利用C3P0数据库连接池连接数据库

    JDBC连接到数据库时,如果每次都重新创建一个新的连接,会造成资源浪费,影响性能。因此,使用连接池进行连接管理是一个比较好的选择,C3P0是一个常用的数据库连接池。 以下是详细的攻略: 1. 导入C3P0依赖库 在pom.xml文件中添加C3P0依赖: <dependencies> <!–…省略其他依赖–> <depen…

    Java 2023年6月16日
    00
  • Spring Boot整合Spring Data JPA过程解析

    下面我会详细讲解“Spring Boot整合Spring Data JPA”的攻略,包括搭建环境、配置文件、实体类、DAO接口、Service接口和Controller等内容。并附加两个示例供您参考。 环境搭建 首先,你需要在Maven项目中添加以下依赖: <dependencies> <!–Spring Boot Web Starter…

    Java 2023年5月19日
    00
  • JavaWeb实现简单文件上传功能

    JavaWeb实现简单文件上传功能的攻略如下: 第一步:前端实现上传表单组件 前端应该使用form表单来提交文件数据,上传控件使用input[type=”file”]标签。在form表单的enctype属性中指定multipart/form-data,以允许上传二进制文件。 <form name="uploadForm" id=&q…

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