使用 Nginx(GitHub Pages) 与 Hexo 搭建个人博客
本文介绍使用 Nginx(或者 GitHub Pages) 与 Hexo 搭建个人博客的主要步骤。
在正文开始之前,先介绍上面提到的几个工具的功能:
- Nginx:充当 Web 服务器的角色,在个人博客中,其主要功能是在公网服务器上提供 HTTP 或 HTTPS 服务,让用户能够访问你的博客网站。
- GitHub Pages:在没有个人公网服务器时,使用 GitHub Pages 同样可以达到搭建个人博客的目的。具体而言,GitHub Pages 就是一个特殊的 GitHub 仓库,你可以在这个仓库内放一些 HTML、CSS 和 JS 文件等,从而搭建个人网站。
- Hexo:Hexo 是一个静态博客框架,使用它可以搭建博客网站,让用户专注于博客内容,而不需要熟悉 CSS 和 Javascript 等前端内容。使用官方以及许多开源作者提供的主题,即可快速的构建美观的网页,而博客内容使用 Markdown 编写即可。
下面,介绍具体步骤。
1. 本地安装 Node.js
Node.js 官网为:https://nodejs.org/en/download/ ,打开链接,根据本地环境,选择合适的安装文件下载。Windows 平台与 Mac 平台选择二进制 installer 文件,安装时只需要点下一步即可。
Linux 平台安装稍微复杂些,推荐以下两种安装方式,可任选其一:
安装完成后,在命令行输入以下命令:
1 |
|
若都有输出,说明安装成功。
2. 本地安装 Hexo 并初始化博客环境
Hexo 安装命令参考官网即可,具体如下:
1 |
|
关于 Hexo 的更多信息,可参考官方文档:文档 | Hexo 。
为了让你的博客网站更加符合你的审美,可以选择一个合适的主题 Themes | Hexo 。本博客网站使用的是 Fluid,其 GitHub 仓库地址为:fluid-dev/hexo-theme-fluid: 一款 Material Design 风格的 Hexo 主题 / An elegant Material-Design theme for Hexo (github.com) ,官方文档地址为:配置指南 | Hexo Fluid 用户手册 (fluid-dev.com)。
仔细阅读 Hexo 官方文档与你选择的主题的官方文档,根据自己的喜好配置好 yml 文件,搭建个人博客的路途就走完了一半。
下面,我们要解决的问题是:如何让互联网上的广大用户能够访问你的博客网站?
3、4 小节提供了两种方式,可根据自己的具体情况选择。
3. 建立 GitHub Pages 仓库
首先,在 GitHub 上建立一个仓库。这个仓库的命名有点讲究,举例说明如下:
我的 GitHub 个人主页地址为:https://github.com/UnpureRationalist
,其中,UnpureRationalist
表示我的用户名。
打开 GitHub 并选择创建仓库选项,将仓库命名为
用户名.github.io
,比如我的仓库命名则是:UnpureRationalist.github.io
,并设置仓库为公开可见。
然后,在该仓库上传一个名为 index.html
的文件,参考文件内容如下:
1 |
|
在浏览器输入链接 用户名.github.io
,如我的博客地址为:UnpureRationalist.github.io
,然后,浏览器即可显示 index.html
文件的内容(可能需要等待一会)。
利用此仓库,我们就可以让其他用户访问自己的博客网站。
4. 服务器安装 Nginx
对于拥有个人云服务器的用户来说,可以直接在个人服务器上安装 Nginx 服务,将个人博客搭建在自己的服务器上。
首先,我们需要在服务器上安装 Nginx,这里以 Ubuntu 系统为例,步骤如下:
1 |
|
注意,为了让 Nginx 正常工作,需要在服务器的安全组设置中开放 80 or/and 443 端口,以让 HTTP or/and HTTPS 服务正常工作,具体参考自己使用的服务器提供商。
如果要使用 HTTPS 服务,则需要对 Nginx 进行一定的配置,具体参考链接:https://cloud.tencent.com/document/product/400/35244 。
5. 配置 Hexo 实现自动部署
经过上面的步骤,我们在本地有了一个存放个人博客的目录;在云端有了公网用户能够访问的目录。因此,我们只需要使用 Git 或 scp 等工具,将 Hexo 生成的 public 目录下的所有文件和文件夹上传到 GitHub 仓库或者服务器 Web 服务根目录下即可。但是,手动进行这些操作有些麻烦,我们可以使用 Hexo 提供的功能实现一条命令部署。详情参考链接:部署 | Hexo 。
具体而言,就是在 _config.yml
配置文件中进行适当的配置,然后运行如下命令即可将个人博客部署到云端:
1 |
|
不过,在本人实际使用过程中,发现一键部署功能不太好用,GitHub Pages
有时由于网络原因无法部署成功;部署到云服务器上则会报错。因此,本人使用
Hexo 提供的功能部署到 GitHub Pages;对于服务器,则使用朴实无华的
scp
命令进行手动同步。如果读者有更好的自动部署方式,欢迎交流讨论。