麦子花开

Discuz使用阿里云OCS服务

  • QQ空间
  • 微博

又是一个凌晨,在重置了五次系统,请教了一位高手,百度无数次之后,终于搞定了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
Bash

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 ..
Bash

4) 安装源码包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
最后修改:2024 年 9 月 18 日

休对故人思故国,且将新火试新茶。诗酒趁年华!

查看评论

查看评论
  • 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)应用充分融合于一体,帮助网站实现一站式服务。