从零开始建立个人博客I:网站基础及Github Pages入门

从零开始建立个人博客

网站基础

要建立一个网站首先至少需要一个服务器空间、一个域名。之后涉及的技术包括PHP、数据库、HTML、CSS、JavaScript等等,需要安装LNMP…好在可以借助软件来管理这些东西,如常见的各种内容管理系统(CMS):织梦、帝国、动易、逐浪、Joomla、Discuz等。对于个人博客而言,更常见的是老牌的WordPress及新晋的Ghost,后者博客托管收费,但软件可以免费使用。最近还看到不少人用TypeCho(看它的主题数量和质量感觉还不错)。进一步减少要求,如果我们只需要一个简单的静态网站,我们还可以选择Hexo、Hugo等工具:只需要在本地以Markdown语法写博客,之后自动转换为HTML,上传到服务器即可。

服务器可购买VPS,也有一些免费资源如:Github Pages(静态)、Openshift、Heroku等;
域名同样需购买,也有一些免费资源(通常不怎么好),Github等提供了免费的二级域名;
博客程序推荐静态生成工具Hexo/Hugo或TypeCho等,前者简单方便,后者有更多定制;

Github Pages

这里具体介绍一下Github Pages:Github-Pages是Github的一个免费服务,展示静态页面,用于介绍项目,不过可以把它作为个人博客来使用,大部分Git在线托管网站,如GitLab、Bitbucket等,都提供类似服务。使用非常简单,建一个与用户名对应的仓库( username.github.io ),向该仓库添加页面即可,支持Markdown格式。将仓库clone到本地,更新文章时push写的md文件即可。这个过程中Github服务器端会用Jekyll对文件作处理,自动生成页面,因此只要push符合Jekyll 规范的文件即可;缺点是你无法预览、调整最终页面的格式,且可能会因为文件格式有问题而无法生成页面。因此一般需要在本地安装Jekyll,在本地生成并调整好后再push。

1
2
3
4
5
6
|—_layouts/
|—_posts/ (md文件)
|—.gitignore
|—index.html
|—style.css
|—CNAME (绑定独立域名用)

至此Github Pages已经弄好了,最后一个问题是本地使用Jekyll很麻烦!好消息是有很多其他的静态博客生成器可以选择,如用Go写的Hugo、基于Node.js的Hexo。还可以使用Prose( http://prose.io/ )在线编辑仓库中的内容,该网站提供了一个编辑Github托管内容的环境。
注:Github Pages可绑定域名,操作很简单:在仓库中添加一个名为CNAME的文件,写入要绑定的域名(不要http/www的前缀)。之后在域名解析管理页面:创建CNAME记录,将要绑定的域名指向Github Pages的地址即可。

Jekyll格式规范
Jekyll支持md及正常的html格式,对于Markdown文件Jekyll要求文件开头有 front-matter。

1
2
3
4
---
title: This is my title
layout: post
---

建站工具

Github官方的Jeyell以及进化的Octopress都很难用,而且速度慢,因此大家通常使用第三方工具来建立网站,常见的有:

Hexo: 基于Node.js,主题NexTCactusfexoReactTypescript Hexo Theme
Gatsby: 基于Node.js + React,后起之秀,功能更强大,使用也稍复杂 Gatsby Awesome
Hugo: Go程序,有不少适合商业网站的主题(有移植的NexT主题) Hugo Theme
Pelican:Python程序,主题质量堪忧 ops Pelican Theme
Zola: Rust程序,出现相对晚,主题少 EvenTerminimal
更多其他静态网站生成软件可查看 StaticGen

看脸的时代,取舍更多取决于主题-_-!Hexo的主题无论是数量还是质量都优势明显。Hugo用户似乎更多,编译速度快,有很多适合商业网站的优秀主题,但似乎没什么适合个人博客的好看主题,不过有Hexo NexT主题的移植。

Hexo建站

相关阅读


关于IP、域名、DNS
网络中每台计算机都分配一个IP地址作为网络标识,数字形式的IP不便记忆,因此有了与之对应的域名,也就是我们通常说的网址。域名虽然便于记忆,但在网络通信中计算机只认IP,因此在我们访问网站时需要将域名变换为IP,这一过程称为域名的解析。域名与IP之间的对应关系是由DNS(Domain Name System)决定的,而域名的解析需要借助专门的DNS服务器来查询DNS数据库。举例来说,当我们在地址栏中输入“www.google.com”的域名之后,计算机会向DNS服务器查询该域名所对应有IP地址,然后计算机就可以调出那个IP所对应的网页,并在浏览器上显示
域名解析按目标地址不同可分为:A记录解析、CNAME解析、NS解析、MX邮件、URL转发、动态域名解析等:

  • A记录解析(IP解析):域名目标地址直接指向一个固定公网IP,效率最高 ( 记录类型“A”;记录值填写目标IP )
  • CNAME解析:将域名解析为另一个目标域名,目标域名返回IP给源域名 ( 记录类型“CNAME”,记录值写目标域名 )

域名的注册商都会提供域名解析服务,属于“A记录解析”;但对于国外域名服务商有被墙的风险,可选择国内的DNS服务商来解析,此时便可使用“CNAME解析”(A记录解析也是可以的)