一个有趣的现象是,用 Ghost / Hexo / Jekyll / Octopress 的几乎都是 IT Professionals,话题基本上离不开技术本行,导致静态写作和发布成了一种专业化的存在,烙上技术文献交流的刻板印象。更要命的是文章后面往往拖着冗长的 DISQUS 或者「多说」留言,既不「静态」也不美观。

2015 年 10 月这里就已完工,选择 Ghost 是因为它具有后台,可以不必启动终端,直接在浏览器中发布更新,同时适配桌面端和移动端浏览器,移动端网页内甚至还可以选取手机相册照片上传发布。试想一下在旅途中,手上只有一台移动设备,却依然能编辑和发布,是多么方便!最起码我有这个需求,旅行中绝对不会携带过多过重的电子设备,轻装上路。保持升级让 Ghost 不断完善,插件也逐渐增多,当然,widgets 和 plugins 让人厌烦,一个简洁的瀑布流就够了,这点上所有的静态平台都比 Wordpress 好太多。在并未做搜索引擎提交的情况下,DuckDuckGo 和 Google 表现差不多,其他的也不看了。

在接下来近5个月里不是借口自己太忙晾在一旁,就是胡乱测试,玩票磨佯工,没想好好写。随着对 Markdown 使用的增多和熟悉,发现它能够呈现的样式非常多,只要 css 设置得当就会看起来赏心悦目,用起来得心应手。这样一来我就着手 face-lifting,自己修改定制 theme。

同静态写作和发布一样,Markdown 不应只被视为程序员或者前后端工程师的书写工具,更应该是个适合大众,只需很小的学习成本就能适应的富文本格式,可以导出纯文本、 .md、PDF和HTML,作为网上发布、线下交流和电子文档都很方便,层级关系也清晰。

众多 Markdown 工具中许多人推荐 Mou,可我使用下来更喜欢 Typora 作为桌面端,直观顺手,符合自己习惯。 同时,选择 iA Writer 作为移动端工具,通过 Dropbox 同步与 Typora 一起共享编辑文件。虽然也购买了 MWeb , 但始终感觉这个强大的编辑器更适合有高阶需求的互联网技术从业人员。Typora 现在依然是 beta 免费获取,作者也在不断保持更新,等出了正式版后会付费购买。

我不指望这网站能秒开或者 ping 在 30ms 内,它不是搭建在阿里云之类的中国服务器上,不接受上级部门的自查自纠和整风运动。作为代价,这里的 ping 稳定在 220ms。之所以忍受相对较长的延迟,是因为没打算备案,将来也不会。不同于虚拟主机,VPS 有独立 IP 可以加载证书,不会因言获罪牵连他人或被他人牵连。

Ghost 是半静态的,自然就启用了七牛CDN做 css、js、照片、视频这类静态文件的加速和平滑迁移,但七牛不支持 (S)FTP 客户端,因此也同时启用了对 FTP 友好的又拍云,放置一些移动端生成的文件,比如手机照片和压缩好的视频,用 Documents 5 上传。七牛和又拍云都支持 HTTPS 的外链,但需要提交申请进行审核。七牛虽然不支持 FTP,却可以通过 Dropzone七牛插件实现拖拽上传并且自动复制外链地址到剪贴板1

写到这里,就避免不了成为一个技术文档。好吧,那就索性把 Workflow 记下来,以备不时之需。

服务器端

  1. 选 Ubuntu 14.04,安装完以后修改内核,适配ServerSpeeder
  2. 安装ServerSpeeder, 用 vi 或 nano 修改 gsomaxmodeadvacc ,随后 service serverSpeeder restart/status 重启或查看运行状态 2
  3. net-speeder 无脑双倍发包,名声不好,效果也不明显,反正这台VPS不跑大流量,DO旧金山机房 Ping 稍高但 StdDev(标准差)小,线路稳定很少丢包,因此就不装了。
  4. 禁用默认的 22 端口,修改为高端口,防止扫描3
  5. 禁用root,adduser 添加用户,SSH {user}@ip -p {port number} 登陆后用 su root 获得root权限
  6. 考虑到可能在移动端或其他设备上 SSH,我并没有生成公私钥对 ,直接用 1Password 生成了两个50位混合大小写字母符号的随机密码并用 Dropbox 同步到所有设备,一个给 {user} 用, 另一个给 root 。当然,我是为自己的懒惰寻找借口,如 Serverauditor 之类的 app 是能够存储私钥做到用 key 无密码登陆,但是连接 iTunes 导入私钥到 app 这一步我就怎么都不乐意了。
  7. 考虑到 VPS 的硬盘是 SSD 的,设置了 1G SWAP 内存,Linux 的内存管理机制是把坑全填满

