MENU

在服务器上搭建 Hexo 博客网站——简明教程

2022 年 07 月 10 日 • 科技

在前几天,我搭建了我的另一个博客网站,选用的是 Hexo 博客框架。为了给广大想搭建自己的博客网站的小伙伴们提供参考,也为了让我能够记住搭建的操作流程,我决定推出这篇简易教程。

🔊 重要:本文所用 Linux 版本为 Debian 11。并且 apt 是 Debian 及其衍生 Linux 的软件包管理器,如果你的系统不是 Debian,那你可能要自行查找你所需要的软件包管理命令。

一、GitHub 还是 VPS

通常来说,Hexo 相比于其他博客框架最大的优势就是轻量——轻量到可以部署在 GitHub 或者其他能托管静态网页的平台上。用把 Hexo 源文件放在自己的电脑上,生成的静态文件部署到 GitHub 上这一方法,甚至可以实现零成本建站。相比之下,如果你用其他博客框架建博客网站,租用一个 VPS 服务器的费用就是就是必须的花销,如果你恰好选择的是 WordPress 这种对服务器配置要求对较高的建站框架,那你还得要租用一个配置较好的 VPS 服务器。

看完上面一段话,再看我这一章节的标题,你可能会觉得有点奇怪——GitHub 还是 VPS?为什么要纠结这两个东西?难道不是哪个成本低选哪个?为什么要多此一举加一个要钱的 VPS?

我还是建议你把 Hexo 搭建在 VPS 上的原因其实很简单——GitHub 服务器毕竟在境外,对于中国大陆的访客来说,访问你搭在境外服务器的网站加载速度会比较慢。

二、Linux - 纯命令行

💬 备注:这个章节是全文介绍最详细的章节,有可能你并不想用纯命令行搭建 Hexo,但是我还是建议你看完这个部分。

1、准备安装

Hexo 是基于 Node.js 的博客框架,很自然地,你在搭建 Hexo 之前需要安装 Node.js。在 Debian 11 中,你可以用 apt 命令直接安装 node.js,作为 Node.js 的包管理

#安装 node.js
sudo apt install -y nodejs

安装后可以用 node -vnpm -v 查看是否安装成功。

但是在不那么新的 Debian 系统中,例如 Debian 9 你可能无法直接用 apt 命令安装,这时候你需要使用以下命令将 PPA 存储库添加到系统,再用 apt 命令安装。

#将 PPA 存储库添加到系统,可以将 setup_18.x 替换为最新版本的 NodeJS
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
#安装 node.js
sudo apt install -y nodejs

2、开始安装

🔊 重要:本节中使用的域名需要你提前购买好,并且有一个指向你的服务器的 A 记录。

2.1 Hexo 安装

使用 npm 命令安装 Hexo,等待进度条走完,当你看到”added 60 packages, and audited 61 packages in 6s“提示时,代表安装完成。如果你不确定是否安装成功,可以用 hexo -v 检查,如果有值返回,代表成功。

#安装 Hexo
sudo npm install hexo-cli -g

为了让后续初始化 Hexo 命令成功执行,你需要为你的 Hexo 创建一个新文件夹,文件夹名字按喜好自选。

#创建文件夹
mkdir 你的文件夹名

使用 cd 文件夹名 进入刚刚创建的 Hexo 文件夹,并初始化 Hexo,让系统在这个文件夹内创建 Hexo 运行所需要的模板文件。

#初始化 Hexo
hexo init

等待进度条走完,在初始化完成后,你应该能在 Hexo 文件夹内看到如下文件、文件夹:

  • _config.yml
  • _config.landscape.yml
  • node_modules
  • package-lock.json
  • package.json
  • scaffolds
  • source
  • themes

其中,_config.ymlsource/themes/ 这个三个文件/文件夹值得你多注意。其中 _config.yml 是博客的基本配置文件,你可以在这个文件里修改博客的基本信息,比如博客名、博客作者、博客网址;博客中的文章等用户资源都存放文件夹 source/ 中;文件夹 themes/ 是存放博客主题文件的文件夹,如果你要修改主题,你就需要把所下载的主题文件放在这里。

