Skip to content

捏捏学长的扫盲课:基于云服务器的博客搭建(Hexo)

  • 遇到问题可以看看尾部的问题与解决部分
  • 如果实在没有云服务器的话,也有其他方案,查看尾部的非云服务器方案部分
  • 文中部分代码因为 PDF 的原因导致无法完全显示或者复制失败,可以参考在线版本(最新的更新也会发布在这里)
  • 输入代码请检查空格是否正确

目录

前言

某人当年受到启发说要在学校里开博客搭建活动,但是受制与时间以及学校流程的麻烦,一直没有办下来。为了不让这个想法成为遗憾,故而决定赶紧把活动办下来

课程介绍

👨‍💻 捏捏学长的扫盲课:基于云服务器的博客搭建(Hexo)

对博客搭建感兴趣,却不知从何入手?无论你是编程小白还是技术小将,来这里了解如何在云服务器上打造属于你的网站吧!从注册服务器到配置部署、从 Markdown 到 Hexo,我们将从零起步,一步步帮你建立自己的博客,轻松展示你的兴趣和才华!快来加入,一起为未来打下技术基础吧!

本课程将涉及的内容

  • 服务器的挑选和购买
  • Linux 系统的简单使用
  • nodejs 环境搭建
  • 博客的撰写与部署(基于 Hexo 框架)

时间

大约 3 小时

参加对象

大一大二的同学,无需任何技术基础,只需带上你的好奇心!

需要准备的材料

  • 你的电脑(Win,Mac 或 Linux 皆可,活动场地尽量会安排插座)
  • 云服务器(需要提前购买,群内有购买指南)

1 服务器的的介绍以及云服务器的选购建议

1.1 什么是服务器?

服务器负责提供现在的几乎全部的网络服务,从 QQ 聊天,校园网站,到游戏,AI 等等,都需要服务器的支持

我们购买服务器能干什么?

  • 搭建博客
  • 部署网站
  • 搭建游戏服务器(MC,terraria)
  • 聊天服务器
  • 搭建虚拟内网(基于 WireGuard)
  • 作为自己的云盘
  • QQ 机器人
  • 训练自己的 AI
  • 搭建自己的 RSS 订阅服务

……

1.2 服务器选购建议

1.2.1 云服务器的配置解读

影响一个服务器的主要性能是:CPU,内存,带宽(流量),硬盘

一个典型的云服务器展示案例如下

1730513050420

  • CPU:决定了服务器的计算能力,小服务器常见有 1 核,2 核,4 核等
  • 内存:决定了服务器的运行速度,决定服务器同时能跑多少服务,常见有 1G,2G,4G 等
    • CPU 和内存一般会放到一起合称规格
  • 带宽:决定了服务器的网络传输速度,1M 带宽 = 128kB/s
    • 流量:部分服务器会限制每月的流量,比如 100G,1000G
  • 硬盘:存放服务器系统以及服务的数据,一般来说服务器系统大小为 5G 左右,如图
    1730510878470
  • 镜像:服务器的操作系统,常见的有 Ubuntu,CentOS,Debian 等 Linux 发行版,也有 Windows Server 这种
  • 类型:不同的运营商会给服务器取不同的名字,比如阿里云的 ECS,华为云的 Flexus 这些产品对不同的业务有些针对性,但对我们来说没有太大的区别

1.2.2 博客服务器配置需求

我们这次按照搭建博客的需求来选购服务器

1 核 1G 的服务器也能跑博客,但是可能会遇到比较明显的性能瓶颈。

1G 内存由于换算关系实际上只有大概 0.9G 左右的内存,系统自带的服务器大概需要 200-300MB 的内存,剩下的内存就不多了

1730511977912

推荐 2 核 2G 的服务器,这种服务器套餐种类也会多一点

带宽选择 1M 的话也可以运行博客,但是会比较慢,以 Hexo 初始博客为例,页面内容大概为 200+kB

1730511259661

这样会导致明显的等待,所以还是建议 2M 带宽起步,考虑到国内带宽价格昂贵,太高的带宽性价比并不高

