又是一个凌晨,在重置了五次系统,请教了一位高手,百度无数次之后,终于搞定了Discuz连接OCS缓存。感谢阿里云论坛OCS板块的版主mayle,同样感谢那些分享各种教程的可爱的人们,同时感谢自己,在电脑前坐了八个小时没动。下面把我的安装过程整理出来,希望可以帮助到其他人,同时做个记录,方便日后查询。
首先,我用的系统是CentOS 6.5 x64的版本。之前的环境配置用的阿里云的一件安装包,在阿里云帮助中心有下载,并且有详细的安装教程,这部分不再多说。
此教程适用于Centos及 Aliyun Linux 6系列版本
1)首先需要确认是否安装了gcc-c++等组件可以使用如没有请执行,
yum install gcc+ gcc-c++
使用gcc –v查看版本是否为4.2(含)以上 【必须要安装GCC GCC要大于等于4.2】
2) 安装SASL相关环境 【请先检测下是否有已安装了这些包,如有则不需要安装】
yum install cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib
3) 安装源码包libmemcached 【推荐版本libmemcached-1.0.16】
请先检测下是否有已安装了这些包【包含源码包】如有则不需要安装
wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz tar zxvf libmemcached-1.0.16.tar.gz cd libmemcached-1.0.16 ./configure --prefix=/alidata/server/libmemcached make makeinstall make clean cd ..
4) 安装源码包memcached 【推荐版本为memcached-2.1.0】
安装MEMCACHED前需要确认是否有zlib-devel包没有需要执行
yum install zlib-devel
请先检测下是否有已安装了memcached客户端包【包含源码包】如有则不需要安装,但需要重新编译增加-enable-memcached-sasl这个扩展
wget http://pecl.php.net/get/memcached-2.1.0.tgz
tar zxvf memcached-2.1.0.tgz
cd memcached-2.1.0
/alidata/server/php/bin/phpize(这条命令一定要在memcached-2.1.0目录下执行,否则会报错。如果系统中有两套PHP环境,需绝对路径调用该命令/usr/bin/phpize,该路径为使用OCS的PHP环境路径)
./configure --with-libmemcached-dir=/alidata/server/libmemcached --with-php-config=/alidata/server/php/bin/php-config --enable-memcached-sasl (注意这个参数)
make
make install
【备注】--with-php-config=/alidata/server/php/bin/php-config这部分是我安装的时候报错,我自己加上的。
5)修改php.ini文件(locate找该文件,如果系统中有两套PHP环境,需找到使用OCS的PHP环境路径,对应修改之),增加 extension=memcached.so
依赖 :
Memcached 2.1.0扩展必须使用libmemcached 1.0.x的库,低于1.0的库不能够成功编译。编译 libmemcached时GCC要求在4.2以上。
搞完以上这些就说明给php成功的安装了memcached扩展,可以运行phpinfo检查下,我的截图如下:
然后安装discuz,安装后修改配置文件config_global.php,在memcached部分加入一下两行,并且在server里面填上OCS内网地址。
$_config['memory']['memcache']['user'] = '***********';//阿里云ocs账号
$_config['memory']['memcache']['passwd'] = '*********';//阿里云ocs密码
最后,覆盖下面我提供的这个memory_driver_memcache.php文件,路径:source/class/memory/,理论上支持x2到x3.1所有版本,但只做了X3.1 SC_GBK的测试,其他版本使用前请先自行测试(经测试Discuz X 3.2可以使用)。
如果你服务器上没有安装php-memcache,而只安装了php-memcached,请先覆盖这个文件,路径:source/class/discuz,不覆盖的话会导致memcached缓存不会被启用。
弄完这些后,去OCS控制台看看命中率有没有数字,如果命中率还是0的话,说明还存在问题。
附件下载:
discuz_memory memory_driver_memcache (已更新)
参考到的教程:
http://bbs.aliyun.com/read/146736.html?spm=5176.7189909.0.0.kGboX4 http://help.aliyun.com/view/11108324_13703944.html?spm=5176.7150518.1996836753.9.TVbwJc http://www.swei.us/cloud-computing/92.html
Comments | 10 条评论
Mayle Sone
出于性能考虑,我后来更新过相关文件了,你最好同样更新一下,发布新文件的时候最好署名一下
麦子花开
@Mayle Sone : 谢谢提醒,已经更新~
呆奇
最后一步,make之后提示:
Build complete.
Don’t forget to run ‘make test’.
make install之后提示:
Installing shared extensions: /vhs/ext/tpl_php52/lib/php/extensions/no-debug-non-zts-20090626/
我也不知道成功了没有…… 重启之后在phpinfo里面也没有见到Memcached…… 求助
麦子花开
@呆奇 : ·没有成功吧
陌上花開
Discuz 都出到3.2了么。
阿里云我主机我觉得太贵,存了640打算买的结果看太贵就没买
麦子花开
@陌上花開 : 快去申请吧,新注册用户,通过支付宝实名认证后,可以申请半年免费的,只需支付带宽和磁盘费用就可以~
Capbone
什么需求下要这么用?discuz不就是评论系统吗?
麦子花开
@Capbone : 大站,访问量200W以上。还有这个Discuz! X是康盛公司(Comsenz)推出的一个以社区为基础的专业建站平台,让论坛(BBS)、社交网络(SNS)、门户(Portal)、群组(Group)、开放平台(Open Platform)应用充分融合于一体,帮助网站实现一站式服务。
Capbone
@麦子花开 : 哦哦哦,想成disqus了…
麦子花开
@Capbone : 明白了,我想也不可能不知道dz啊