现在模板文件已经创建完成,你可以通过 hexo g 命令让 Hexo 根据模板文件生成静态网页了。系统会在 Hexo 文件夹内新创建一个 public/ 文件夹,你可以在这个文件夹内看到生成的静态网页相关文件。

如果你想立马预览网页,使用 hexo s 启动 Hexo 服务端,在浏览器打开 服务器IP:4000 预览网页,不过此步骤需要你提前打开服务器 4000 端口,并保证 4000 端口没有被其他服务占用。

#生成静态网页
hexo g
#启动 Hexo 服务端
hexo s

2.2 Nginx 安装和配置

现在,你已经完成了 Hexo 博客的安装以及博客静态网页的生成,你甚至能在浏览器打开你的网页,但是现在还有一个小小的问题存在 —— 你的网站没有域名。

要解决这个小问题,你只需要完成几步简单的配置工作。直接使用 hexo s 命令启动 Hexo 服务使用的其实是 Node.js 的内置服务端,由于配置繁琐等原因,我们通常会选择用 Nginx 来代替 Node.js 作为服务端。前面讲到,在使用 hexo g 命令后,在本地会生成一个 public/ 文件夹,里面有我们博客网页所需要的文件。

所以简单来说,你只要把 Nginx 配置文件中的 root 改成 public/ 文件夹路径就行。

首先安装 Nginx,直接用 apt 命令安装就行。

sudo apt install -y nginx

等待几分钟直到安装完成。在安装完成后,用 nano 命令修改 Nginx 默认配置文件,目录为 /etc/nginx/sites-enabled/default

#编辑 Nginx 配置文件
nano /etc/nginx/sites-enabled/default

把 root 这一行改成 public/ 文件夹目录,注意最后不要加斜杠;在 server_name 填上你的域名,记得把那个下划线删了。

root /home/hexo/blog/public;                    #这里改成你的文件路径,注意最后没有斜杠
index index.html index.htm index.nginx-debian.html;
server_name aaa.mcu.edu.kg                        #这里改成你的域名

在修改完成后,按 Ctrl + X 退出编辑,使用 service nginx restart 重启 Nginx 服务。等待一小会儿,打开浏览器,输入你的域名,你就可以看到 Hexo 初始网页了。

二、Linux - aaPanel

1、准备安装

本章标题中的 aaPanel 是宝塔面板的海外版,它在功能和界面上和原版宝塔面板是完全一样的,但是相比于原版最大的优点是在登录时不需要绑手机,代价就是 aaPanel 没有中文界面。在 aaPanel 安装时要注意一点,如果你看到 “Do you need to enable the panel SSL”的提示,记得选择“n”项。

你也可以选择直接安装宝塔面板,使用宝塔面板安装 Hexo 同样可以参考本教程。

#安装 aaPanel
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh forum
#安装宝塔面板
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh ed8484bec

等待一段时间,直到出现安装完成的提示,如下图。红框内的就是你的 aaPanel 的控制面板地址、用户名和密码。复制面板地址到浏览器,输入账号密码登录。

登录面板后会跳出【推荐安装】的对话框。假如你以后不需要用你的 VPS 搭建其他项目,那么只勾选安装第一个 Nginx 就可以了,不然 LNMP 这四个还是全安装为好。推荐使用编译安装,也就是图中的“Complied”。

经过漫长的等待,直到安装完成。点击进入【App Store】页面,在搜索框里搜索“pm2”,把搜索出的两个应用全部安装。

等待安装完成后,点击 Node.js version manager 后面的【Setting】按钮。在弹出的对话框中,第一个框选择版本为“LTS ver”,在下面给出的版本中选择最新版安装,然后在后面的【Command line version】中选择刚刚安装的版本。如果你的服务器在国内的话,【Registry】选择“Taobao”,切换安装源为国内镜像。

关闭对话夸,点击 PM2 Manager 后的【Setting】,点击【Node Version】,把版本切换为刚刚安装的版本。

2、开始安装

点击 aaPanel 的【Files】选项,进入 www/wwwroot/ 文件夹,你看到只有一个 default 文件夹就代表已经进入了。点击上方的【new】按钮创建一个新文件夹,文件夹名可以任意选择。

进入你创建的文件夹,点击上方的【Terminal】按钮打开终端。

在终端中使用如下命令开始安装 hexo 并生成静态网页。