硬盘的话,基本上都是够的,不用太多考虑

1.2.3 国内主流云服务器提供商一览

最近双十一,部分厂商的活动价格还是挺实惠的

  • 华为云
    • 1730465247805
    • 华为云有非常便宜的 36元/年21元/3个月 的套餐,对于只想简单尝试的话很不错
    • 同时这里要到了代理折扣,华为云新用户使用 这个链接 关联代理商,购买服务器可以享受大约 9 折的返款(5 个工作日左右,找捏捏要返款)
    • 华为云活动链接
  • 阿里云
    • alt text
    • 阿里云服务器活动链接
    • 阿里云那个 99 元/年的服务器续费也是 99/年,比较实惠,长期使用的话很推荐
    • 阿里云有学生 300 元优惠券,可以用于购买服务器(目前测试好像是不能买便宜的服务器了),领取地址1730467561188
  • 腾讯云

其他的话国内还其他云服务器厂商,由于优惠程度和使用体验考虑,暂不介绍,有兴趣可以自己去了解

以下为其他云服务器厂商的活动链接以及推荐的云服务器

1.3 服务器购买

购买服务器的时候会要求你选择服务器类型,这里推荐 Ubuntu 22

具体配置参考如下

华为云

地区选择近一点的,这里选择上海,镜像选择 Ubuntu 22.04 ,其他的基本不用修改

1730466109395

PS:我已经购买了华为云的服务器了,无法打开同样商品的选购页面,所以这里展示的是另外配置的服务器

阿里云

地区选择上海,镜像选择 Ubuntu 22.04 ,其他的基本不用修改

阿里云部分服务器有南京地区的服务器,延迟会更低

1730466185398


腾讯云也类似


然后确认订单就可以了,部分服务器运营商会要求你先实名,按操作做就行了

然后等待服务器初始化,就 OK 了

华为云 Flexus 界面如下

1730466464153

1.4 服务器的设置

1.4.1 获取服务器 ip

服务器初始化完成后,会给你一个服务器的公网 IP 地址,这个 IP 地址就是你的服务器的地址

1730769786341

1.4.2 设置服务器密码

Ubuntu 系列 root 默认是没有密码的,也就不能登陆,需要先手动设置密码

1730769813376

设置密码,然后确定重启

1730769888786

1.4.3 设置服务器防火墙/安全组

防火墙和安全组是用来限制服务器的访问的,用来保护服务器的安全

早期云服务更多使用的是防火墙,但是配置麻烦,想要在多个服务器上配置相同的防火墙规则需要一遍一遍手动配置。安全组是一种更加灵活的方式,设定好一个安全组(防火墙)后,可以直接应用到多个服务器上,省去了重复配置的麻烦

华为云安全组设置

首页登陆 -> 右上角控制台 -> 在我的资源这一栏找到华为云Flexus云服务,点击前往控制台

1730597993721

进入控制台选择实例

1730597776382

进入实例概览,点击服务器操作中的更改安全组,选择新建安全组

1730597908472

进入安全组管理界面,点击创建安全组

名称,描述随意

1730598229045

创建完成后,点击进入管理页面

1730770211045

点击添加规则,具体如下,确定

1730598378268

然后点击快速添加规则,添加如下规则,开放常用端口

1730598306221

创建完成后回到服务器管理界面

1730598446318

刷新之后就能看到刚才的安全组了

选择,确定

验证能否访问

cmd(windows) / bash(Linux) 中输入

bash
ping 服务器ip
# 例如 ping 114.44.94.124

请把这里的 114.44.94.124 替换成你的服务器 IP,不要照抄!

如果出现如下的输出,说明你的服务器已经可以访问了

bash
PING 114.44.94.124 (114.44.94.124) 56(84) bytes of data.
64 bytes from 114.44.94.124: icmp_seq=1 ttl=52 time=15.9 ms
64 bytes from 114.44.94.124: icmp_seq=2 ttl=52 time=9.54 ms
64 bytes from 114.44.94.124: icmp_seq=3 ttl=52 time=9.54 ms

