Chinaunix首页 | 论坛 | 博客
  • 博客访问: 588323
  • 博文数量: 187
  • 博客积分: 10025
  • 博客等级: 上将
  • 技术积分: 2990
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-18 17:40
文章分类

全部博文(187)

文章存档

2010年(1)

2009年(23)

2008年(163)

我的朋友

分类: LINUX

2008-08-25 10:27:31

Linux squid安装与配置
Linux squid安装与配置
2008年07月18日 星期五 下午 12:10

官方网站:  
SARG官方:

wget
wget

参考资料:

测试环境:AS4+squid-3.0+sarg-2.2.5

一、安装squid
# groupadd squid
# useradd -g squid -s /sbin/nologin squid
# tar -zxvf squid-3.0.STABLE7.tar.gz
# cd squid-3.0.STABLE7
# cp helpers/basic_auth/NCSA/ncsa_auth /usr/bin/
# vi src/errorpage.cc        //把下面的“ "Generated %T by %h (%s)\n"” 修改为“ "Generated %t by %h (%s)\n"”即可
    {
ERR_SQUID_SIGNATURE,
     "\n
\n"
     "


\n"
     "
\n"
     "Generated %T by %h (%s)\n"
     "
\n"
     " \n"
    },
# ./configure --prefix=/usr/local/squid --enable-gnuregex --enable-arp-acl --enable-auth="basic" --enable-basic-auth-helpers="NCSA" --enable-async-io=80 --enable-storeio=ufs --enable-icmp --enable-kill-parent-hack --enable-snmp --disable-ident-lookups --enable-cache-digests --enable-ssl --enable-delay-pools --enable-poll --enable-linux-netfilter --enable-underscore --enable-err-language="Simplify_Chinese" --enable-default-err-languages="Simplify_Chinese"

解释说明:
--prefix=/usr/local/squid //指定安装路径
--enable-arp-acl //这样可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗
--enable-async-io=80 //这个主要是设置async模式来运行squid,我的理解是设置用线程来运行squid,如果服务器配置很不错,有1G以上内存,cpu使用SMP的方式的话可以考虑设成160或者更高。如果服务器比较糟糕就根据实际情况设了。另外此项还另cache文件支持aufs
--enable-auth-modules //此编译选项启用认证模块,可以对访问代理用户进行授权。
--enable-cache-digests //使能缓存摘要,本来此项目的是为了在Squid集群服务之间迅速发现缓存对象,这里在本地使用,可以加快请求时,检索缓存内容的速度。
--enable-err-language="Simplify_Chinese" 和--enable-default-err-languages="Simplify_Chinese" //指定出错是显示的错误页面为简体中文
--enable-delay-pools //此选项使能一个延时池,这样能对某些特定的请求限制额定带宽。
--enable-gnuregex //由于Squid大量使用字符串处理做各种判断,加此项能更好处理。
--enable-icmp //加入icmp支持
--disable-ident-lookups //防止系统使用RFC931规定的身份识别方法。
--enable-kill-parent-hack //关掉suqid的时候,要不要连同父进程一起关掉,这个当然要啦
--enable-linux-netfilter //允许使用Linux的透明代理功能。
--enable-poll //应启用Poll()函数而不是select()函数,通常而言poll(轮询)比select要好,但configure(脚本程序)已知Poll在某些平台下失效, 若你认为你比configure编译配置脚本程序要聪明的话,可以用这个选项启用Poll。总之就是用这个可以提升性能就是啦。
--enable-snmp //此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid支持SNMP接口。
--enable-storeio=ufs,null //使用的文件系统通常是默认的ufs,不过如果想要做一个不缓存任何文件的代理服务器,就需要加上null文件系统。
--enable-underscore //允许解析的URL中出现下划先,因为默认squid会认为带下划线的URL地址是非法的,并拒绝访问该地址。

# make
# make install
# /usr/local/squid/sbin/squid -z      //测试Squid运行状况
# chown -R squid.squid /usr/local/squid/var/
# /usr/local/apache/bin/htpasswd -c /usr/local/squid/etc/password guest   //输入密码二次,即可。如果以后要增加用户,去掉'-c'

# vi /usr/local/squid/etc/squid.conf

http_port 80
cache_mem 128 MB
cache_dir ufs /usr/local/squid/var/cache 100 16 256
cache_effective_user squid
cache_effective_group squid
dns_nameservers 222.172.200.68
cache_access_log /usr/local/squid/var/logs/access.log
cache_store_log /usr/local/squid/var/logs/store.log
cache_log /usr/local/squid/var/logs/cache.log
pid_filename /usr/local/squid/var/logs/squid.pid
visible_hostname tglm.3322.org
client_mask 255.255.255.255
cache_mgr
error_directory /usr/local/squid/share/errors/Simplify_Chinese
auth_param basic program /usr/bin/ncsa_auth /usr/local/squid/etc/password
auth_param basic children 5
auth_param basic realm My Proxy Caching Domain
auth_param basic credentialsttl 2 hours
acl normal proxy_auth REQUIRED
http_access allow normal

acl cc arp 00:91:50:04:06:38
acl bb src 222.220.0.0/255.255.0.0
acl aa src 0.0.0.0/0

acl tt time MTWHF 10:20-18:30
acl xz urlpath_regex -i \.mp3$ \.avi$ \.wma$
acl ww dstdomain

