在 CentOS 7 上基于 Docker 的 LNMP 部署 Hexo

時間起因是因為之前BLOG沒有備份數據都丟失了,今天在和朋友聊天的時候討論到到底使用Hexo還是用Halo?最后還是想熟悉下這兩種博客的架設和部署方式,每次部署都有各種不同的問題,旨在提升自己的學習認知。以此有機會得到更多大佬們的指導~

因為我是在 CentOS 7 服務器上使用 Docker 部署 Hexo 博客,并結合 LNMP(Linux、Nginx、MySQL、PHP)技術棧。由于 Hexo 是一個靜態站點生成器,生成 HTML 文件后僅需 Web 服務器(如 Nginx)提供服務,因此 LNMP 中的 MySQL 和 PHP 是可選的,適用于需要額外功能(如評論系統或數據庫集成)的場景。本指南詳細、專業且循序漸進,涵蓋了從環境準備、Docker 安裝、Hexo 配置、Docker 容器化、Nginx 配置到可選的 MySQL/PHP 集成的全過程,專為 CentOS 7 定制。其他系統環境有所區別差異還是略有不同,請知悉~


詳細指南:在 CentOS 7 上基于 Docker 的 LNMP 部署 Hexo

1. 前置條件

開始之前,請確保具備以下條件:

  • 一臺 CentOS 7 服務器(物理機或云服務器,如 AWS、GCP 或阿里云),要求:
    • Root 或 sudo 權限
    • 至少 2.4 GB 內存(確保 Docker 運行順暢)。
    • 至少 20 GB 磁盤空間(用于 Docker 鏡像和 Hexo 內容)。
  • 一個 域名(可選,用于通過 URL 訪問博客,例如 example.com)。
  • 對 Linux 命令、Git 和 Docker 概念有基本了解。

2. 準備 CentOS 7 環境

更新系統并安裝必要工具,確保兼容性和安全性。

2.1 更新系統包
sudo yum -y update
sudo yum -y upgrade
2.2 安裝基礎工具

安裝 yum-utilsgit 等實用工具:

sudo yum -y install yum-utils git vim
2.3 禁用 SELinux(可選)

SELinux 可能干擾 Docker。臨時禁用:

sudo setenforce 0

永久禁用,編輯 /etc/selinux/config

sudo vim /etc/selinux/config

SELINUX=disabled 設置,保存后重啟:

sudo reboot
2.4 開放防火墻端口

為 Nginx 開放 HTTP(80 端口)和 HTTPS(443 端口):

sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

若使用云平臺,確保在安全組中開放這些端口。


3. 安裝 Docker 和 Docker Compose

Docker 將用于容器化 Hexo 和 Nginx,而 Docker Compose 用于協調多個容器。

** **#### 3.1 安裝 Docker

**

  1. 添加 Docker 源:
sudo yum-config-manager --add https://download.docker.com/linux/centos/docker-ce.repo
  1. 安裝 Docker:
sudo yum -y install docker-ce docker-ce-cli containerd.io
  1. 啟動并啟用 Docker:
sudo systemctl start docker
sudo systemctl enable docker
  1. 驗證 Docker :
docker --version

** **#### 3.2 安裝 Docker Compose

**

  1. 下載最新 Docker Compose 二進制文件(請查看 官方 GitHub 發布頁面 獲取最新版本,例如 2.20.2):
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86225.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86225.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86225.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Go小技巧易錯點100例》第三十六篇

