服務器 | 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
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84142.shtml
英文地址,請注明出處:http://en.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…