安装Ghost并配置 (将来使用 Docker 安装)

  1. 安装 Nginx/Node.js + npm/Ghost
  2. 用Production模式运行 /开启PM2守护 /配置Nginx反代
    没什么好说的,基本上就这样,node.js的makefile太费时间,找了个编译好的直接下载安装。最后修改 /var/www/ghost/config.js/etc/nginx/sites-available/ghost ,把 my-site-name.com 替换成自己的域名。
  3. /var/www/ghost/config.js 里另外设置个 Reset 密码的邮箱。
  4. 升级 Ghost,参考这里的最后第十点, service ghost stop 把 Ghost 服务停掉后照着做,npm install --production 升级包管理器和依赖这一步需要一些时间。
  5. 升级后 /core/shared/ 下面的 Favicon 会改变,重新上传覆盖,运行 service ghost restart 重启服务即可。

域名与证书

  1. GoDaddy 上把域名解析 Forward 到 DNSPod.cn,在DNSPod.cn 里添加相应的三条 A 记录,考虑到地理位置和速度,就不麻烦 DigitalOcean 帮我解析了,但不保证将来不转去 Cloudflare。
  2. 在StartSSL生成证书,然后下载 ca.pemsub.class1.server.ca.pem ,进 Terminal,用 cat 命令合并证书信任链,生成新证书。检查新证书的 --end certificate----begin certificate-- 是否粘连在一起,如果是的话换行,保存为Plain Text。这样 Firefox 与安卓上的浏览器就不会报错了。
  3. .key 上传到 /etc/ssl/private 下,把 .crt 上传到 /etc/ssl/certs 下,再次修改 /etc/nginx/sites-available/ghost ,填上对应证书和私钥的相对路径。因为整站使用SSL,所以把 80 端口全部转发到 443 监听,强制跳转到 HTTPS ,同时用 rewrite 把对 /www 的访问强制跳转到根目录 /,作为一个强迫症可以不用忍受看到 www 了。​

Google Apps 邮箱配置

以前这个域名绑定过 Google Apps for Work,更新下 DNS 记录就能重新享受 Google 对老用户的免费福利。

  1. 在 DNSPod.cn 里按 Google 要求添加 CNAME 记录确认域名所有权。
  2. 添加一系列 MX 记录把邮件服务转发到 Google。
  3. 进 admin.google.com 管理账户,添加非 Admin 账户做邮箱通讯。用 1Password 生成 50 位包含大小写符号数字的随机密码,开启两部验证,~~关联 Google Authenticator~(已改用 1Password 自带的动态码两步验证)。
  4. 下载 Google Admin for iOS,移动端管理更方便。并把帐号添加到 Youtube , PhotosGoogle DriveMapsEarthHangoutsGoogle Cloud ConsoleChromecastSnapseedAnalytics 等一系列我所使用的 Google 服务中。

修改主题

  • Code Injection 里把 Google Analytics 代码填入 Footer
  • 修改 style.cssnormalize.cssdefault.hbs ,舍弃了一些需要加载的内容,修改了瀑布流和 Markdown 转换样式,尽量精简。把 Share to 这种鸡肋去掉。
  • 移动端下超宽照片和视频自动按页面比例scale,不会从 Container 里溢出来,主要靠 fitvids.js 实现。
  • 不打算添加评论插件,就这样。

CDN 配置

  1. 七牛和又拍云申请启用 HTTPS 外链。
  2. 再次修改 /var/www/ghost/config.js ,加入七牛的图片存储引擎配置
  3. Dropzone 3 中加入七牛插件,MAS购买的 Dropzone 3 可以在官网下载无沙盒版本覆盖原有版本。
  4. 又拍云需要授权操作员后才能连接 FTP。

工具

  • Terminal
  • ForkLift,Dual-Pane,支持 (S)FTP 和拖拽操作,比自带的 Finder 效率高。
  • Ghost 官方推荐Brackets,Adobe的开源文本编辑器,免费又好用,修改 css 和 js 绰绰有余。
  • 1Password (Mac / iOS / Chrome Plugin)
  • Typora for Mac
  • iA Writer for iOS
  • Dropbox for Syncronization (Mac / iOS)
  • Dropzone 3
  • Documents 5 for iOS
  • Mac 自带的拾色器: Digital Color Meter
  • Google 一个在线 RGB 转 HEX 的网站

  1. http://yansu.org/2015/01/10/use-dropzone-and-qiniu-to-store-blog-images.html

  2. 「由于业务调整,即日起,锐速将暂停用户注册与安装。」http://www.serverspeeder.com/

  3. 入侵者利用破解字典循环尝试用 22 端口ssh登录,弱口令加上不修改默认 ssh 端口有可能被扫描和攻破。我曾经的 Google Cloud Platform 台湾服务器一直遭受来自巴西「肉鸡」的 ssh-scan。