本期分享: 1.使用gops獲取正在運行的Go進程 2.將靜態文件編譯到Go程序中 3.Go語言通過多重賦值實現變量值交換 使用gops獲取正在運行的Go進程 在 Go 語言開發中,進程診斷和性能分析是保障服務穩定性的關鍵環節。Google 開源的 gops [https://github.…

Idea新UI

輕松上手Idea新UI:開啟高效編程新體驗 在軟件開發領域,IntelliJ IDEA一直以其強大的功能和出色的性能深受開發者喜愛。而其推出的new ui,更是為我們帶來了全新的操作體驗,進一步提升了開發效率。今天,就來詳細講講如何…

QML\QtQuick\QtWidgets適合的場景及其優缺點

在Qt框架中,QML、QtQuick和QtWidgets是三種不同的UI開發技術,各有其適用場景和優缺點。以下是它們的對比分析: 1. QtWidgets 適用場景: 傳統的桌面應用程序(Windows/macOS/Linux)。 需要復雜控件&#xf…

Spring Boot 2.x 項目搭建 (二)

因為Spring Boot 2.x 項目搭建 (一)訪問 start.spring.io 或通過IDE(如IntelliJ IDEA)的Spring Initializr向導創建項目時,只能使用jdk17以上的版本,這里我需要兼容老項目需要JDK1.8,所以進行一…

Python 前端框架/工具合集

前言 Python 本身并不是為前端開發而設計的語言,但確實有一些 Python 框架可以“變相”地用于前端開發,比如生成 HTML、控制前端頁面邏輯,甚至可以直接運行在瀏覽器中。 目標 本文將對常見的使用python實現的前端框架,先做一個…

Swagger 在 Spring Boot 中的詳細使用指南

Swagger 是一個強大的 API 文檔生成工具&#xff0c;在 Spring Boot 項目中主要通過 springdoc-openapi 庫實現。下面我將詳細講解 Swagger 的配置、注解使用和高級功能。 一、基礎配置 1. 添加依賴 在 pom.xml 中添加&#xff1a; xml 復制 下載 運行 <dependency&…

群暉如何開啟及使用ssh:小白用戶上手指南-家庭云計算專家

最近很多用戶希望提供群暉下onlyoffice的安裝服務,但是很多都是萌新小白,不知道怎么啟用ssh和使用ssh客戶端.這里提供簡單的方法,統一答復: 重要的事情說3遍:一定不要自己發揮,全部按說明的來;一定要在內網環境用內網ip訪問;不要用域名和端口號,謝謝各位萌新了!!! 一、ssh啟用…

Ubuntu查看與切換顯示管理器(已測試ubuntu20,ubuntu24)

一級標題 顯示管理器是用戶使用圖形化的登錄界面。 當用戶成功輸入用戶名和密碼后&#xff0c;即可開始使用圖形化界面會話。gdm3和 lightdm 都是顯示管理器。 它們提供了圖形化登錄并處理用戶身份驗證。 查看正在使用的顯示管理器&#xff1a; cat /etc/X11/default-displa…

ROS 2 中 Astra Pro 相機與 YOLOv5 檢測功能編譯啟動全記錄

先記錄大概主要流程&#xff0c;后期有時間了再完善細節以及附上截圖 一、編譯 Astra Pro 相機功能包 1. 清理并編譯相機包 cd ~/Astra_ws rm -rf build/astra_camera install/astra_camera # 清理舊編譯 colcon build --packages-select astra_camera --parallel-workers …

當實體類名和數據庫表列名不一致時不能封裝數據的解決辦法

1. <resultMap> 是什么&#xff1f; 作用&#xff1a;<resultMap> 用來定義數據庫表字段和Java實體類屬性之間的對應關系。 為什么需要&#xff1f; 數據庫字段通常用下劃線命名&#xff08;如 brand_name&#xff09;&#xff0c;而Java類屬性用駝峰命名&#…

window系統上labelImg的安裝與使用

一、window上安裝Anaconda 下載&#xff1a;https://repo.anaconda.com/archive/選擇版本&#xff0c;此次選擇的是Anaconda3-2025.06-0-Windows-x86_64.exe雙擊安裝在 Windows 搜索欄中輸入 Anaconda Prompt 并打開。 二、安裝pyton3.8 wondow環境 在 Windows 搜索欄中輸入…

SSE 流與普通 HTTP 響應的區別

1. 連接特性 特性普通 HTTP 響應SSE 流連接持續時間一次性&#xff0c;請求-響應后立即關閉持久連接&#xff0c;保持打開狀態通信方向單向 (客戶端→服務器→客戶端)單向 (服務器→客戶端)數據格式完整響應體流式文本數據 (text/event-stream) 2. 數據傳輸方式 普通 HTTP 響…

Proteus仿真51單片機控制L298N PWM電機調速

51單片機概述 51單片機是指Intel公司開發的MCS-51系列單片機及其兼容產品&#xff0c;是應用最廣泛的8位單片機系列之一。其名稱來源于該系列的第一款芯片8051。 主要特點&#xff1a; 8位CPU&#xff1a;處理數據寬度為8位 哈佛結構&#xff1a;程序存儲器和數據存儲器分開…

批量將exb文件轉為pdf的實用工具

最近在工作中遇到了一個棘手的問題&#xff1a;需要將大量CAXA電子圖板(.exb)格式的圖紙文件轉換為PDF格式以便于共享和查閱。手動一個個打開轉換不僅效率低下&#xff0c;而且容易出錯。于是&#xff0c;我決定開發一個批量轉換工具來解決這個問題。 使用效果 在實際使用中&…

從C++編程入手設計模式——命令模式

從C編程入手設計模式——命令模式 ? 命令模式是一個用指令封裝請求的優雅方法。換而言之&#xff0c;對于一個復雜的系統&#xff0c;當我們發現&#xff0c;使用一系列的指令&#xff08;Command&#xff09;來操作對象的時候&#xff0c;這個設計模式就會顯得非常的實用。我…

【基礎篇-消息隊列】——如何通過網絡傳輸結構化的數據( 序列化與反序列化)

目錄 一、引入前提二、選擇哪種序列化實現2.1、選擇哪種序列化實現需要權衡的幾個因素2.2、如何選擇哪種序列化實現三、實現高性能的序列化和反序列化四、小結本文來源:極客時間vip課程筆記 一、引入前提 在 TCP 的連接上,它傳輸數據的基本形式就是二進制流,也就是一段一段的…

LINUX 622 SAMBA

SAMBA案例 user01通過wondows或linux在/samba/share 中創建、刪除文件 環境配置 samba安裝 [rootsamba caozx26]# yum install samba -y 已加載插件&#xff1a;fastestmirror, langpacks Loading mirror speeds from cached hostfile 正在解決依賴關系 --> 正在檢查事務…

Linux Sonic Agent 端部署(詳細版)(騰訊云)

&#xff08;因為服務器是Linux的&#xff0c;只是安裝了&#xff0c;并沒有驗證&#xff09; 1、編輯docker-compose.yml文件 在Services下添加Agent sonic-agent:image: "sonicorg/sonic-agent-linux:v2.7.2"environment:- SONIC_SERVER_HOST${SONIC_SERVER_HOST…

SpringCloud學習筆記 - 2、關于Cloud各種組件的停更/升級/替換

文章目錄 前言SpringCloud是什么&#xff1f;SpringCloud 在 2018 年&#xff0c;技術體系SpringCloud 在 2020 年&#xff0c;“移除”了技術體系SpringCloud 在 2024 年&#xff0c;移除了技術體系SpringCloud 2024年&#xff0c;技術體系服務注冊與發現 模塊1、Eureka2、Con…

全面掌握 Nginx的功能和使用方法

從 C10K 到現代云原生 第一章 稀缺性哲學與 C10K 挑戰 Nginx 的誕生并非偶然&#xff0c;它是在特定歷史背景下&#xff0c;對一個嚴峻工程危機的直接而革命性的回應。要真正理解 Nginx 的設計精髓&#xff0c;我們必須回到 20 世紀末&#xff0c;探究那個催生了它的時代性難題…