关于静态博客

通常来讲,建立个人博客有2种方式:

第一,直接在第三方博客平台注册博客空间,如:博客园,简书,CSDN等,这种方式建立的博客,所有数据都存放在博客平台。

第二,自建博客系统,这种方式就是自己实现与博客平台相同的功能,需要涉及多个部分,如:购买云主机,注册域名,CDN,图床等。

自建博客系统也分为2种方式:

其一,使用传统方式建立博客系统,整个系统包含多个组件,如:数据库,管理后台,前台博客展示,有诸多非常优秀的开源方案可以选择,如:WordpressHalo等等。由于前端博客页面是动态从数据库查询数据来渲染展示的,可以把这种传统的博客称之为动态博客。即:所有博客相关的数据都保存在数据库中,对数据库是强依赖。

其二,采用静态博客框架将静态文件(如:Markdown语法格式的文件)转换为HTML文件,这样可以直接将这些动态生成的HTML文件布署到Web服务器即可,不需要依赖数据库,当然也不需要管理后台,所有博客文章都是静态文件。目前已经有许多优秀的静态博客框架,如:HugoHexo等等。把这种无需依赖数据库系统,也不需要管理后台建立的博客称为静态博客。

当然,所谓“动态博客”和“静态博客”,他们各有利弊。相比较而演,动态博客的使用门槛低,只需要关注写博客本身即可。而静态博客的搭建需要一定的编程技能基础,但是定制非常灵活,数据管理和备份也非常方便。

环境准备

先安装好Node.js,并配置使用淘宝镜像源。

npm config set registry https://registry.npm.taobao.org

安装Hexo

执行如下命令安装Hexo:

npm install -g hexo-cli

初始化

执行如下命令初始化博客:

# 初始化一个名称为iblog的博客目录,将来所有关于博客的参数设置,以及写博客文章都在该目录下进行
hexo init iblog
cd iblog
npm install

完成上述操作后,在博客文件夹下将会看到如下目录结构:

.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes

themes目录保存主题相关的文件,所有安装的主题都保存在该目录下。

source目录保存博客文章静态文件,其中 _drafts保存草稿,_posts保存正式文章,这可以在新建资源时指定类型。

_config.yml是博客的全局配置文件(注:通常主题也会有一个名为 _config.yml的配置文件)。

至此,一个静态博客的基本基本雏形已经完成了,接下来则需要对博客进行主题配置,并开始写博客文章了。

配置主题

主题决定了博客的展示样式和支持的功能。

安装hexo-theme-3-hexo主题。

主题详细配置:3-hexo使用说明

写博客

在博客根目录下执行如下命令新建一篇博客:

hexo new post "这是第一篇静态博客文章"

生成静态页面

写好文章后,在博客根目录下执行如下命令生成静态页面:

hexo generate

执行完上述命令之后,将会在博客根目录下生成一个名为 public的目录,该目录保存着动态生成的HTML文件,将 public目录下的内容托管到nginx即可访问。

在本地写博客时,可以在博客根目录下执行 hexo server命令,启动本地Web服务进行查看。

一些常用的插件

  • hexo-deployer-rsync :通过rsync将本地生成的静态文件上传到服务器指定目录,执行命令 hexo deploy时调用该插件
  • hexo-deployer-git:将本地生成的静态文件上传到指定git仓库,执行命令hexo deploy时调用该插件

如何搭建博客编辑环境