如果一直卡在第一行,说明你的服务器还不能访问,检查一下你的安全组/防火墙设置

2 云服务器的初始化和基本操作

2.1 准备工具

本教程大部分操作使用 VsCode 完成

下载 VsCode

安装插件,在拓展商店直接搜索(返回的第一个就是)

  • Chinese (Simplified):中文插件 1730470348201
  • remote-ssh:远程连接插件 1730470363081
  • Markdown All in One:md 编辑插件 1730470335277

重启 Vscode 来应用配置

2.2 连接服务器

点击左边的远程资源管理器

1730783091990

然后点击连接到主机,输入

bash
ssh root@服务器ip

如何查看服务器 IP?

在服务器管理页面寻找 x.x.x.x 类似的数字串,比如113.56.74.123

注意:长相类似 192.168.x.x 或者10.x.x.x 的是局域网 IP,不是公网 IP

如下图所示

1730470533272

更新 SSH 配置文件这里选择第一项

1730470558450

windows 用户可能选择如下,也是选择第一项

1730514090050

windows 用户会多一个选项 对方服务器 ,选择Linux

右下角会跳出来配置成功的选项,你也可以在左侧远程资源管理器看到你的服务器

1730470598629

1730514255351

连接服务器

1730514283205

然后输入密码,成功登陆服务器的话如下所示

1730470743387

选择打开文件夹,选择默认的/root就行

1730514375436

选择信任作者

1730470799611

这样你就可以看到服务器上的文件了

1730515423259

这里暂不介绍这些文件有什么用,后续如果开设 Linux 相关的课程的话会详细介绍

2.3 初识服务器

在左边点击新建文件夹,我们新建一个blog文件夹

1730470886382

然后右键点击blog文件夹,选择在终端中打开

1730515610511

会打开命令行环境,如图

1730515631755

你可以用Ctrl + J 快捷键来开启和关闭终端

我们来看一下命令行的这个输出

bash
root@hcss-ecs-b26d:~/blog#
  • root:当前登陆的用户
  • hcss-ecs-b26d:服务器的主机名,由服务器提供商随机生成
  • ~/blog:当前所在的目录,~ 代表用户的家目录,也就是/root
  • # 代表当前用户是 root 用户

旁边还有个光标意味着你能够输入什么

尝试 ls ls ../ ls -a ../clear 命令

对于本文所有的命令,运行的时候请确保终端里面有显示 ~/blog 这个符号,如果没有请先输入 cd ~/blog 进入到 blog 目录

2.4 服务器初始化

2.4.1 更新软件包

运营商给我们提供的服务器是某一个时间的某一个发行版,但是随着时间流逝,开源社区的软件会更新一些版本,所以我们第一件做的事情是把软件包列表更新一下

  • 获取最新的软件功能
  • 修复软件的漏洞

输入

bash
sudo apt update

更新软件包列表,会看到类似如下的输出

1730516569869

安装常用软件

bash
sudo apt install vim openssh-server git lnav tree neofetch \
glances btop zsh ca-certificates curl gnupg -y

若运行失败,可以参考在线版本

1730521976837

3 nodejs 环境的搭建

Hexo 框架使用 nodejs 来运行,所以我们需要安装 nodejs

3.1 添加 nodejs 的 APT 源

这一部分比较复杂,第一次接触的花可以不用深入理解,能跑通就行

(可以直接用第三节结尾处的整合代码)

导入 nodejs 源的 GPG 密钥

bash
# 创建存放 GPG 密钥的目录
sudo mkdir -p /etc/apt/keyrings
# 导入 GPG 密钥
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

添加 nodejs 的 APT 源

bash
# 添加 APT 源
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | \
sudo tee /etc/apt/sources.list.d/nodesource.list

3.2 安装 nodejs

更新并安装 nodejs

bash
sudo apt update
sudo apt install nodejs -y

查看 nodejs 和 npm 版本

