0 序

0.1 动机

突然就想建站了

反正是免费的

而且感觉现在人手里没个 NexT 的 HEXO 就好像没写过博客一样

实质内容是不存在的,我超喜欢 WordPress,简书是不会去的,人又懒,不想维护静态网站,我只是想找个地方安静的折腾css

 

0.2 配置

  • GitHub Pages (免费的 GitHub 账号)
  • HEXO

 

 

1 简介

1.1 什么是静态网站

静态网站动态网站的区别是什么?这大概是一个哲学问题。比如大佬兼哲学家成潮曾经说过,

静态网站是纯前端实现,而动态网站有后端,仅此而已啊。

更具体一点说,静态网站就是仅由 HTML 构成的网站,主要特点是:

  • 每个静态网页都有一个固定的网址,文件名均以htm、html、shtml等为后缀;
  • 静态网页一经发布到服务器上,无论是否被访问,都是一个独立存在的文件;
  • 静态网页的内容相对稳定,不含特殊代码,因此容易被搜索引擎检索;html更加适合SEO搜索引擎优化。
  • 静态网站没有数据库的支持,在网站制作和维护方面工作量较大;
  • 由于不需通过数据库工作,所以静态网页的访问速度比较快。

关于静态网站与动态网站对比的更多内容可以参考本文最下方的 Ref 。

 

1.2 什么是 GitHub Pages

我们知道想要建一个网站,需要有一个服务器。谈到服务器你会想到什么?有的人可能会回答:一个没有屏幕的电脑。我们对服务器的印象从硬件层面可以概括为:电源、主板、CPU、内存、硬盘、网卡等等…

类似的,我们在租用 VPS (Virtual Private Server ) 的时候,同样也会关注其配置,用了什么规格的 CPU,多大的硬盘和内存,多大的网络带宽等等。我们可以通过 ssh 等手段远程连接到 VPS,并在上面执行自己的 Shell 指令,运行各种程序(Unix Based Server 是 VPS 的常态)。它们的硬件并不是使用者个人私有的,而是由更大的硬件系统模拟出来的一个空间。但是每一个 VPS 确确实实分配到了一定的物理资源,包括运算力和存储空间,虽然个人用户购买的 VPS 往往小巧廉价,但是 VPS 在结构上仍然是个完整的服务器。那么 GitHub Pages 也是一个 VPS 吗?

答案是否定的。

GitHub Pages is a static site hosting service and doesn’t support server-side code such as, PHP, Ruby, or Python.

— What is GitHub Pages?

GitHub 虽然非常慷慨,但是它并不是一个慈善组织。GitHub Pages 还远没有达到 VPS 那个级别的完整度,你没有运行在一个接近私人的环境下运行 Shell 的机会。

你能做的仅仅是把写好的网页文件通过 git 上传到 GitHub 中专门用来存储 GitHub Pages 的仓库(repositories) ,剩下的交给 GitHub 处理,最终别人可以通过访问 *.github.io 或者你自己的域名来浏览这些已经存在的网页

换句话说,与其认为它是一个服务器,不如认为它是一个可以远程访问的云盘,顺带放在云盘里的网页文件会被自动映射到网络上,供人用域名直接浏览。

字面意义上的 Pages

顺便一提,由于 Github Pages 仅在用户使用 *.github.io 域名访问博客的时候才提供 https 加密,而大部分域名提供商的域名转发功能是不会默认支持 https 的,这就造成了你无法在自己的域名下通过 https 来访问自己的 GitHub Pages 博客。当然,有少数域名提供商是例外,而且就算没有支持,你仍然可以选择通过 CDN 来解析你的博客,保证从用户到 CDN 再到 GitHub Pages 服务器全程加密。

 

 

1.3 所以,我们要手写 HTML 文件了吗?

那真是太恐怖了。

先不提那些辅助你创建 HTML 的 IDE,如果你关注的重点真的是在博客上面,那么花费大量时间在构筑 HTML 上就显得十分低效,就好像让一个 C 的程序员全程使用纸带和打孔机来设计和输入电脑程序一样。

如果你想锻炼 HTML 代码能力,或者你是个出色的静态网页设计师,欢迎全程手写。

你可能听说过 jekyll, Hexo, Simple, Octopress, Pelican (鹈鹕) 或者 Lo·gech,它们都是常见的静态博客框架,是用来生成符合规范的静态页面的引擎

它们通常运行在本地,即你的个人电脑上,或者别的什么地方,比如你手中多如繁星的 VPS — 反正不是在 GitHub Pages 上。因为 GitHub Pages 无法运行程序,它不是一个完整的服务器。

这其中有个特例,jekyll 是官方推荐的 GitHub Pages 框架,其原文 .md 可以直接上传仓库并由 GitHub 自动生成博客页面,也可以使用在线编辑器。

 

2 创建 GitHub Pages 

2.1 创建代码库

选择New repository,在Repository name下填写<yourname>.github.io,然后完成。

进入 setting -> GitHub Pages -> choose a theme,随便选一个,然后应用。

至此你已经可以尝试访问 <yourname>.github.io 了,他应该已经被设定成了主题的介绍页面。

2.2 配置 git

ssh-keygen -t rsa -C anywugn@gmail.com        #生成 ssh 秘钥,有就不用了

clip < ~/.ssh/id_rsa_anywugn_github.pub       #复制公钥内容到剪贴板

然后来到仓库,Settings  -> Deploy keys -> add Deploy keys, 复制进去并勾选写入权限即可。

 

可以用一下代码测试 ssh 是否可用(不要修改代码内容):

ssh -T git@github.com 

如果看到:

Hi anywugn/anywugn.github.io! You've successfully authenticated, but GitHub does not provide shell access.

就说明成功了。

接着你可以设置一下本地的 git:

git config --global user.name "anywugn"                   #用户名
git config --global user.email "anywugn@gmail.com"        #邮箱

 

3 配置 HEXO

3.1 Install

 

 

(未完待续)

Ref.

动态网站和静态网站的区别 – ASP

kekyll – 将纯文本转化为静态网站和博客

V is my learning record.

一步步在GitHub上创建博客主页

史上最详细的Hexo博客搭建图文教程