时间起因是因为之前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;探究那个催生了它的时代性难题…