http_access deny xz
http_access deny !tt
http_access deny ww
http_access allow cc
http_access allow bb

命令解释:
error_directory //设定错误文档
http_port 192.168.0.1:3128 //设定SQUID的代理端口 (加上IP地址,Squid就不会监听外部的网络接口)
dns_nameservers //电信公用DNS
cache_mgr      //管理者的电子邮件
sible_hostname   //标志主机名
client_mask 255.255.255.255 //告诉Squid如何处理用户,对每个请求的IP地址作为单独地址处理
httpd_accel_uses_host_header on //设定http1.1协议支持
httpd_accel_host virtual
httpd_accel_with_proxy on   //是否让squid代理本地的web服务
http_access allow all     //允许所有主机通过代理服务器上网
cache_mem 20 MB           //指定Squid可以使用的RAM
maximum_object_size 4096 KB //缓存文件的最大和最小值
minimum_object_size 0 KB
maximum_object_size_in_memory 30 KB
minimum_object_size_in_memory 0 KB
cache_dir ufs /usr/local/squid/var/cache 100 16 256 //磁盘缓存目录,100M缓存空间,16个目录,256个子目录;
cache_access_log /var/squid/access.log //客户端访问日志
cache_log /var/squid/cache.log //缓存访问情况
cache_store_log /var/squid/store.log //网页调用情况
cache_swap_low 85       //指定进行空间交换的空占比(缓存数值超过或低于某个百分比时和交换空间进行数据交换)
cache_swap_high 90
httpd_accel_port 80      //被缓存服务器的port
acl mmxfile urlpath_regex -i \.mp3$ \.avi$ \.wma$   //(-i参数忽略大小写如:mp3=MP3)
http_access deny mmxfile

# /usr/local/squid/sbin/squid -NCd1       //测试ctrl+c退出
# echo "/usr/local/squid/bin/RunCache & " >> /etc/rc.d/rc.local
# /usr/local/squid/sbin/squid -k reconfigure //启用新的配置文件
# /usr/local/squid/sbin/squid -k rotate       //截断日志
# /usr/local/squid/sbin/squid -k shutdown     //stop squid

二、安装sarg
# mkdir /usr/local/sarg
# tar zxvf sarg-2.2.5.tar.gz
# cd sarg-2.2.5
# ./configure --prefix=/usr/local/sarg --enable-mandir=/usr/local/sarg/man --enable-bindir=/usr/local/sarg/bin
# make
# make install
# vi /usr/local/sarg/sarg.conf
language english             //指定网页报告文件的语言类型,不支持中文网页。
access_log /usr/local/squid/var/logs/access.log //指定squid日志文件绝对路径。
title "squid user access reports"         //指定网页标题
output_dir /usr/local/apache/htdocs/sarg          //指定网页报告文件输出路径
overwrite_report no          //是否覆盖报告,当那个日期的报告已经存在时是否覆盖掉
mail_utility mail
topsites_num 100
exclude_codes /usr/local/sarg/exclude_codes
max_elapsed 28800000
charset UTF-8
exclude_hosts /usr/local/sarg/norecords //指定不计入排序的站点列表文件名
resolve_ip no
user_ip no                          //使用用户名显示

# vi /usr/local/sarg/norecords      //添加不计排序站点
google.com
microsoft.com
baidu.com

# /usr/local/sarg/bin/sarg     //生成报表
# vi/root/sarg-hour.sh //每小时生成
#!/bin/bash
#hour
Date=$(date -d "1 hours ago " +"%y%m%d%H")
/usr/local/squid/sbin/squid -k rotate
sleep 10
Squiddir='/usr/local/squid/var/logs'
Access='access.log.*'
/bin/mv ${Squiddir}${Access} ${Squiddir}access${Date}.log
/usr/local/sarg/bin/sarg -o /usr/local/apache/htdocs/hours -l ${Squiddir}access${Date}.log
#chmod a+x /root/sarg-hour.sh
# crontab -e
0 8,9,10,11,12,13,14,15,16,17,18,19,20 * * * /root/sarg-hour.sh

# vi /root/sarg-day.sh
#!/bin/bash
#day
Squiddir='/usr/local/squid/var/logs'
Date=$(date -d "1 day ago " +"%y%m%d")
/bin/sort -m -t " " -k 1 -o $Squiddir${Date}log_all.log ${Squiddir}access${Date}*.log
/bin/rm access${Date}*.log -rf
/usr/local/sarg/bin/sarg -o /usr/local/apache/htdocs/days -l ${Squiddir}${Date}log_all.log

# chmod a+x /root/sarg-day.sh
# crontab -e
20 1 * * * /root/sarg-day.sh

# vi /root/sarg-week.sh
#!/bin/bash
#week
Date=$(date -d "1 week ago " +"%y%m%d")
YESTERDAY=$(date –date "1 week ago" +%d/%m/%Y)
/bin/sort -m -t " " -k 1 -o $Squiddir${Date}weeklog_all.log ${Squiddir}*log_all.log
/usr/local/sarg/bin/sarg -o /usr/local/apache/week -l ${Squiddir}${Date}weeklog_all.log
# chmod a+x /root/sarg-week.sh
# crontab -e
40 * * * 5 /root/sarg-week.sh

或者        //每十分钟生成一次日志
# crontab -e
*/10 * * * * /usr/local/sarg/bin/sarg > /dev/null 2>&1

阅读(768) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~