今天一朋友来求助，在Ubuntu和Debian的LNMP环境下安装memcache后页面一直报502错误，然而在CentOS下却非常正常。起先我以为问题出在memcache上，然而在我手动telnet连接memcache之后发现memcache是正常运行的。接下來我检查了PHP-FPM的日志，里面除了一堆线程退出重启的日志以外也没有什么错误。乍一看这问题十分诡异，实际上是PHP-FPM与memcache3.0.8版本的PHP模块有点兼容问题，经过测试在Apache下就没这个问题。下面将说明下如何在军哥的lnmp一键包上解决这问题。实际上，这问题的解决十分简单，将memcache版本降至2.2.7的Stable版本就能解决这问题，而我们使用大部分一键包安装memcache都会安装上3.0.8这个最后一个版本，然而这个版本是个beta版本。因为军哥的一键包在CentOS下默认都是使用yum来进行安装，由于CentOS的yum只会提供Stable版本的软件包，所以在CentOS上并不会遇到这个问题的原因就是如此。然而由于军哥的一键包里写死了memcache的版本号，所以我们要手动修改军哥一键包里的脚本所使用的memcache版本号为2.2.7。打开一键包目录下的 include/version.sh 文件，将PHPMemcache_Ver='memcache-3.0.8' 修改为：PHPMemcache_Ver='memcache-2.2.7' 之后，我们去下载一下memcache2.2.7的源文件：http://pecl.php.net/get/memcache-2.2.7.tgz 将这个文件上传至一键包的 src 目录下，如有memcache-3.0.8.tgz和其解压的目录，将其一并删除，只保留memcache-2.2.7.tgz。如果我们之前已经安装过memcache的话我们得先卸载一次memcache：./addons.sh uninstall memcached 卸载完毕了之后我们再使用以下命令重新安装一次就可以正常使用memcache了：./addons.sh install memcached 到此为止，这问题就能完美得解决。当然我个人是觉得，都用memcache了的程序都是些上古老程序，不然正常的都用memcached了。碰上这种老程序就别lnmp跑PHP-FPM了怕是以后碰到的问题会更多，老老实实的跑lamp或者lnmpa就是了。
军哥的lnmp一键包（https://lnmp.org）算是在一键安装lnmp环境中非常好用的一个一键包，能帮助我们快速搭建起lnmp、lamp和lnmpa的web生产环境。但有的朋友可能需要使用openresty的lua扩展，这篇文章就会教你们怎么在军哥的一键包中为nginx安装openresty的lua扩展。首先我们要先安装LuaJIT，为了稳定我选择的是稳定的2.0.4版本进行安装（我相信一个运维都懒得各种折腾各种修吧？）cd /root wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz tar zxvf LuaJIT-2.0.4.tar.gz make 等这条命令执行完了之后，我们要接着执行：make install PREFIX=/usr/local/luajit 再等在执行完毕，我们要下载openresty的nginx-lua扩展和ngx_devel_kit,不过我们要注意的是nginx-lua扩展更新的比较频繁，要先记得上github上看看他新的版本号然后再修改：cd .. wget -c https://github.com/openresty/lua-nginx-module/archive/v0.10.7.tar.gz && tar zxvf v0.10.7.tar.gz wget -c https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz && tar zxvf v0.3.0.tar.gz 接下来我们要对LuaJIT做一些系统环境设置：export LUAJIT_LIB=/usr/local/luajit/lib export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0 cat > /etc/ld.so.conf.d/luajit.conf<<EOF /usr/local/luajit/lib EOF ldconfig 以上的命令依次执行，如果我们在安装了之后还要升级nginx的版本或者ngx_devel_kit、nginx-lua扩展、luaJIT中任何东西中的一种，以上的环境设置我们都还需要再重新执行一次才能正常升级。接下来我们就要开始升级nginx版本了，在升级nginx版本之前，我们要在军哥的lnmp一键包目录下的lnmp.conf文件里的Nginx_Modules_Options加上编译参数：--with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib --add-module=/root/lua-nginx-module-0.10.7 --add-module=/root/ngx_devel_kit-0.3.0 加上以上这段参数之后，我们就使用军哥的lnmp一键包中的./upgrade.sh nginx升级脚本升级一遍nginx即可完成lua扩展的安装。可能有的朋友会问，版本号一定要比当前安装的版本号高么？我在这的回答是，并不用。等重新编译完，nginx中就能使用lua扩展了。