Dron 博客

服务器迁移小记

上个月,2016 杭州云栖大会召开,阿里云宣布云产品全线打折,刚好我的服务器 12 月到期,顺手就购入三年,真的很便宜。

本站一直用的万网虚机,记不清几年了,原来的技术方案是 PHP + MySql,新的服务器上,我准备部署 Node + MongoDB,也就引发了这篇文章所述的事情。

站点上的东西不多,大多数都是纯静态内容,迁移起来很方便,资源路径替换替换也就好了,其它若干 PHP 页面,也都寻找最省事的方案,几个简单原则:

  • 为了不影响搜索引擎的收录,所有原来的 URL 保证全部可访问;
  • 所有页面基本功能正常;
  • 所有的统计埋点不受影响;

Server

基本思路是动静分离,借助 connect 模块 分配路由,使用 connect-modrewrite 中间件 做重定向:

博客

以前用的 WordPress, 因为一年下来也没写两篇,基本接近荒废,纯静态就够用,现在换成 Hexo,走线下编译。

搜索功能成了问题,本想在 /api/** 下做个服务,懒得写代码就放弃了,最终方案是借助 Hexohexo-generator-json-content 插件 生成 JSON 索引,改造 NexT 主题内置的 local-server 界面来达到目的。

Tracker

Tracker 是我 2012 年写的一个工具,几年没有更新了,里面有部分 PHP 脚本,现在一一替换成 Node,能够正常跑起来,里面的功能没有细测。

PS: 此工具后来被前百度同事集成到了 WEB 前端助手 这个 Chrome 插件中,并进行后续的维护,同时欢迎试用。

Rhymer

Rhymer 是前不久写的一个小应用,技术方案也是 PHP + MySql,现在数据迁移至 MongoDBPHPNode 全部重写。

404

最后,connect 如果没有命中所有地址规则,则响应一个 404 页面,该 404 页面的代码直接从老站点上搬过来。

其它小问题

由于技术方案差异,迁移过程中遇到一些小问题,不过都得到妥善解决:

  • 打包脚本现在采用 Webpack,很多 小 Demo 早期用了 Browserify 由于要替换资源进行过重新打包,经测试能正常跑进来,功能没有一一细测。
  • 动过的前端代码都改为 ES6 语法,存在混用的情况,最终都编译成 ES5,所以基本没啥问题。
  • mgdict 魔鬼辞典 是很早写的一个 PHP 应用,由于价值不大,改造有成本,最终放弃迁移,寿终正寢。
  • 由于存在多年,老服务器上还有一堆目录,目测没啥用,打个大包存档,或者留待二期迁移。

(本文完)