快捷搜索:   nginx

Linux squid2.6 加速WEB 支持虚拟主机配置心得体会

本人一台web服务器,日流量约10万,上面有好几个虚拟主机,近日装上Squid 2.6进行WEB加速,Squid 和Apache均在同一台服务器上面,效果非常明显,看到论坛上好多人问如何squid2.6,虚拟主机
现在将安装过程贴出和大家一起分享,给菜鸟们一个学习机会和老鸟们一个批评指正的机会

主机配置为: CPU: AMD64 Sempron 3100   内存: 2GB RAM

下载:wget   http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE6.tar.bz2

tar jxvf squid-2.6.STABLE6.tar.bz2

安装: ./configure --with-maxfd=65536

这个--with-maxfd参数是增大squid描述符到65536

安装完毕后开始配置/usr/local/squid/etc/squid.conf

visible_hostname www.yoursite.comhttp_port xx.xx.xx.xx:80 vhost vport #xx.xx.xx.xx为这台服务器的IP地址icp_port 0cache_mem 400 MB #Squid所能使用的内存共400MB,这个值因人而异cache_swap_low 90 cache_swap_high 95 maximum_object_size 20000 KB#最大缓存文件大小,超过这个值则不缓存,这个值因人而异maximum_object_size_in_memory 4096 KB#装入内存缓存的文件大小,这个值对Squid的性能影响比较大,因为默认值是8K,超过8K的文件都不装入内存,而实际应用中很多网页和图片等都超过8KB, 个人认为如果缓存不装入内存而存在磁盘上,性能和apache直接读取磁盘文件没什么区别,甚至不如直接访问apache,现在成小于4兆的文件通通装入内存缓存.cache_dir ufs /tmp1 10000 16 256#磁盘缓存的类型和目录,大小,一二级目录的设置,这里磁盘缓存大小是10Gcache_store_log none#这个设置是不记录store.logemulate_httpd_log on#打开emulate_httpd_log选项,将使Squid仿照Aapche的日志格式logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh#日志格式combined的设置pid_filename /var/log/squid/squid.pidcache_log /var/log/squid/cache.logaccess_log /var/log/squid/access.log combined#这里是设置pid和日志文件的位置,因人而异,同时日志格式是combined,awstats可以直接调用分析了acl all src 0.0.0.0/0.0.0.0acl QUERY urlpath_regex cgi-bin .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .execache deny QUERY#设置不想缓存的目录或者文件类型acl picurl url_regex -i \.bmp$ \.png$ \.jpg$ \.gif$ \.jpeg$acl mystie1 referer_regex -i aaahttp_access allow mystie1 picurlacl mystie2 referer_regex -i bbbhttp_access allow mystie2 picurl#设置防图片盗链的,其中aaa,和bbb分别是虚拟主机的域名,referer中必须包含有aaa或者bbb的域名才能访问图片acl nullref referer_regex -i ^$ http_access allow nullrefacl hasref referer_regex -i .+ http_access deny hasref picurl#设置允许直接访问图片和拒绝referer中没有包含aaa或着bbb的访问图片cache_peer xx.xx.xx.xx parent 81 0 no-query originserver login=PASS#xx.xx.xx.xx还是本机服务器的IP,81则是apache的端口,如果你的虚拟主机有用户名和密码保护起来的目录必须设置login=PASS,否则认证会失效cache_effective_user nobodycache_effective_group nobody#squid使用的用户组和用户名

squid配置完成!



建立缓存和日志目录,并改变权限使squid能写入


mkdir /tmp1


mkdir /var/log/squid


chown -R nobody:nobody /tmp1


chmod 666 /tmp1


chown -R nobody:nobody /var/log/squid


-----------------------


Apache需要改动的配置


Port 81#要把端口改为81NameVirtualHost xx.xx.xx.xx:81#本台主机IP和端口虚拟主机配置<VirtualHost xx.xx.xx.xx>     ServerAdmin [email protected]     DocumentRoot /home/aaa/www     ServerName aaa.com     ServerAlias www.aaa.com     ScriptAlias /cgi-bin/ "/home/aaa/cgi-bin/"     <Directory />       Options Includes FollowSymLinks       AllowOverride All     </Directory></VirtualHost>如果还有别的虚拟主机请参照上面设置

---------------------------------------------------------



重启apache : apachectl restart



----------------------------------------------------------


首次运行squid要先建立缓存



/usr/local/squid/sbin/squid -z



启动squid



echo "65535" > /proc/sys/fs/file-max


ulimit -HSn 65535


/usr/local/squid/sbin/squid



大家最好把这几句话放到squid启动脚本里面,这样才会获得65536文件描述符



最好还编辑/etc/hosts 文件


添加以下内容



xx.xx.xx.xx aaa.com www.aaa.com bbb.com www.bbb.com



这样免去查询DNS,速度也快一些




现在大家肯定急着要打开浏览器访问你的网站看看效果吧,其实没啥变化,要等到有流量访问,squid把文件都装到内存后,效果才明显。可以用top命令观 察squid的内存使用情况或者用



cat /var/log/squid/access.log |grep TCP_MEM_HIT



如果看到很多的

TCP_MEM_HIT

,这表明该文件是从内存缓存读取的,squid已经起作用了!你再用浏览器打 开该文件,应该是快如闪电了。。呵呵,大功告成了! 还有其他类型的HIT,如TCP_HIT等等,这些是从磁盘读取的,我觉得加速的意义不大,只不过缓解了apache的压力而已。



后记: 我的服务器因流量很大,大多都是静态的网页,日访问量常常上10W, apache常常不堪负重,苟延残存,任务数常到达300甚至400,后来安装squid2.6接管了大部分的apache,服务器如释重负,不但速度有 提升,而且系统负载也低了很多,任务数稳定在100~120之间,任他流量波涛汹涌,服务器依然屹立不倒。不过squid就是比较吃内存,如果服务器能的 内存加到4GB那就爽多了。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论