#安装hexo
npm install hexo-cli -g
#初始化hexo
hexo init
#生成静态文件
hexo g

点击进入 aaPanel 的【Website】选项,点击【Add site】按钮。在【网页路径】这一栏中,也就是图中框起来的部分,填写刚刚创建的 Hexo 文件夹路径。确认信息无误后点击【Submit】按钮提交,创建网页。

在网页创建完成后,点击【Conf】按钮,在弹出的对话框中点击【Site directory】,把这个页面中的【Running directory】改成/public 文件夹。

完成上面操作后,打开浏览器,输入你的域名,就可以看到 Hexo 初始网页了。

三、Windows

1、准备工作

在使用 Windows 搭建 Hexo 前,你只需要先安装 node.jsgit

2、开始安装

2.1 安装命令

在 Windows 下安装 Hexo 方法和前面介绍的在 Linux 下安装差不多。在本地创建新文件夹,在新建文件夹中右键选择【Git Bash here】,新建 git 窗口。在 git 窗口输入命令安装 Hexo。

#使用 npm 命令安装 Hexo。
npm install -g hexo-cli
#Hexo 安装完成后进行初始化操作。
hexo init

生成网页并将网页部署到本地服务器,这个时候打开 127.0.0.1:4000 就能看到 Hexo 的初始网页了。

#生成静态网页并启动 Hexo 服务端
hexo g && hexo s

2.2 部署到 GitHub

🔊 重要:本节中使用的域名需要有一个指向 GitHub 服务器的 A 记录,服务器 IP 为:185.199.108.153。

在 GitHub 官网按照提示创建 GitHub 账号,创建完成后在 Hexo 文件夹中右键打开 Git Bash here(Windows),依次输入以下三条命令,生成 SSH key。

git config --global user.name "你的用户名"
git config --global user.email "你的注册邮箱"
ssh-keygen -t rsa -C "你的注册邮箱"

输入 cat /root/.ssh/id_rsa.pub 查看你生成的公钥。把生成的公钥,也就是图片中框起来的部分复制到剪贴板。

回到 GitHub 网页,点击网页右上角头像,选择个人信息设置选项,进入 SSH and GPG keys 页面,点击创建新 SSH key。

在红框内粘贴刚刚复制到剪贴板的公钥,点击添加 SSH 公钥。

添加公钥后点击右上角加号创建一个 repository。

创建的 repository 名字一定要是 你的用户名.github.io

在这个 repository 的设置中点击进入 pages 选项中,选择一个主题并确认,这个主题并不重要,随便选择一个就行。

等待片刻,看到出现“Your site is ready to be published at ......”,就代表你的这个 GitHub page 创建成功了。

打开 Hexo 文件夹中 _config.yml 文件,补全 Deployment 模块中的信息。type 后面填 git 就行,repo 后面填图片中箭头位置处的信息,这里要注意图片中框起来的部分选择的是 SSH,_config.yml 文件里 branch 后填 main。

填好后你的配置文件应该是下面这个样子。

#修改前
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
  type: ''
  
#修改后
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
  type: git 
  repo: [email protected]:你的用户名/你的用户名.github.io.git
  branch: main

回到Git Bash here(Windows)中,安装 Hexo 部署插件。

npm install hexo-deployer-git --save

剩下的就只有一步,使用 hexo d 把本地静态网页文件部署到 GitHub 上。

hexo clean && hexo g && hexo d

部署完成后,等待几分钟,打开 你的用户名.github.io 就能看到你刚刚创建的 Hexo 博客了。

2.3 添加域名

可能你会觉得用 xxxx.github.io 访问自己的博客实在不大优雅,为解决这个小问题,可以通过创建一个 CNAME 来为你的博客自定义域名。

你只需要在 Hexo 文件夹的 \source 目录下先创建一个 txt 文件,内容为你想要自定义的域名。保存后将文件名改为 CNAME,要注意的是,这个文件名没有后缀,就是 CNAME

再次部署到 GitHub,如果你发现在 GitHub 上多了一个 CNAME 文件,那就自定义域名代表成功了。

打开网站,地址栏的域名已经变成你自定义的域名。

四、结语

这篇教程到这里就结束了,可能有一些地方介绍地不够清楚。如果你有不明白的地方,可以发邮件到[email protected].