博客的人民币玩法

个人博客就想游戏里的装备,要想更厉害一点,总归要花钱的,不过这个钱花得很实在。

绑定个人域名

域名被发明出来原本只是方便人们记忆,给IP起个名字,但现在有了品牌的意义。说高级一点,这也是一笔无形资产。

买买买

域名很便宜,建议在 阿里云 上购买。个人观点,域名除了要有意义以外,最重要一点是,短。很多人拿自己名字的全拼去申请域名,比如zhangsanfeng.com,字母太多敲得累,如果换成拼音的首字母zsf.com,是不是一下子就显得高大上了?但这域名肯定天价,comcnnet都比较贵,那就换别的后缀,vipxyztop也很好。

申请流程比较繁琐,填资料交钱备案,中间有不明白的可自行百度,等域名拿到手的那一刻,一切等待都是值得的。

绑定

打开阿里云的控制台,找到域名绑定,如果你有自己的服务器,就填写一个A记录,表示将域名指向一个IP,然后在记录值里写上IP。

如果你是用GitHub作博客,就填写一个CNAME记录,表示将域名指向另一个域名,然后在记录值里写上自己GitHub的博客地址,例如zhangsanfeng.github.io。还没完,现在绑定并没有生效,需要在博客里改点东西

  1. 本地打开博客项目
  2. 找到source文件夹,点进去
  3. 新建文本文档CNAME.txt
  4. 输入自己的域名,例如zhangsanfeng.com,保存
  5. CNAME.txt重命名为CNAME
  6. 部署到GitHub

大功告成,浏览器访问zhangsanfeng.com

使用自己的服务器

如果你不喜欢用GitHub作博客,想使用自己的服务器,那你肯定是个搞IT的,因为没有普通用户会为了一个博客而去自己搭服务,门槛比较高,也太折腾。但文章写到这,就把它一并讲了,接下来的内容各位选择性略过。

项目结构

Hexo项目中,有这些文件和文件夹

  • node_modules,hexo依赖包
  • public,hexo生成的页面,部署的就是里面所有的静态资源
  • scaffolds,命令生成文章等的模板
  • source,自己实际写的文章
  • themes,主题
  • _config.yml,整个博客的配置
  • db.jsonsource解析后得到的
  • package.json,项目所需模块的配置信息

Hexo部署的原理就是,把public里的所有内容同步到服务器的HTTP服务中。

部署思路

Hexo的页面全部是静态的,因此使用Nginx做HTTP服务,性能好配置也简单。剩下的问题是如何同步,还是用Git,我们在服务器创建一个Git仓库,这样做的目的有两个

  1. 结合hexo-deployer-git插件,实现一键部署,解决文件从本地到服务端的问题
  2. 配置Git钩子,在每次Git接收到更新时,触发钩子,将仓库中文件同步到Nginx的网站根目录

参考 阿里云VPS搭建自己的的Hexo博客。至于钩子是什么,引用 官方文档 一句话

Git 能在特定的重要动作发生时触发自定义脚本。

创建Git仓库

我用的是CentOS系统,因此用yum安装Git

1
$ yum install -y git

指定裸仓目录

1
2
$ cd /home/git
$ git init --bare blog.git

在Hexo的配置里,使用非root用户连接服务器更安全。增加只操作Git的用户git,并改变仓库目录的所属,否则git用户无权访问

1
2
$ adduser git
$ chown -R git:git blog.git

配置Nginx

先安装

1
$ yum install -y nginx

查看Nginx配置文件路径,然后修改

1
2
$ nginx -t
$ vim /etc/nginx/nginx.conf

找到下面这一段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name zhangsanfeng.com; # 绑定的域名
root /usr/local/blog; # 网站根目录

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
index index.html; # 默认首页
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

修改上面三个地方。接下来创建网站根目录并修改所属,启动Nginx

1
2
3
$ mkdir /usr/local/blog
$ chown -R git:git /usr/local/blog
$ service nginx start

注意,一定要修改网站根目录的所属,否则下面配置的Git钩子会因为无权访问而不生效。

配置hooks

仓库中的hooks目录,就是存放钩子的地方,重命名post-update.samplepost-update

1
2
3
$ cd /home/git/blog.git/hooks
$ mv post-update.sample post-update
$ vim post-update

post-update修改为

1
2
#!/bin/sh
git --work-tree=/usr/local/blog --git-dir=/home/git/blog.git checkout -f

最后,确保post-update拥有执行权限。

修改博客配置

和部署到GitHub的过程是一样的,只不过要修改部署地址,打开全局配置文件_config.yml,找到deploy节点

1
2
3
4
deploy:
type: git
repo: git@zhangsanfeng.com:/home/git/blog.git
branch: master

同样需要部署插件hexo-deployer-git,没安装的话,在博客项目中打开命令行

1
$ npm install hexo-deployer-git --save

去吧皮卡丘

部署命令和之前一样,毕竟整个过程只是服务端变了,客户端除了一个地址,其余都不用动

1
$ hexo g -d

参考 基于Hexo、git、nginx静态博客实现自动部署功能。使用自己的服务器作博客,就完成了,但还有几点不完美的地方,其中一个是没有配置SSH,但这个篇幅较大,所以下次再讲。