mac 添加php扩展支持阿里云memcache数据库

首先声明:阿里云memcache目前不支持公网直接访问。

官方文档:https://help.aliyun.com/knowledge_detail/38615.html

但是由于本地开发,不测试的话提交到服务器,难免带来很多问题。阿里云提供的解决方案是通过阿里云ECS做一次转发,这样你必须要有一台阿里云ECS服务器。

好了,废话不多说。

memcached基于libmemcached,所以先要安装memcached

1、下载安装libmemcached源码,下载地址https://launchpad.net/libmemcached/+download,我们下载1.0.18版本

wget  https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz

tar -zxvf libmemcached-1.0.18.tar.gz

cd libmemcached-1.0.18

./configure --prefix=/usr/local/libmemcached --with-memcached --enable-sasl

注意 ./configure命令在mac 10.12.*系统安装时会报错,信息如下:

2 errors generated.
make[1]: *** [libmemcached/libmemcached_libmemcached_la-byteorder.lo] Error 1
make: *** [all] Error 2

可能是我的系统版本过低导致的问题,解决如下

vi .configure 修改

if ac_fn_cxx_try_compile "$LINENO"; then :
    ac_cv_have_htonll=yes
else
    ac_cv_have_htonll=no
fi

变为:

ac_cv_have_htonll=no

viclients/memflush.cc 修改

if (opt_servers == false)

变为:

if (opt_servers == NULL)
之后configure便通过了

make

sudo make install


2、下载安装memcached的源码,下载地址http://pecl.php.net/package/memcached,我们选择稳定版2.2.0,下载3.0版本可能编译不通过(我的系统版本前面说过10.12.5)。

wget http://pecl.php.net/get/memcached-2.2.0.tgz
tar -zxvf memcached-2.2.0.tgz
cd memcached-2.2.0
phpize
./configure --with-php-config=/usr/bin/php-config  --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-sasl


注意,这里configure的时候也可能会报错

pkg-config not found configure: error: Please reinstall the pkg-config distribution

这里提示需要安装pkg-config

wget https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz

tar -zxvf pkg-config-0.29.2.tar.gz

cd pkg-config-0.29.2

./configure --with-internal-glib

make

sudo make install

然后继续configure

./configure --with-php-config=/usr/bin/php-config  --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-sasl

make

sudo make install

3、修改 php.ini 文件 增加

extension=memcached.so

memcached.use_sasl = 1


4、自此,php的memcached扩展已经装好,检查

php -i|grep memcached


如果有显示,说明memcached扩展安装成功。

5、重启apache或者nginx服务器

sudo apachectl restart 或者sudo nginx -s reload

6、这个时候本地扩展已基本完成,但是还不能够在本地使用阿里云的memcached

按照官方步骤操作

  1. 在云服务器 ECS Linux 中安装 rinetd。

    1. wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd
    2. sed -i 's/65536/65535/g' rinetd.c (修改端口范围,否则会报错)
    3. mkdir /usr/man&&make&&make install

    注意:rinetd 安装包下载地址不确保下载可用性,您可以自行搜索安装包进行下载使用。

  2. 创建配置文件。

    1. vi /etc/rinetd.conf
  3. 输入如下内容。

    1. 0.0.0.0 11211 Memcache的链接地址 11211
    2. logfile /var/log/rinetd.log

  4. 执行 rinetd 命令启动 rinetd。

    注意:通过echo rinetd >>/etc/rc.local可以设置为自启动。可以使用 pkill rinetd 结束该进程。

  5. 验证测试。

    在本地通过 telnet 连接 ECS Linux 服务器后进行数据写入和查询验证,比如安装了 rinetd 的服务器的 IP 是 1.1.1.1,即 telnet 1.1.1.1 11211

    通过上述步骤即可实现:您本地的 PC 或服务器通过公网连接 ECS Linux 11211 端口,进而访问云数据库 Memcache 版。

这时如果你的ECS设置了安全策略,还要进入阿里云控制台,把你当前的公网IP加入安全组,操作如下:

1、进入ECS控制台,依次选择云服务器,安全组


通过上面的步骤,就可以通过本地测试使用阿里云memcache。

猜你喜欢

转载自blog.csdn.net/u013091013/article/details/79500049