系列文章目錄
虛擬機 | 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)。
各位再見!這里是 鱷魚桿的空間,釣……鱷魚的桿兒!
期待下次再會!
愿你的每一次垂釣之旅都能滿載而歸。