迁移blog到家中树莓派

经过N次尝试和折腾,终于把blog迁移到了家里的树莓派上。总结一下过程:

首先要判断家中网络是否为公网独立IP

1.访问ip138或者cip,可以找到家中宽带的IP。以我家的某个公网IP118.133.129.193为例。
2.win下使用tracert,linux下使用traceroute,如果跟踪结果显示没有中转只跳了一下直接到了家中IP,则是独立公网IP,否则不是公网独立IP或者假公网独立IP。
例如:独立公网IP
独立公网IP

自建支持hexo的git服务器

我们一般使用github的pages功能来搭建我们的hexo blog,确实挺方便的,直接使用hexo d命令就可以提交文件到github,然后刷新一下就看到新页面了。还可以绑定我们的域名,甚至顶级域名。github还提供了CDN,所以访问速度也不错。
但是用别人总有不爽的地方,比如github有时候会被墙,提交速度很慢或者提交失败,虽然有了CDN,但是节点在澳大利亚,访问速度在晚上高峰时间不尽人意,不爽就折腾一下,于是就尝试使用国内的VPS来架设和github pages一样功能的服务器。

1.安装git server

手头有台百度云的vps,访问速度还不错,装的系统是ubuntu14 64位,先来安装git server。

1
2
3
4
apt-get update
apt-get upgrade
apt-get install git-core
git --verison

看到git version x.x.x,git server就装好了。

2.增加用户,初始化git仓库

不建议直接使用root用户,所以我们新增加一个用户和用户组,并为新用户建立home文件夹。

1
2
3
4
5
6
7
8
9
groupadd git
mkdir /home/blog
useradd -g git -d /home/blog blog
chown -R blog:git blog
su blog
cd /home/blog
git init --bare blog.git
su root
chown -R blog:git blog.git

当我们看到“Initialized empty Git repository in /home/blog/blog.git/”的时候,一个名为blog.git的裸库就建好了。

使用nodejs的插件clean-css遇到的两个问题

nodejs的CSS压缩插件clean-css非常有名,grunt官方CSS压缩的插件grunt-contrib-cssmin和gulp下gulp-minify-css都是基于clean-css开发的,所以clean-css的用户量很大。在鞋厂和鹅厂都用到了这个插件,遇到了两个问题,分享一下。

1.clean-css 3.0版本以下默认简写(shorthand)background-size

简写前:

1
2
3
4
.xxx {
background: url(xxx.png) no-repeat left top;
background-size: 20px 20px;
}

简写后:

1
2
3
.xxx {
background: url(xxx.png) no-repeat left top/20px 20px;
}

在clean-css 3.0版本以下,默认会按照上面的格式进行压缩,但是在移动端Android 4.1和4.3不支持这种简写方式(参见caniuse),会造成background-size失效的bug。
最简单的解决方法就是升级clean-css到最新版,最新版默认不简写,如果要简写需要添加参数。
升级方法:

1
npm update clean-css

加参数支持简写的例子:

1
cleancss -o test.min.css test.css --compatibility +properties.backgroundSizeMerging

如果不方便升级clean-css,有两种方法可以避免低版本clean-css带来的bug。

总结一下使用hexo遇到的一些问题

1.每次执行hexo d需要输入github的账号和密码

在根目录_config.yml配置deploy信息的时候,repo项使用了以”https:”开头的地址
换成git@github.com开头的地址以后就可以SSH登录不用输入账号密码了,例如

1
repo: git@github.com:username/username.github.io.git
2.绑定顶级域名之后每次push都会收到邮件提醒和没有使用CDN访问速度变慢

这篇官方教程上面说要使用A记录绑定,不要使用CNAME,因为可能会带来邮件服务无法使用等问题。
但是绑定后之后会出现两个问题:
1.domain解析到本源,就是github的美国IP,没有使用CDN,访问速度很慢;
2.每次PUSH文件都会收到一个标题“[yourusername.github.io] Page build warning”的邮件,邮件中把顶级域名认定为了subdomain,建议使用CNAME做转发,与教程自相矛盾;
折腾了好久,在account setting里面关了email通知也不行,最后就依了邮件,做了CNAME转发,结果一切正常了。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×