又是一个凌晨,在重置了五次系统,请教了一位高手,百度无数次之后,终于搞定了Discuz连接OCS缓存。感谢阿里云论坛OCS板块的版主mayle,同样感谢那些分享各种教程的可爱的人们,同时感谢自己,在电脑前坐了八个小时没动。下面把我的安装过程整理出来,希望可以帮助到其他人,同时做个记录,方便日后查询。
首先,我用的系统是CentOS 6.5 x64的版本。之前的环境配置用的阿里云的一件安装包,在阿里云帮助中心有下载,并且有详细的安装教程,这部分不再多说。
此教程适用于Centos及 Aliyun Linux 6系列版本
1)首先需要确认是否安装了gcc-c++等组件可以使用如没有请执行,
yum install gcc+ gcc-c++
Bash使用gcc –v查看版本是否为4.2(含)以上 【必须要安装GCC GCC要大于等于4.2】
2) 安装SASL相关环境 【请先检测下是否有已安装了这些包,如有则不需要安装】
yum install cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib
Bash3) 安装源码包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 ..
Bash4) 安装源码包memcached 【推荐版本为memcached-2.1.0】
安装MEMCACHED前需要确认是否有zlib-devel包没有需要执行
yum install zlib-devel
Bash请先检测下是否有已安装了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
Bash【备注】--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密码
Bash最后,覆盖下面我提供的这个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