服务器迁移小记
2016-11-06 by Dron

上个月,2016 杭州云栖大会召开,阿里云宣布云产品全线打折,刚好我的服务器 12 月到期,顺手就购入三年,真的很便宜。
本站一直用的万网虚机,记不清几年了,原来的技术方案是 PHP + MySql,新的服务器上,我准备部署 Node + MongoDB,也就引发了这篇文章所述的事情。
站点上的东西不多,大多数都是纯静态内容,迁移起来很方便,资源路径替换替换也就好了,其它若干 PHP 页面,也都寻找最省事的方案,几个简单原则:
- 为了不影响搜索引擎的收录,所有原来的 URL保证全部可访问;
- 所有页面基本功能正常;
- 所有的统计埋点不受影响;
Server
基本思路是动静分离,借助 connect 模块 分配路由,使用 connect-modrewrite 中间件 做重定向:
- /api/**下的都是- JSON或- JSONP接口,使用 mongodb 模块 读写数据库,向全站所有应用提供数据服务;
- 其它部分都是纯静态,使用 vhost 中间件 分割虚拟主机,使用 serve-static 中间件 驱动每个站点;
博客
以前用的 WordPress, 因为一年下来也没写两篇,基本接近荒废,纯静态就够用,现在换成 Hexo,走线下编译。
搜索功能成了问题,本想在 /api/** 下做个服务,懒得写代码就放弃了,最终方案是借助 Hexo 的 hexo-generator-json-content 插件 生成 JSON 索引,改造 NexT 主题内置的 local-server 界面来达到目的。
Tracker
Tracker 是我 2012 年写的一个工具,几年没有更新了,里面有部分 PHP 脚本,现在一一替换成 Node,能够正常跑起来,里面的功能没有细测。
PS: 此工具后来被前百度同事集成到了 WEB 前端助手 这个 Chrome 插件中,并进行后续的维护,同时欢迎试用。
Rhymer
Rhymer 是前不久写的一个小应用,技术方案也是 PHP + MySql,现在数据迁移至 MongoDB,PHP 用 Node 全部重写。
404
最后,connect 如果没有命中所有地址规则,则响应一个 404 页面,该 404 页面的代码直接从老站点上搬过来。
其它小问题
由于技术方案差异,迁移过程中遇到一些小问题,不过都得到妥善解决:
- 打包脚本现在采用 Webpack,很多 小 Demo 早期用了 Browserify 由于要替换资源进行过重新打包,经测试能正常跑进来,功能没有一一细测。
- 动过的前端代码都改为 ES6 语法,存在混用的情况,最终都编译成 ES5,所以基本没啥问题。
- mgdict 魔鬼辞典是很早写的一个- PHP应用,由于价值不大,改造有成本,最终放弃迁移,寿终正寢。
- 由于存在多年,老服务器上还有一堆目录,目测没啥用,打个大包存档,或者留待二期迁移。
(本文完)
