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

系列文章目录

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


文章目录

  • 系列文章目录
  • 前言
  • 一、环境介绍
  • 二、 使用systemd 创建服务
    • 1.创建一个服务文件,例如 /etc/systemd/system/customize.service
    • 2.启用并启动服务
  • 扩展了解:systemd
  • 总结


前言

在 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命令快捷启动服务。

代码如下:

[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 保存并退出。此时服务配置文件就完成了。
  • 我们可以通过以下命令使自定义服务配置文件生效,相当于告诉系统
    • “ 我更新了服务配置,刷新一下哈!”
  • 系统会重新读取这些配置,我们亦可以通过以下命令使我们的服务:
    • 开机自启
    • 查看状态
    • 手动启动 / 关闭

代码如下:

# 重新加载 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)。

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

期待下次再会!

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CNN核心机制深度解析:卷积池化原理 PyTorch实现经典网络

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文系统讲解CNN核心原理、经典网络架构和图像分类实战,涵盖卷积层、池化层、LeNet/AlexNet/VGG/ResNet设计思想,并提供CIFAR-…

6个月Python学习计划 Day 17 - 继承、多态与魔术方法

第三周 Day 4 🎯 今日目标 理解类的继承和方法重写掌握多态思想及其实际应用了解并使用常见的魔术方法(如 str、len 等) 🧬 类的继承(Inheritance) Python 支持单继承与多继承,常用语法如下&…

抖音怎么下载视频

抖音作为一款短视频社交平台,凭借其独特的短视频形式和丰富的内容,吸引了大量用户。有些用户在欣赏完抖音视频后,想要将其保存下来,以便日后观看。如何在抖音下载视频呢?本文将为您详细介绍抖音视频下载的技巧和方法。…

使用MinIO搭建自己的分布式文件存储

目录 引言: 一.什么是 MinIO ? 二.MinIO 的安装与部署: 三.Spring Cloud 集成 MinIO: 1.前提准备: (1)安装依赖: (2)配置MinIO连接: &…

uni-app 如何实现选择和上传非图像、视频文件?

在 uni-app 中实现选择和上传非图像、视频文件,可根据不同端(App、H5、小程序)的特点,采用以下方法: 一、通用思路(多端适配优先推荐) 借助 uni.chooseFile 选择文件,再用 uni.upl…

正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-12.1 Linux内核启动流程简介

前言: 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用: …

UDP与TCP通信协议技术解析

文章目录 协议基础原理TCP:可靠的面向连接通信UDP:高效的无连接通信 性能特征分析TCP性能表现UDP性能表现 应用场景分析TCP适用场景UDP适用场景 技术实现考量错误处理策略网络资源利用 选择决策框架可靠性需求评估性能要求分析 混合方案设计协议组合策略…

mysql 页的理解和实际分析

目录 页(Page)是 Innodb 存储引擎用于管理数据的最小磁盘单位B树的一般高度记录在页中的存储 innodb ibd文件innodb 页类型分析ibd文件查看数据表的行格式查看ibd文件 分析 ibd的第4个页:B-tree Node类型先分析File Header(38字节-描述页信息…

【优选算法】C++滑动窗口

1、长度最小的子数组 思路&#xff1a; class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {// 滑动窗口// 1.left0,right0// 2.进窗口( nums[right])// 3.判断// 出窗口// (4.更新结果)// 总和大于等于 target 的长度最小的 子数组…

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…

408考研逐题详解:2009年第33题

2009年第33题 在 OSI 参考模型中&#xff0c;自下而上第一个提供端到端服务的层次是&#xff08; &#xff09; A. 数据链路层 \qquad B. 传输层 \qquad C. 会话层 \qquad D.应用层 解析 本题主要考查 OSI 参考模型各层的核心功能、端到端服务的定义。 OSI 参考模型&am…

CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found

Nginx1.24编译时&#xff0c;报LuaJIT2.x错误&#xff0c; configuring additional modules adding module in /www/server/nginx/src/ngx_devel_kit ngx_devel_kit was configured adding module in /www/server/nginx/src/lua_nginx_module checking for LuaJIT 2.x ... not…

自制喜悦字贴

一、想法 据说&#xff0c;把“喜悦”两个字挂在家里显眼的地方&#xff0c;时常看到&#xff0c;就能心情愉悦。刚好最近在学习前端flex布局&#xff0c;用代码实现&#xff0c;导出图片&#xff0c;打印出来&#xff0c;帖在家里&#xff0c;非常nice。现在分享给大家。 二…

每日八股文6.3

每日八股-6.3 Mysql1.COUNT 作用于主键列和非主键列时&#xff0c;结果会有不同吗&#xff1f;2.MySQL 中的内连接&#xff08;INNER JOIN&#xff09;和外连接&#xff08;OUTER JOIN&#xff09;有什么主要的区别&#xff1f;3.能详细描述一下 MySQL 执行一条查询 SQL 语句的…

量化面试绿皮书:6. 烧绳子计时

文中内容仅限技术学习与代码实践参考&#xff0c;市场存在不确定性&#xff0c;技术分析需谨慎验证&#xff0c;不构成任何投资建议。 6. 烧绳子计时 你有两根绳子&#xff0c;每根绳子燃烧需要1小时。但是任何一根绳子在不同点都有不同的密度&#xff0c;所以不能保证绳子内不…

2-深度学习挖短线股1

选短线个股的流程 &#xff08;1&#xff09;数据预处理&#xff0c;根据短线个股筛选标准&#xff0c;给个股日线数据打标。 &#xff08;2&#xff09;模型训练&#xff0c;针对每只股票&#xff0c;训练得到分类模型。 &#xff08;3&#xff09;结果预测&#xff0c;根据训…

【数据分析】探索婴儿年龄变化对微生物群落(呼吸道病毒和细菌病原体)结构的影响

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍1. 混合效应逻辑回归模型2. 随机森林模型3. Maaslin2 分析加载R包数据下载导入数据数据预处理混合效应逻辑回归模型分析微生物群落结构随年龄的变化随机森林模型预测病原体定植Maas…

实战:子组件获取父组件订单信息

最佳实践建议 优先使用 props&#xff1a;适合父子组件直接通信&#xff0c;数据流向清晰复杂场景用 eventBus&#xff1a;跨组件通信推荐使用 mitt 库避免过度使用 $parent&#xff1a;会导致组件耦合度高&#xff0c;难以维护provide/inject 适用于跨层级&#xff1a;如主题…

Spring Security深度解析:构建企业级安全框架

Spring Security深度解析:构建企业级安全框架 本文将深入探讨Spring Security安全框架的核心原理、架构设计和实际应用,帮助开发者全面掌握企业级应用安全防护技术。 目录 Spring Security概述核心架构与原理认证机制详解授权机制详解核心组件分析配置与集成高级特性应用安全…

计算矩阵A和B的乘积

根据矩阵乘法规则&#xff0c;编程计算矩阵的乘积。函数fix_prod_ele()是基本方法编写&#xff0c;函数fix_prod_opt()是优化方法编写。 程序代码 #define N 3 #define M 4 typedef int fix_matrix1[N][M]; typedef int fix_matrix2[M][N]; int fix_prod_ele(f…