使用memcached与您的vBulletin论坛减少服务器负载(Debian Etch)
版本1.0
作者:Falko Timme
在本文中,我将介绍如何通过使用memcached与您的vBulletin论坛软件一起减少服务器负载(我假设您正在使用mod_php5在Apache2上运行vBulletin)。 memcached是一个守护进程,可以将对象存储在系统的内存中(例如数据库查询的结果),可以极大地加速您的网站。 您可以通过网络使用memcached(即,将Web应用程序安装在一个服务器上,并将其记录在另一台服务器上),但通常您将其安装在一台服务器上,以避免网络开销。
应该注意的是,memcached是没有现成的解决方案来加速您的Web应用程序。 通常,您必须调整脚本(PHP,Perl等)以使用memcached,因此这需要一些工作。 幸运的是,vBulletin已经内置了对memcached的支持 - 所有你需要做的就是修改vBulletin的config.php
文件。
我不会保证这将为您工作!
1初步说明
我假设你有vBulletin安装在目录/var/www/www.example.com/web/forums中
,所以config.php
位于/var/www/www.example.com/web/forums/includes
。
2安装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:~#
然后打开/etc/php5/apache2/php.ini
...
vi /etc/php5/apache2/php.ini
...并确保你有这样的东西(可能在最后):
[...] extension=memcache.so [memcache] memcache.dbpath=/var/lib/memcache memcache.maxreclevel=0 memcache.maxfiles=0 memcache.archivememlim=0 memcache.maxfilesize=0 memcache.maxratio=0 |
之后,我们重新启动Apache,以便我们的新PHP配置生效:
/etc/init.d/apache2 restart
3配置vBulletin
接下来打开vBulletin的config.php
文件:
cd /var/www/www.example.com/web/forums/includes/
vi config.php
你应该找到这样的东西:
[...] /* $config['Datastore']['class'] = 'vB_Datastore_Memcached'; $i = 0; // First Server $i++; $config['Misc']['memcacheserver'][$i] = '127.0.0.1'; $config['Misc']['memcacheport'][$i] = 11211; $config['Misc']['memcachepersistent'][$i] = true; $config['Misc']['memcacheweight'][$i] = 1; $config['Misc']['memcachetimeout'][$i] = 1; $config['Misc']['memcacheretry_interval'][$i] = 15; */ [...] |
/ * ... * /
表示该部分被注释掉。 从该部分删除/ *
和* /
并保存文件:
[...] $config['Datastore']['class'] = 'vB_Datastore_Memcached'; $i = 0; // First Server $i++; $config['Misc']['memcacheserver'][$i] = '127.0.0.1'; $config['Misc']['memcacheport'][$i] = 11211; $config['Misc']['memcachepersistent'][$i] = true; $config['Misc']['memcacheweight'][$i] = 1; $config['Misc']['memcachetimeout'][$i] = 1; $config['Misc']['memcacheretry_interval'][$i] = 15; [...] |
(如果您的memcached运行在其他服务器或端口上,则必须调整这些设置!)
而已。 您的vBulletin现在正在使用memcached!
4链接
- memcached: http : //www.danga.com/memcached
- vBulletin: http : //www.vbulletin.com/
- PHP: http : //www.php.net
- Apache: http : //httpd.apache.org
- Debian: http : //www.debian.org