bash
node --version
npm --version

npm 是 nodejs 的包管理工具,我们可以使用 npm 来安装一些 nodejs 的包

对于 nodejs 包你可以理解为 C++的库或者头文件,不过是需要下载的

由于 npm 的下载地址在国外,访问特别慢,我们可以设置 npm 的镜像源

bash
# 设置 npm 镜像源为淘宝镜像
npm config set registry https://registry.npmmirror.com

第三节代码整合如下

bash
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt update
sudo apt install nodejs -y
node --version
npm --version
npm config set registry https://registry.npmmirror.com

若运行失败,可以参考在线版本

4 Hexo 的安装与配置

Hexo 是一个快速、简洁且高效的博客框架,基于 Node.js 开发,支持 Markdown 语法,可以快速生成静态网页

Hexo 官网

4.1 安装 Hexo

bash
npm install -g hexo-cli

4.2 Hexo 的初始化

bash
# 将当前目录作为博客目录初始化
hexo init ./
# 安装依赖
npm install

初始化之后 blog 目录下会多出一些文件,如下

bash
# 以下内容不需要输入到命令行中
.
├── _config.landscape.yml # 竖版主题配置文件
├── _config.yml # 主配置文件
├── node_modules # 依赖包
├── package-lock.json # 依赖包锁定文件
├── package.json # 依赖包配置文件
├── scaffolds # 模板文件
├── source # 博客源文件
└── themes # 主题文件

有关 _config.yml 的配置可以参考Hexo 官方文档

4.3 启动博客服务器

启动 Hexo 博客服务器

bash
hexo server

打开浏览器输入http://服务器ip:4000,就可以看到 Hexo 的默认页面了

1730730375046

如果无法访问,请参考#博客无法访问

5 博客的撰写与启动

编写博客前,我们需要先了解一下 markdown

5.1 Markdown 的基本语法

markdown 是一种轻量级的标记语言,可以快速的将文本转换成 HTML

常用于撰写博客、文档、笔记等

openai 这一类 GPT 模型也会使用 markdown 来输入和输出

在 Hexo 中,我们使用 markdown 来撰写博客,然后 Hexo 会将 markdown 转换成 HTML,展示在网站上,相比于直接编写 HTML,markdown 更加简洁和方便

查看下面的 markdown 代码

markdown
# 一级标题

## 二级标题

> 引用

- 无序列表
- 无序列表
- 无序列表

1. 有序列表
2. 有序列表
3. 有序列表

**加粗**

_斜体_

