Hexo博客自定义域名和部署到VPS

很久之前,写过一篇文章Hexo博客使用教程,介绍大概如何使用Hexo新建一个博客并部署到github上。最近抽空买了个域名和VPS,把自己的博客部署到自己的VPS上。在此分享下,正在考虑购买域名和VPS的同学可以进来看看。另外,在文章结尾,推荐一款Markdown写作App。

如果大家对于自己部署博客有什么疑问,欢迎留言讨论。

更新
2016-07-25:将DNS管理从DNSPod迁移到CloudXNS上。推荐大家使用CloudXNS。增加博客仓库介绍以及Markdown写作App推荐。

VPS

VPS可以到搬瓦工或者DigitalOcean上购买。链接就不提供了,谷歌一下很容易找到。
搬瓦工3USD一个月,DO要5USD一个月。考虑到目前博客访问量比较少,搬瓦工最低配置都够用了,所以选择了搬瓦工。迟点等VPN到期之后准备迁移到DO上,当博客主机和自己架ShadowSocks。

对着阮一峰的博客 Linux服务器的初步配置流程 ,把VPS设置好。补充一些阮一峰博客没有提到的点:

  • 终端老是报错误:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or director

解决方法是在~/.profile中添加export LC_ALL="en_US.UTF-8"

  • 安装和配置apache

运行安装命令:sudo apt-get install apache2
安装完成后修改/etc/apache2/sites-enabled/000-default站点配置文件。配置如下。把/home/fanjie/blog替换成自己的服务器根目录。

<VirtualHost *:80>
DocumentRoot /home/fanjie/blog
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/fanjie/blog>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

修改完配置后sudo apachectl restart重启apache。

域名

在namesilo上购买域名,namesilo赠送WHOIS隐私保护。如果你选择其他域名提供商,纠结于要不要购买WHOIS隐私保护,可以看看我在V2EX上发起的讨论:买域名有必要买隐私保护么?

DNS解析服务选择国内的DNSPod。 域名解析服务使用CloudXNS。相比于DNSPod,CloudXNS更新域名解析记录的速度非常快,并且域名解析速度也比DNSPod的快。不过以下的DNS解析记录设置还是基于DNSPod,CloudXNS类似。

  1. 在namesile上修改域名服务商地址。在namesilo上修改了域名服务商,才能在DNSPod上配置域名解析记录。地址修改如下。
    域名解析地址接管设置示例

  2. 在DNSPod上添加域名解析记录
    先介绍下常用的两种域名解析记录。

  • A记录
    A记录是将域名指向到IP地址。例如,将duxevr.com指向到VPS的IP地址,则需要新增一个A记录。

  • CNAME记录
    将域名指向域名,别名。例如,我将duxevr.com指向我的VPS服务器,同时也希望blog.duxevr.com也指向VPS服务器,那么新增一个CNAME记录,将blog.duxevr.com指向duxevr.com。下次VPS迁移导致IP地址变化时,就只需要更改duxevr.com的A记录中的IP地址就行了,CNAME记录不需要更改。

DNSPod上的解析记录,给大家参考下。
DNS解析记录示例

主机记录(host):二级域名的前缀。例如blog.duxevr.com的主机记录为blog

TTL(Time To Live):域名解析记录的缓存的存活时间。一般来说,域名解析不经常变动的情况下,TTL设置大一点。当需要修改时,就TTL值改小一点,等带一段DNS的覆盖时间,再修改DNS解析记录。

github博客重定向到duxevr.com

在source文件夹中新增加一个文件CNAME,文件内容为blog.duxevr.com。重新发布博客。当访问http://jefferyfan.github.io时,会被重定向至http://blog.duxevr.com

博客仓库结构

目前博客分为三个仓库。

  1. 主题Next仓库:从源仓库fork出来,有一些地方做了小修改,定期merge源仓库。
  2. 博客配置仓库。主要是除主题、博客文章之外的不包含敏感信息的文件。
  3. 博客HTML代码仓库。其实就是一开始将博客挂在github的那个仓库。发布博客都是先发布到这个仓库,再到vps上执行git pull来更新。
  4. 博客文章使用dropbox同步。dropbox自动同步,不用每次修改之后都提交到git。

不过,发布流程有些麻烦,需要先执行hexo d,再登陆到vps上执行git pull。写了个脚本,一键发布!

#!/bin/bash
cd `dirname $0`/..
hexo clean
hexo g
echo "\nDeploy to github"
hexo d
echo "\nDeploy to VPS"
ssh vps "cd ~/blog;git checkout .;git clean -xdf;git pull"

其中,最后一句中,大家需要把vps替换成自己的.ssh/config中VPS配置的Host;~/blog替换成VPS上的博客目录。

Markdown写作App

推荐国内自由开发者完成的Markdown写作App--MWeb,配合dropbox,写博客简直不能再完美。

有一点特别喜欢,图片粘贴后直接保存到设置好的文件夹。如果你的图片都放在source的子目录下,正好可以配合这个功能使用。

您的支持将鼓励我继续创作。