安装memcached和PHP5 memcache模块在Debian Etch(Apache2)
版本1.0
作者:Falko Timme
本指南介绍如何在Debian Etch系统中使用Apache2安装memcached和PHP5 memcache模块。 memcached是一个守护进程,可以将对象存储在系统的内存中(例如数据库查询的结果),可以极大地加速您的网站。 您可以通过网络使用memcached(即,将Web应用程序安装在一个服务器上,并将其记录在另一台服务器上),但通常您将其安装在一台服务器上,以避免网络开销。
应该注意的是,memcached是没有现成的解决方案来加速您的Web应用程序。 通常,您必须调整脚本(PHP,Perl等)以使用memcached,因此这需要一些工作。
本文档不附带任何形式的保证! 我不会保证这将为您工作!
1初步说明
我已经在Debian Etch服务器上测试了这个IP地址192.168.0.100
,其中Apache2和PHP5已经安装并工作。 我将在本教程中使用Apache的默认文档root / var / www
进行演示。 当然,您也可以使用任何其他vhost,但您可能必须调整本教程中使用的info.php
文件的路径。
2检查PHP5的当前状态
首先,在我们安装memcached之前,先看一下我们的PHP5安装。 为此,我们在文件root / var / www
中创建文件info.php
:
vi /var/www/info.php
<?php phpinfo(); ?> |
之后,我们在浏览器中调用该文件: http
: //192.168.0.100/info.php
正如你所看到的,我们已经安装了PHP 5.2.0
...但PHP5 memcache模块没有在页面上的任何地方提到:
3安装memcached和PHP5 memcache模块
memcached和PHP5 memcache模块可用作Debian Etch的软件包,因此我们可以按如下方式进行安装:
apt-get install memcached php5-memcache
安装完成后,memcached应该已经运行了。 您可以通过键入来检查
netstat -tap | grep memcached
server1:~# netstat -tap | grep memcached
tcp 0 0 *:11211 *:* LISTEN 3053/memcached
server1:~#
如您所见,memcached正在端口11211
(默认memcached端口)上运行,并且正在监听系统上的所有接口。 由于memcached没有内置的身份验证机制(为了不放弃速度),这意味着任何人都可以从外部连接到它并使用它。 为了避免这种情况,您可以关闭防火墙中的端口11211,也可以将memcached配置为仅在本地主机上监听。 我将在这里使用后一种方法。
为此,请打开存储在/etc/memcached.conf
中的memcached配置
:
vi /etc/memcached.conf
将-l 127.0.0.1
添加到配置中(您也可以根据需要调整其他设置 - 该文件包含每个设置的说明):
[...] # Specify which IP address to listen on. The default is to listen on all IP addresses # This parameter is one of the only security measures that memcached has, so make sure # it's listening on a firewalled interface. # -l 12.34.56.78 -l 127.0.0.1 [...] |
重新启动memcached ...
/etc/init.d/memcached restart
...运行
netstat -tap | grep memcached
再次。 正如你所看到的,memcached现在正在仅在localhost上监听:
server1:~# netstat -tap | grep memcached
tcp 0 0 localhost.localdo:11211 *:* LISTEN 3092/memcached
server1:~#
之后,我们重新启动Apache,以便我们的新PHP配置生效:
/etc/init.d/apache2 restart
然后,在浏览器中再次打开info.php
: http
: //192.168.0.100/info.php
你现在应该看到页面上提到的memcache,这意味着它已经成功地被整合并按预期工作:
要将PHP memcache模块与PHP应用程序一起使用,您应该查看memcache示例和memcache函数引用。
我将使用http://dk.php.net/manual/en/memcache.examples.php中的示例脚本,并将其保存在文件/var/www/memcachetest.php中
:
vi /var/www/memcachetest.php
<?php $memcache = new Memcache; $memcache->connect('localhost', 11211) or die ("Could not connect"); $version = $memcache->getVersion(); echo "Server's version: ".$version."<br/>\n"; $tmp_object = new stdClass; $tmp_object->str_attr = 'test'; $tmp_object->int_attr = 123; $memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server"); echo "Store data in the cache (data will expire in 10 seconds)<br/>\n"; $get_result = $memcache->get('key'); echo "Data from the cache:<br/>\n"; var_dump($get_result); ?> |
然后我在浏览器中调用该文件( http://192.168.0.100/memcachetest.php
)。 如果一切顺利,输出应该如下所示:
4链接
- memcached: http : //www.danga.com/memcached
- PHP: http : //www.php.net
- Apache: http : //httpd.apache.org
- Debian: http : //www.debian.org