[链接](https://www.baidu.com)

![图片](https://www.baidu.com/img/bd_logo1.png)

`代码句`

    ```bash
    # 代码块
    ```

上面的 markdown 代码会渲染成如下的效果


因为标题会影响到整体的排版,所以这里不展示效果

引用

  • 无序列表
  • 无序列表
  • 无序列表
  1. 有序列表
  2. 有序列表
  3. 有序列表

加粗

斜体

链接

图片

代码句

bash
# 代码块

markdown 实现了 HTML 中的大部分功能,但是更加简洁,更加易读。更多的 markdown 语法可以参考下面的链接

5.2 添加博客

在 Hexo 中,我们可以使用 markdown 来撰写博客

使用 Hexo 的命令来创建一个新的博客

bash
hexo new "Hello Hexo"

然后你就会在 vscode 左边文件管理器的 blog/source/_posts 目录下看到一个Hello-Hexo.md 文件

1730730566078

点击打开编辑文件,然后保存文件,刷新网页

1730730584841

1730730605122

博客更新啦!!

  • 如果网页没有刷新请在浏览器使用快捷键 Ctrl + shift + r 强制刷新
  • 如果网页挂了请确保终端的 hexo server 一直在运行

5.3 使用 pm2 部署博客

使用 hexo server 命令启动的博客是在前台运行的,如果关闭终端,博客也会关闭

pm2 是一个进程管理工具,可以让我们在后台运行博客

安装 pm2

bash
npm install -g pm2

将博客设置为后台运行,并开始运行

bash
pm2 start hexo --name hexo_blog -- server

后台启动博客之后,终端看不到输出,但是博客还是在运行的,你也可以在终端继续运行其他命令

查看博客状态

bash
pm2 status

停止博客

bash
pm2 stop hexo_blog

重启博客

bash
pm2 restart hexo_blog

6 拓展&进阶

虽然博客跑起来了,但是似乎还不能让人满意

1730773744609

或许你还想要更多?

  • github 使用
  • 搭建虚拟内网,在外也能访问家里的设备
  • 私人 GPT QQ 问答机器人
  • vitepress 在线知识库搭建
  • BBS 论坛搭建
  • 数据挖掘浅尝
  • docker 与虚拟化
  • NLP 自然语言处理浅尝

Sir,this way please

附 1:问题与解决

当你遇到运行失败的时候,请查看终端的输出,看看与下面的问题是否相似

管道错误

在 ssh 连接的时候可能会连接失败并出现类似如下错误

bash
xxxx试图写入的管道不存在xxxx

这个问题是 windows 的 ssh 客户端的问题,解决方法可以参考下面的链接

博客无法访问

  1. 检查浏览器中的地址是否正确,确保是http开头而不是https开头
  2. 检查服务器是否开启了 4000 端口,请到服务器管理面板上查看对应端口是否开启

博客没有更新内容

  1. 刷新网页(浏览器快捷键 Ctrl + shift + r
  2. 查看服务器上的文件在编辑后是否保存(Vscode 保存快捷键 Ctrl + s
  3. 重启博客服务器

hexo 初始化失败

报错类似

bash
INFO  Validating config
FATAL ~/blog not empty, please run `hexo init` on an empty folder and then copy your files into it
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html

这个问题是因为你的 blog 文件夹不是空的,解决方法是删除 blog 文件夹下的所有文件(请提前备份文件,服务器上没有回收站)

bash
rm -rf ~/blog/*
cd ~/blog

附 2:非云服务器方案

如果没有云服务器的话,这里有一些替代方案

华为云电脑

前两天领取的华为云电脑也是可以

华为云电脑领取链接

进入云电脑,点击下面这个终端工具(Terminal Emulator)

1730771412120

复制下面的代码到终端中

bash
# 更新软件包
sudo apt update
echo "code code/add-microsoft-repo boolean true" | sudo debconf-set-selections
# 安装 wget 和 gpg
sudo apt-get install wget gpg
# 下载微软的 GPG 密钥
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
# 安装 GPG 密钥
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
# 添加 vscode 的源
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" |sudo tee /etc/apt/sources.list.d/vscode.list > /dev/null
# 删除 GPG 密钥
rm -f packages.microsoft.gpg
# 更新软件包列表
sudo apt install apt-transport-https
sudo apt update
sudo apt install code

或者参考 Vscode 官方文档

在 Linux 上安装 Visual Studio Code

创建博客文件夹

bash
mkdir ~/blog
cd ~/blog

在左边所有应用程序 -> 开发 -> Visual Studio Code 打开 Vscode

然后就可以从第二节开始操作了,需要注意的是:

  • 不需要安装 remote-ssh 插件
  • 跳过 2.2 连接服务器 这一步(因为你已经在服务器上了)
  • 打开文件选择 blog 17307725288261730772276578

与在云服务器上不同的是,你只能在云电脑的浏览器中看到你的博客,无法在外部访问,教程中 服务器ip 的地方请用 localhost 代替

1730772722371

本地安装 Hexo

windows 上也是可以安装 Hexo 的,只要需要安装 nodejs 和 git。但是由于 windows 的特性,这个过程将会异常麻烦,如果你不擅长捣鼓电脑,甚至可能会把环境搞得一团糟

在 Linux 只需要敲命令就可以了,在 windows 上要考虑得就多了

所以我建议你们都把 Windows 换成 Linux(推荐 Ubuntu)

附 3:参考资料

Copyright © 2022 田园幻想乡 浙ICP备2021038778号-1