如何将Memcached安装到运行CentOS的CPanel中
最近,我试图将VBulletin论坛配置为使用Memcached进行缓存。
我一直在寻找一些易于设置的教程,但没有找到任何有用且简单的教程。
我已经在Mac上安装了memcached服务器,所以对此有了一些想法,当我成功时,我想到写这篇文章来也帮助他人。
要在任何软件中安装和使用Memcached缓存,我们需要做以下三件事。
- 安装Memcached服务器使用的libevent库
- 安装memcached服务器并启动它
- 为Memcache安装PHP扩展
在安装Memcached服务器之前,只需在要使用的任何位置创建目录。
我们将在那里下载所有二进制文件,并将其用于我们的安装目的。
在CentOS上安装libevent
运行以下命令以在CentOS上安装libevent。
使用最新的libevent稳定版本。
wget https://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz tar xvfz libevent-2.0.20-stable.tar.gz cd libevent-2.0.20-stable ./configure make make install
上面的命令将在您的CentOS服务器上安装libevent。
在CentOS上安装Memcached服务器
运行以下命令以下载最新的Memcached服务器库并进行安装。
检查他们的以获取最新版本。
wget https://memcached.googlecode.com/files/memcached-1.4.15.tar.gz tar xvfz memcached-1.4.15.tar.gz cd memcached-1.4.15 ./configure make make install
上面的步骤将安装Memcached服务器,现在您可以按照以下命令启动它。
memcached
疑难解答提示
如果出现以下错误"加载共享库时出错:libevent-1.4.so.2:无法打开共享库文件:没有这样的文件或者目录",那么您需要通过以下命令注册libevent。
export LD_LIBRARY_PATH= /usr/local/lib
您应该在用户个人资料(.bash_profile)中保留上述export命令,这样就不必始终导出它。
如果您使用的是root用户,则可能会收到一条错误消息,因为" [memcached]如果没有-u开关,不能以root身份运行"。
您无法使用root用户运行Memcached。
使用以下命令启动Memcached服务器。
Memcached安全提示
确保在启动Memcached服务器时使用-l选项,以便只有特定的IP可以连接到Memcached实例。
如果您不使用此选项,那么任何知道memcached的IP和端口的人都可以使用telnet连接它,这是安全威胁。
memcached -d -u nobody -p 11211
现在尝试使用telnet连接到memcached服务器,并从memcached telnet命令运行一些命令以确保其正常工作。
当您对memcached服务器运行良好感到满意之后,请转到下一步安装PHP Memcache扩展。
在CentOS上安装PHP Memcached Extension
运行以下命令以安装PHP Memcached扩展并进行配置。
确保使用最新的稳定版本。
wget https://pecl.php.net/get/memcache-2.2.7.tgz tar xvfz memcache-2.2.7.tgz cd memcache-2.2.7 phpize ./configure make make install
上面的命令将安装Memcached扩展,但是要与PHP一起使用,我们需要在php.ini文件中对其进行配置,然后重新启动apache Web服务器。
vi /usr/local/lib/php.ini
将以下行添加到php.ini文件。
extension=memcache.so
检查extension_dir变量(如果未在php.ini中设置)(很可能是首次安装任何扩展程序),然后添加以下几行以提供目录位置。
确保像在服务器中一样更改目录位置。
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613" extension=memcache.so
现在您的PHP配置已完成,还可以加载Memcached扩展名,请运行以下命令以重新启动apache Web服务器。
service httpd restart
运行以下命令以确认已加载Memcache模块。
php -m
测试PHP Memcache扩展
要测试一切是否正常,只需创建一个包含以下内容的PHP文件。
<html> <head> <title>PHP Memcache Extension Test</title> </head> <body> <?php $memcache = new Memcache; $memcache->connect('localhost', 11211) or die ("Could not connect"); echo "Server's version: {$memcache->getVersion()}"; $tmp = new stdClass; $tmp->string_attribute = 'theitroad'; $tmp->string_attribute = 123; $memcache->set('key', $tmp, false, 10) or die ("Failed to save temporary object at memcache server"); echo "Data from the cache:\n"; print_r($memcache->get('key')); ?> </body> </html>
现在,从浏览器访问此PHP文件,如果得到如下输出:
Server's version: 1.4.15Data from the cache: stdClass Object ( [string_attribute] => 123 )
这意味着一切都很好。
Memcached服务器运行良好,PHP Memcache模块能够连接并保存/检索数据到缓存服务器。