首先声明:阿里云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
vi
clients/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
按照官方步骤操作
在云服务器 ECS Linux 中安装 rinetd。
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd
sed -i 's/65536/65535/g' rinetd.c (修改端口范围,否则会报错)
mkdir /usr/man&&make&&make install
注意:rinetd 安装包下载地址不确保下载可用性,您可以自行搜索安装包进行下载使用。
创建配置文件。
vi /etc/rinetd.conf
输入如下内容。
0.0.0.0 11211 Memcache的链接地址 11211
logfile /var/log/rinetd.log
执行 rinetd
命令启动 rinetd。
注意:通过echo rinetd >>/etc/rc.local
可以设置为自启动。可以使用 pkill rinetd
结束该进程。
验证测试。
在本地通过 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。