静态博客本质上只是一个文本文件,所以理论上只需要一个文本编辑器即可。但是为了方便调试,最好还是在新的主机上安装如下环境,会给写博客带来比较好的体验。

  • 安装Node.js并配置使用国内镜像源(本站点使用的Node版本为v16.15.1
  • 安装Hexo框架
  • 安装一个顺手的Markdown编辑器
  • 安装Git客户端(将本地写的博客文章保存到远程Git仓库)

每次写新的博客文章时,从git仓库拉取最新的博客数据,在博客根目录下执行如下命令安装依赖:

npm install

在博客根目录下执行如下命令创建一篇新的博客文章:

hexo new post "博客文章标题"

编辑博客文章并保存

在博客根目录下执行命令:

# 简写:hexo s
hexo server

在本地启动Hexo框架服务器进行调试预览。

将新写的博客文章提交到git仓库。

最后在博客根目录下执行如下命令将最新的博客文章发布到Web服务器(本质:重新生成静态文件,并上传到Web服务器目录)。

# 简写:hexo d
hexo deploy

Hexo常用命令

# 初始化博客目录
hexo init 博客名称 # 新建博客文章:执行该命令后将会在博客根目录/source/_posts路径下新建一个markdown文件
# 编辑该markdown文件即可
hexo new post '文章标题' # 将markdown文件转换为html页面(保存到博客根目录/public路径),将来布署到web服务器的是这些转换后的html页面
hexo generate

hexo g # 启动本地Web服务器,默认启动在4000端口,打开浏览器即可看到整个博客站点的所有文章
hexo server

hexo s # 将博客根目录/public路径下转换生成的html页面上传到指定主机
# 这个功能需要先在博客根目录/_config.yml文件配置布署参数,如下示例将通过rsync将文件上传到指定服务器目录
# deploy:
# type: rsync
# host: 192.168.10.122
# user: zhangsan
# root: /data/www/html
hexo deploy

hexo d # 清空博客根目录/public路径下的所有数据
hexo clean

可以将上述命令写一个脚本中,方便调用。

如下脚本示例可用于一键布署最新博客站点(deploy.sh):

#!/bin/bash
hexo clean
hexo g
hexo d

基于Hexo搭建静态博客的更多相关文章

  1. 使用github和hexo搭建静态博客

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 终于写这篇文章了,这是我使用github和hexo搭建博客的一些心得,希望能给大家一点帮助.少走点弯路.刚接触github,只是用来存项目的版本, ...

  2. Hexo搭建静态博客踩坑日记(二)

    前言 Hexo搭建静态博客踩坑日记(一), 我们说到利用Hexo快速搭建静态博客. 这节我们就来说一下主题的问题与主题的基本修改操作. 起步 chrome github hexo git node.j ...

  3. Hexo搭建静态博客踩坑日记(一)

    前言 博客折腾一次就好, 找一个适合自己的博客平台, 专注于内容进行提升. 方式一: 自己买服务器, 域名, 写前端, 后端(前后分离最折腾, 不分离还好一点)... 方式二: 利用Hexo, Hug ...

  4. 在GitHub上使用Hexo搭建静态博客

    搭建静态博客须要一个前提是电脑上有安装git而且有github帐号,这个不懂能够看廖雪峰先生的git教程 1.下载nodejs.在官网上能够下载 2.使用git进入你新建的一个目录,输入命令 npm ...

  5. hexo搭建静态博客

    1. 环境环境 1.1 安装Git 请参考[1] 1.2 安装node.js 下载:http://nodejs.org/download/ 可以下载 node-v0.10.33-x64.msi 安装时 ...

  6. 基于Hexo搭建个人博客网站

      ## 准备工作 首先下载[nodejs](https://nodejs.org/en/download/),一路next安装即可.验证是否安装成功: ```bash node -v # 输出 v1 ...

  7. Hexo搭建静态博客站点

    什么是Hexo? Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页. 本文将介绍如何在没有域名和云主机的 ...

  8. hexo 搭建静态博客 + Next 主题配置

    参考手册 HEXO:https://hexo.io/zh-cn/ NEXT:http://theme-next.iissnan.com/ 安装hexo npm install hexo-cli -g ...

  9. Github+Hexo搭建静态博客

    开始 在安装hexo之前,必须确认你已经安装了Node.js和Git,并且注册了一个Github账号. 1.创建Github仓库 1) 仓库名为xxx.github.io 创建一个以"用户名 ...

  10. 使用 Hexo 搭建静态博客

    目录 Hexo 简介 什么是 Hexo? Hexo 安装 Hexo 建站 Hexo 配置 Hexo 自定义主题 Hexo 写作 Hexo 服务器 Hexo 生成与发布 一键部署 Hexo 站点到 gi ...

随机推荐

  1. ES6中的数组reduce()方法详解

    reduce() 方法对数组中的每个元素执行一个由我们提供的reducer函数(升序执行),将其结果汇总为单个返回值. 1. 语法reduce说明 arr.reduce(callback(accumu ...

  2. 从 C# 崩溃异常 中研究页堆布局

    一:背景 1.讲故事 最近遇到一位朋友的程序崩溃,发现崩溃点在富编辑器 msftedit 上,这个不是重点,重点在于发现他已经开启了 页堆 ,看样子是做了最后的挣扎. 0:000> !analy ...

  3. HDU1114 Piggy-Bank (完全背包)

    完全背包模板,和01背包相比不用倒推,因为一种可以选多个. 这道题求最小,dp数组初始化为无穷即可. 1 #include<iostream> 2 #include<cstring& ...

  4. DVWA File Upload level high 通关

    由于level 是 high 1.代码审计 <?php if( isset( $_POST[ 'Upload' ] ) ) { // Where are we going to be writi ...

  5. Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类

    一.多环境配置 在工作中,对于开发环境.测试环境.生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配 ...

  6. EFCore (二)之 跟踪实体

    核心 SaveChanges() "已分离"和"未改变"的实体,SaveChanges()忽略: "已添加"的实体,SaveChanges( ...

  7. 备份 MySQL 的 shell 脚本(mysqldump版本) shell脚本

    #!/bin/bash # 备份 MySQL 的 shell 脚本(mysqldump版本) # 定义变量 user(数据库用户名),passwd(数据库密码),date(备份的时间标签) # dbn ...

  8. 删除数组里含有a的元素,并且将null值放在后面

    想去掉里面含有a的元素,并将null放在后面.放在后面就是往后移,其他值往左移 1 public static void main(String[] args) { 2 //自定义的一个数组 3 St ...

  9. python学习笔记---流程控制

    二.流程控制 2.1选择结构与语句 2.1.1 最简单的if语句 注意:if语句后边必须加上冒号 满足条件后.可以执行多条语句. #最简单的if语句 print("请输入一个既能整除2,又能 ...

  10. Codeforces Round #827 (Div. 4) A-G

    比赛链接 A 题解 知识点:模拟. 时间复杂度 \(O(1)\) 空间复杂度 \(O(1)\) 代码 #include <bits/stdc++.h> #define ll long lo ...