事件描述

事情是这样的…

我在开发机更新好了代码,运行正常,效果酷炫~

生产服务器有两台机器,当将代码分别更新到这两台机器的时候,其中一台(我们假设为A)运行正常,另外一台(我们假设为B)报告了一个奇怪的错误。接下来就是万分蛋疼的排错时间。

由于线上环境没有使用git,所有的更新都是手动将文件更新上去的,所以开始怀疑应该是代码有部分地方没有更新到的问题。

折腾了半天(真的是半天),确保代码完全一致,数据库完全一致。可以问题依旧如故,还是在报以前的错误。

吃了午饭回来,实在想不到解决办法了。就抱着试试看的心态看了下测试机器上的框架版本(phalcon框架),发现是2.x版本,再检查生产服务器上的版本,果然发现了问题,A机器版本和测试机版本一致,B机器版本居然是1.x,问题看来就出在这了。

更新框架版本一致后,问题得以解决。

总结感想

这个事情其实是个很小的地方出现了问题,可是在不敢保证代码完全一致的情况下,思路始终没想到生产服务器的版本居然不一致…所以花费了大量的时间去调试代码,确认代码是否一致等等。

而这个问题其实如果能够将线上代码也通过git进行更新的话是可以很好地解决的!大致流程(思路)如下:

  1. 开发机(因为本地没有搭建运行环境)的代码更新之后在开发机测试通过了,将开发机代码push到git服务器(gitbucket)。
  2. 确定要更新该特性/bug修复到生产服务器上时,在生产服务器上通过git pull拉取git服务器(gitbucket)的代码。
  3. 使用.gitignore忽略掉与机器相关的配置文件,编辑器生成的文件等即可。

PS:这样做还可以使代码目录中不再会有类似于IndexController.php_20160531这样的备份文件,因为所有的历史都可以在git中找到并且很快恢复出来。