免费搭建自己的个人主页
夏天即将过去,各位在这个暑假里一定收获不少,如果能有一个地方能够记录自己的学习的点滴,并将成果展示给其他访客,对于自己未来发展将会是极大的帮助。目前市面上有许多博客服务提供商,例如CSDN、简书、Medium等,只需要注册账号,我们就可以在这些网站上撰写自己的博客。在这些网站上,使用Markdown撰写博客,就能写出非常优雅的文章。但如果我们想更进一步,更加个性化地定制自己的主页,这时就需要考虑搭建自己的服务器了。如果网站以静态内容为主,我们有性价比更高的方案:Github Pages 和 Netlify 。
通常的动态网站分为前后端,后端的服务器在收到客户端访问请求后,通常需要执行对数据库的读写操作,然后将结果渲染成前端页面,返回给客户端。这一过程中,数据库读写和渲染页面都需要大量的计算资源,当访问量增长时,CPU、内存都需要随之扩展,带来了沉重的成本负担。
为了缓解计算资源紧缺的情况,目前的服务端大多都提供了页面静态化缓存,能够将常用的页面缓存为静态页面,节省运算量,加速网站的响应。如果网站主要提供静态内容,例如个人博客或者产品文档,将整个网站静态化能够节省大量服务器维护的成本。
通常,最低配置的云主机一年也需要300元左右,但将网页静态化后,就可以将网页放在Github Pages这样的免费空间,得益于服务提供商的CDN,访问速度和稳定性要比自建网站好上不少,而且不用费心维护,既省钱又省力。
如果需要备份或者迁移网站,只需要 git clone 即可,即使免费空间不再提供服务,我们也可以将网页放在我们自己搭建的服务器上。
静态网站的内容都是预先生成的,不用担心 SQL 注入等问题。而且内容存放在 Git 仓库中,修改都会有记录。使用 Github Pages 这样的免费空间的话,也不用亲自去修复漏洞。所以对于新建网站来说,托管网站是十分安全的选择。
生成工具将决定未来网站的运营成本,因此需要细致地选择生成工具,个人认为有如下几点选择标准,可供参考:
本文使用 Gatsby 作为静态网站生成工具,各位可以在 StaticGen 选择自己习惯使用的语言所编写的工具。
Gatsby 可以在本地生成网站,另外 Netlify 也提供了对Gatsby的支持,可以一键克隆搭建,下面就对这两种方法分别进行介绍。
只要点击这里,注册 Netlify 账号,按步骤授权自己的 Github 仓库账号的权限,就可以自动部署 Gatsby 的博客了。而且 Netlify 提供了后台的接口,只需要访问 https://xxx.netlify.com/admin 即可在线发布修改博客(xxx为你自定义的网站名)
Netlify 后台每月上传的免费流量是有限额的,如果超出限额,我们可以将仓库中的内容 clone 到本地,写好新的文章再 push 回去。Netlify 检测到仓库有更新,会自动发布最新版的网站。
本部分使用 Windows 10作为示例环境
由于大部分资源来自外网,因此所需的时间由网络因素决定。
本段参考自 Gatsby 官方文档
Gatsby 需要的环境:
Linux和macOS一般都自带Git。Windows需要前往 Git 官网 或其他网站下载 Git 客户端,本文选用2.22.0版本。
安装完成后打开 cmd 或 git bash 配置个人信息。
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
前往 Node.js 官网 或其他网站下载 Node.js 安装包,本文选用10.16.0 LTS版本。
安装完成后首先用管理员权限打开 cmd ,更新 npm ,否则后续安装时会找不到新版的依赖包。
npm install -g npm
对于Windows,需要额外安装 node-gyp ,包含 python2.7 和Visual Studio Build Tools ,用于解决部分组件编译失败的问题,如果需要手动安装请参考这里。
npm install --global --production windows-build-tools
npm install -g node-gyp
Node.js 安装完成后,在开始菜单中搜索 cmd ,并用管理员权限打开,执行下列命令安装 Gatsby
npm install -g gatsby-cli
显示下列信息即为安装成功
+ gatsby-cli@2.7.21
added 313 packages from 178 contributors in 58.834s
在管理员权限的 cmd 中, 输入盘符(例如 d:
)选择分区,,输入 cd
跳转目录,输入 dir
显示当前目录结构, 按下 tab键
可快速选择当前目录下的文件。例如,通过下面的命令可以移动到 D:\project\blog
目录。
d:
cd project/blog
在安装模板所需的模组前,先安装 imagemin-pngquant
并将版本锁定在5.0.1,否则后续安装可能会报错。
mkdir gatsby-site
cd gatsby-site
npm install imagemin-pngquant@5.0.1 --save
cd ..
移动到之前准备的目录(D:\project\blog
)后,执行下面的命令,Gatsby 会克隆博客模板并安装模块到 gatsby-site
这个目录。如果已经在 Netlify 部署过,可以将仓库的地址改为自己 Github 里的博客仓库地址。
gatsby new gatsby-site https://github.com/netlify-templates/gatsby-starter-netlify-cms
建议手动克隆Git仓库,这样能保留Git信息
git clone https://github.com/netlify-templates/gatsby-starter-netlify-cms gatsby-site
npm install
看到下面的内容就说明依赖已经安装好了
added 2356 packages from 1230 contributors and audited 50105 packages in 115.071s
移动到模板的目录(D:\project\blog\gatsby-site
),执行 gatsby develop
就可以使用开发模式在本地搭建服务器,用于预览网站。
cd D:\project\blog\gatsby-site
gatsby develop
看到上述输出说明部署完成,默认的访问地址是 http://localhost:8000/ 。服务器会一直运行,如果我们修改源文件,服务器会立即生成修改后的新文件。按 Ctrl + c
或关闭 cmd 窗口可以停止服务器。
我们可以使用 Markdown 格式编写博客,文档存放的位置在D:\project\blog\gatsby-site\src\pages\blog
,比起一般的 Markdown 文档, 只需要在开头添加一些配置参数就可以被正确识别为博客文章。
templateKey: blog-post
title: A beginners’ guide to brewing with Chemex
date: 2017-01-04T15:04:10.000Z
featuredpost: false
featuredimage: /img/chemex.jpg
description: Brewing with a Chemex probably seems like a complicated, time-consuming ordeal, but once you get used to the process, it becomes a soothing ritual that's worth the effort every time.
tags:
- brewing
- chemex
比起一般的文章,另一个需要注意的地方就是图片的链接 ,因为网站的图片都放在 D:\project\blog\gatsby-site\static\img
中,在生成发布网页后,图像会被移动到 /img
中,因此在文章中可以使用类似 /img/photo.jpg
的格式。但这样一来在编辑时,编辑器就无法正确显示,所以建议使用相对路径 ../../../static/img/photo.jpg
。
要将网站发布到生产环境,首先进入项目的目录。
cd D:\project\blog\gatsby-site
然后执行下面的命令生成网站。
gatsby build
看到下面的输出,说明生成完毕,在 public
目录中可以看到完整的网站
info Done building in 125.186 sec
执行下面的命令可以启动服务器预览生成的网站
gatsby serve
另外如果生成过程中有问题可以尝试清空之前生成的内容和缓存
gatsby clean
Github Pages 提供了免费的空间用于承载静态网站,Gitlab 和国内的码云等网站也提供了类似的服务。
首先新建一个仓库,Github 提供了形如 <username>.github.io/<repositoryName>
的 URL,使用这种 URL 的话,需要如下修改配置参数,详细可以参考这里。
gatsby-config.js
module.exports = {
pathPrefix: `/<repositoryName>`,
}
并在生成时加入参数 --prefix-paths
gatsby build --prefix-paths
简单起见,为了使用不带后缀的 URL <username>.github.io
,这里我们新建名为 <username>.github.io
的仓库。建立完成后,按照网页上的指示,将生成好的页面上传到仓库中。注意将 <username>
替换为自己的用户名。
cd D:\project\blog\gatsby-site\public
git init
git add .
git commit -m "first commit"
git remote add origin https://github.com/<username>/<username>.github.io.git
git push -u origin master
上传完成后,到仓库的 Settings
页面最下方的 Github Pages 部分,将 Source 选为 master branch
。 至此,我们就可以通过<username>.github.io/blog
访问自己的博客了。
博客的精髓在其内容,而载体只是形式而已。搭建自己的博客,意义不仅仅在于锻炼自己动手的能力,更在于巩固和传播自己的智慧,潜移默化中将知识系统化。因此,越早开始积累,未来的回报也更丰厚,希望大家工作和学业都能继续进步。