服务器迁移小记
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
应用,由于价值不大,改造有成本,最终放弃迁移,寿终正寢。- 由于存在多年,老服务器上还有一堆目录,目测没啥用,打个大包存档,或者留待二期迁移。
(本文完)