所有文章

迁移一个discuz站点

周五晚上帮同事迁移了一个网站,原来的网站是搭建在windows2003服务器上的,使用的是apache2 + php5.3 + mysql5.1 的架构,使用的是一个叫作PHPnow的一键安装包来管理服务器的,这种架构对于个人站长来说很方便,只要设置好了配置就可以自己搭建网站,但是扩展性特别差,简直就是没法维护,win2003本来就是老掉牙的技术了,这种服务器长期跑肯定是会有内存问题的,而用PHPnow搭建的网站,数据库,代码,数据都在一个目录里面,这样潜在的问题太大了,首先就是安全性问题,没有数据库本来应该单独放到一个专门的服务器上的。而且所有数据放在一起对于业务分离,备份也很不方便,一下备份一个几十G大的目录是很浪费资源的。

所以在我的建议下,周五晚上对这个网站做了一个迁移,新的架构是LNMP,ubuntu 15.04 server + nginx 1.6 + hhvm 3.7 + mariadb 10.0.20 + redis 3.0,当然因为服务器只有一台,所以没有做负载均衡,没有做数据库读写分离,也没有做hhvm的均衡,因为等我把环境搭建完的时候就已经很稳定了,所以暂时不打算那么做,下面简单的来说说迁移过程。

  1. 服务器安装 我给的建议是装ubuntu,因为将来环境稳定下来之后要把权限分给站长,让他自己上去查看管理一些进程,而ubuntu的桌面又是比较简单易用的。本来他们是打算安装ubuntu 15.04 desktop版的,但是因为这个版本没法驱动DELL r710服务器自带的硬Raid,所以最后换成server版了。
  2. nginx,mariadb,hhvm,redis这些软件的安装都很简单,唯一一个比较特殊的功能就是用了hhvm来替换php,不过暂时没有感到太大的性能提升。LNMP环境搭建是很简单的,很快就完成了。
  3. 接下来是服务器配置 最大的问题就是调整分区结构,服务器上有一块300G的自带硬盘,这款盘其实是由2块一样的硬盘搭建的raid0,自带了数据备份功能,所以这块盘理论上来说是不该保存太多系统以外的东西的。然后是1块1T的绿盘,这块盘的年头比较老了,以前的网站就部署在这块盘上,我打算把这个盘拿来当备份盘,还有一块2T的黑盘,这块盘是一块最新最好的数据盘,所以我打算把网站和数据库都放在这块盘上。首先要把这块2T的盘里面的数据备份了,很重要的资料一定得保存,但是里面用PHPNow的工具全量备份了站点,一个备份40G,备份一周的数据,复制这些内容浪费了好多时间。数据备份完了之后就是给硬盘分区,先分区那块2T的盘,准备分4个区,按照300+300+600+600来分,虽然暂时没有想好具体怎么使用,用fdisk /dev/sdb开始分区,分区之后就是创建文件系统,只用ext4,所以mkfs.ext4 /dev/sdbn
  4. 部署网站 这步就很简单了,直接复制代码,修改配置,修改权限,有一个比较大的问题是discuz的图片是存放在一个叫做data/attachment的目录下的,这些图片完全可以和代码分离,所以拿一块额外的分区来装就行,我是挂载的那个600G的分区到这个目录的。mount /dev/sdb6 /pathtodata/attachment

部署完成之后调试了一下网站就跑起来了,但是还有很多要做的事,discuz的代码结构比较混乱,不好改动,而且原来他的网站语言设置是GBK的,涉及到编码问题又更加复杂了,反正直到周日晚上才把问题全部解决,目前就是陆陆续续做一些服务器的小性能调优。

6月25日更新: 这几天陆陆续续发现了一些bug,有样式错误的,有插件报错的,有缓存不能及时清的等等,突然感觉压力好大,工作日只能下班之后有时间做自己的事,端午节3天假2天加一晚上都折腾那个网站去了,本以为是没什么事了,没想到后续的问题更多更麻烦,早知道就不轻易答应人家了,而且以后坚决不再折腾discuz,继续折腾这个东西只会浪费我更多时间。