服务器 | Centos 9 系统中,如何部署SpringBoot后端项目?

系列文章目录

虚拟机 | Ubuntu 安装流程以及界面太小问题解决
虚拟机 | Ubuntu图形化系统: open-vm-tools安装失败以及实现文件拖放
虚拟机 | Ubuntu操作系统:su和sudo理解及如何处理忘记root密码


文章目录


前言

在 Linux 上部署项目 能够提供一个高效安全灵活 且成本效益高运行环境,特别适合于企业级应用、Web 服务以及任何需要长期稳定运行的服务。

服务器 选择Linux系统的原因:

  • 稳定性与安全性:Linux 操作系统以其稳定性和安全性著称。拥有强大的权限管理系统 和定期的安全更新
  • 广泛的硬件支持:支持大量的硬件架构,包括但不限于 X86、ARM、 MIPS 。
  • 软件生态系统:通过包管理器(如 apt , yum , dnf 等),用户可以轻松安装数以万计的开源软件包。

常见发行版

  • Ubuntu:适合初学者的发行版
  • CentOS:企业级应用的理想选择
  • Debian:注重前沿技术

总之呢,现如今绝大多数的企业级服务都运行在Linux系统上,尽管其发行版不尽相同。

本文采用CentOS系统,也是我部署项目采用的发行版进行描述。期望各位能有所收获,如果有任何问题,可以在下方评论。我会在看到的第一时间回复处理。

一、环境介绍

项目所使用的环境,使用Docker容器进行部署:

  • JDK17
  • mysql 8.*
  • redis

二、 使用systemd 创建服务

1.创建一个服务文件,例如 /etc/systemd/system/customize.service

  • 配置成服务,即可通过systemd命令快捷启动服务。

代码如下:

service 复制代码
[Unit]
# 服务的描述信息,显示在系统日志和服务状态中
Description=My Java Application
# 指定该服务在哪些目标之后启动,这里表示在 syslog.target 启动后启动
After=syslog.target

# 可选:也可以指定网络就绪后再启动(如果你的应用依赖网络)
# After=network.target

[Service]
# 指定运行此服务的用户,避免使用 root 用户提高安全性(生产环境下)---- 需修改 ---
User=your-username
# 启动命令:执行 Spring Boot 可执行 jar 文件
# 注意路径要写完整、绝对路径                                ---- 需修改 ---
ExecStart=/usr/lib/jvm/java-17-openjdk-17.0.14.0.7-2.el9.x86_64/bin/java -jar /your-app.jar
SuccessExitStatus=143

# 可选:标准输出重定向到日志文件(便于排查问题)
StandardOutput=file:/media/mediaLog/logfile.log
# 可选: 标准错误输出也重定向到日志文件
StandardError=file:/media/mediaLog/errorfile.log

# 自动重启策略:
# always: 总是重启
# on-failure: 仅当失败时重启(退出码非0、被信号终止等情况)
Restart=on-failure

[Install]
# 指定服务安装后在哪个 target 下启用(multi-user.target 表示多用户命令行模式)
WantedBy=multi-user.target

2.启用并启动服务

  • 如果你使用的是vim编辑器修改配置文件,可以通过 :wq 保存并退出。此时服务配置文件就完成了。
  • 我们可以通过以下命令使自定义服务配置文件生效,相当于告诉系统
    • " 我更新了服务配置,刷新一下哈!"
  • 系统会重新读取这些配置,我们亦可以通过以下命令使我们的服务:
    • 开机自启
    • 查看状态
    • 手动启动 / 关闭

代码如下:

shell 复制代码
# 重新加载 systemd 的配置文件
sudo systemctl daemon-reload
# 设置服务开机自启
sudo systemctl enable customize
# 启动服务
sudo systemctl start customize
# 查看服务状态
sudo systemctl status customize
# 停止服务
sudo systemctl stop customize

# 等等

该处使用 systemctl命令 :管理系统和服务的命令行工具,基于 systemd 初始化系统 。


扩展了解:systemd

简介:

  • systemd 是一个系统与服务管理器 (init system:初始化系统),负责在系统启动时加载内核后 启动各种服务和进程
  • 相比传统的 SysV init 而言,其更快、更灵活,支持并行启动服务,并提供更好的依赖管理日志记录功能。

总结

  • 通过服务的模式部署SpringBoot项目,让我们的部署过程更加简洁高效易于管理
  • 这种部署方式,十分适合生产环境的部署搭建。当然,后期也可能会通过各种工具进行自动化部署(例如:Jenkins)。

各位再见!这里是 鳄鱼杆的空间 ,钓......鳄鱼的杆儿!

期待下次再会!

愿你的每一次垂钓之旅都能满载而归。

相关推荐
101.淳风5 分钟前
一、sky-take-out--Day01
spring boot
brave_zhao5 分钟前
关闭 SpringBoot+javaFX混搭程序的最佳实践
spring boot·后端·sql
哈哈哈hhhhhh8 分钟前
使用 Node.js 从零开始构建你自己的 Web 服务器
服务器·node.js
Ydwlcloud10 分钟前
面向全球用户的网站,AWS是唯一选择吗?
大数据·服务器·人工智能·云计算·aws
a程序小傲14 分钟前
中国电网Java面试被问:Kafka Consumer的Rebalance机制和分区分配策略
java·服务器·开发语言·面试·职场和发展·kafka·github
Knight_AL16 分钟前
Spring Boot 中优雅地使用责任链模式(@Order 实战)
windows·spring boot·责任链模式
咕噜企业分发小米18 分钟前
如何用云服务器搭建使命召唤手游服务器?
运维·服务器
Linux运维技术栈19 分钟前
JumpServer跨网段访问内网服务器——跳板机配置方案
运维·服务器
仙俊红21 分钟前
一次 Web 请求,服务器到底能看到什么?
服务器·前端·firefox
yuanmenghao21 分钟前
车载Linux 系统问题定位方法论与实战系列 - 系统 reset / reboot 问题定位
linux·服务器·数据结构·c++·自动驾驶