设为首页 收藏本站
查看: 963|回复: 0

[经验分享] CentOS 6.5上安装squid 3.0

[复制链接]

尚未签到

发表于 2018-12-27 07:05:21 | 显示全部楼层 |阅读模式
  一、准备工作
  [root@squid ~]# iptables -L -n
  Chain INPUT (policy ACCEPT)
  target     prot opt source               destination         
  

  Chain FORWARD (policy ACCEPT)
  target     prot opt source               destination         
  

  Chain OUTPUT (policy ACCEPT)
  target     prot opt source               destination         
  [root@squid ~]# getenforce
  Disabled
  [root@squid ~]# hostname
  squid.contoso.com
  [root@squid ~]# crontab -l
  0 * * * * /usr/sbin/ntpdate   210.72.145.44 64.147.116.229 time.nist.gov
  [root@squid ~]# yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb krb5-devel libidn libidn-devel openssl openssl-devel make gcc-c++ cmake bison-devel ncurses-devel
  二、编译安装squid

mkdir -p /opt/tools
cd /opt/tools/
wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE20.tar .gz
tar -zxf squid-3.0.STABLE20.tar.gz
cd squid-3.0.STABLE20
./configure  --prefix=/usr/local/squid \
--enable-async-io=100 \
--with-pthreads \
--enable-storeio="aufs,diskd,ufs" \
--enable-removal-policies="heap,lru" \
--enable-icmp \
--enable-delay-pools \
--enable-useragent-log \
--enable-referer-log \
--enable-kill-parent-hack \
--enable-cachemgr-hostname=localhost \
--enable-arp-acl \
--enable-default-err-language=English \
--enable-err-languages="Simplify_Chinese English" \
--disable-poll \
--disable-wccp \
--disable-wccpv2 \
--disable-ident-lookups \
--disable-internal-dns \
--enable-basic-auth-helpers="NCSA" \
--enable-stacktrace \
--with-large-files \
--disable-mempools \
--with-filedescriptors=64000 \
--enable-ssl \
--enable-x-accelerator-vary \
--disable-snmp \
--with-aio \
--enable-linux-netfilter \
--enable-linux-tproxy
make
make install  三、配置squid
  useradd -s /sbin/nologin -M squid   #创建squid用户
  cd /usr/local/squid/etc/
  [root@squid etc]# tree -d -L 2 /usr/local/squid  #安装完squid之后默认创建的目录
  /usr/local/squid
  ├── bin
  ├── etc
  ├── libexec
  ├── sbin
  ├── share
  │   ├── errors
  │   ├── icons
  │   └── man
  └── var
      └── logs
  

  10 directories
  squid安装后的目录说明:
            sbin/squid: squid的主程序
            bin: bin目录包含对所有用户可用的程序
            bin/RunCache: RunCache是一个shell脚本,可以用它来启动squid。假如squid死掉,该脚本自动重启它,除非它检测到经常的重启。
            bin/RunAccel: RunAccel与RunCache几乎一致,唯一的不同是它增加了一个命令行参数,告诉squid在哪里侦听HTTP请求。
            bin/squidclient: squidclient是个简单的HTTP客户端程序,可以用它来测试squid。它也有一些特殊功能,用来对运行的squid进程发起管理请求。
            libexec:libexec目录包含了辅助程序,有一些命令无法正常的启动。然而,这些程序通常被其他程序启动。
            libexec/unlinkd:unlinkd是一个辅助程序,它从cache目录里删除文件。
            libexec/cachemgr.cgi:cachemgr.cgi是squid管理功能的CGI接口。要使用它需要把它拷贝到你的WEB服务器的cgi-bin目录。
            libexec/diskd(optional):如果指定了--enable-storeio=diskd,才能看到它
            libexec/pinger(optional):如果指定了--enable-icmp,才能看到它
            etc:etc目录包含了squid的配置文件
            etc/squid.conf:这是squid的主配置文件
            var: var目录包含了不是很重要的和经常变化的文件,这些文件不必正常的备份它们。
            var/logs:该目录是squid不同日志文件的默认位置,当你第一次安装squid时,它是空的。一旦squid开始运行,你能在这里看到名字为access.log,cache.log和store.log这样的文件。
            var/cache:假如你不在squid.conf文件里指定,这是默认的缓存目录(cache_dir)。
  [root@squid etc]# diff squid.conf.default squid.conf   #默认情况下就有一个squid.conf的备份
  [root@squid etc]# vi squid.conf
  [root@squid etc]# diff squid.conf.default squid.conf
  1710c1710
  < # cache_dir ufs /usr/local/squid/var/cache 100 16 256
  ---
  > cache_dir ufs /usr/local/squid/var/cache 100 16 256  #取消cache_dir的注释
  1889c1889
  < # cache_log /usr/local/squid/var/logs/cache.log
  ---
  > cache_log /usr/local/squid/var/logs/cache.log   #启用cache_log
  1899c1899
  < # cache_store_log /usr/local/squid/var/logs/store.log
  ---
  > cache_store_log /usr/local/squid/var/logs/store.log   #启用cache_store_log
  2912c2912
  < # cache_mgr webmaster
  ---
  > cache_mgr admin@contoso.com    #设置cache管理员邮箱
  2941c2941
  < # cache_effective_user nobody
  ---
  > cache_effective_user squid     #设置squid用户
  2961a2962
  > cache_effective_group squid    #设置squid组
  2977a2979
  > visible_hostname  cache1.contoso.com  #设置可见的主机名,如果不设置会报错
  [root@squid etc]# chown -R squid:squid /usr/local/squid/var/logs
  [root@squid etc]# /usr/local/squid/sbin/squid -k parse  #测试squid的配置文件语法是否正确
  2016/10/15 09:09:01| Processing Configuration File: /usr/local/squid/etc/squid.conf (depth 0)
  2016/10/15 09:09:01| Initializing https proxy context
  # 上面的结果说明配置文件正确
  [root@squid etc]# chown -R squid:squid /usr/local/squid/var/
  [root@squid etc]# /usr/local/squid/sbin/squid -z   #对cache目录进行初始化
  2016/10/15 09:13:14| Creating Swap Directories
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/00
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/01
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/02
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/03
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/04
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/05
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/06
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/07
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/08
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/09
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/0A
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/0B
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/0C
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/0D
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/0E
  2016/10/15 09:13:14| Making directories in /usr/local/squid/var/cache/0F
  下面看一下初始化的结果:
  [root@squid etc]# ll /usr/local/squid/var/cache/
  total 64
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 00
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 01
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 02
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 03
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 04
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 05
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 06
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 07
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 08
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 09
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 0A
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 0B
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 0C
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 0D
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 0E
  drwxr-x--- 258 squid squid 4096 Oct 15 09:13 0F
  [root@squid ~]# ls /usr/local/squid/var/cache/00/
  00  0C  18  24  30  3C  48  54  60  6C  78  84  90  9C  A8  B4  C0  CC  D8  E4  F0  FC
  01  0D  19  25  31  3D  49  55  61  6D  79  85  91  9D  A9  B5  C1  CD  D9  E5  F1  FD
  02  0E  1A  26  32  3E  4A  56  62  6E  7A  86  92  9E  AA  B6  C2  CE  DA  E6  F2  FE
  03  0F  1B  27  33  3F  4B  57  63  6F  7B  87  93  9F  AB  B7  C3  CF  DB  E7  F3  FF
  04  10  1C  28  34  40  4C  58  64  70  7C  88  94  A0  AC  B8  C4  D0  DC  E8  F4
  05  11  1D  29  35  41  4D  59  65  71  7D  89  95  A1  AD  B9  C5  D1  DD  E9  F5
  06  12  1E  2A  36  42  4E  5A  66  72  7E  8A  96  A2  AE  BA  C6  D2  DE  EA  F6
  07  13  1F  2B  37  43  4F  5B  67  73  7F  8B  97  A3  AF  BB  C7  D3  DF  EB  F7
  08  14  20  2C  38  44  50  5C  68  74  80  8C  98  A4  B0  BC  C8  D4  E0  EC  F8
  09  15  21  2D  39  45  51  5D  69  75  81  8D  99  A5  B1  BD  C9  D5  E1  ED  F9
  0A  16  22  2E  3A  46  52  5E  6A  76  82  8E  9A  A6  B2  BE  CA  D6  E2  EE  FA
  0B  17  23  2F  3B  47  53  5F  6B  77  83  8F  9B  A7  B3  BF  CB  D7  E3  EF  FB
  [root@squid ~]# ls /usr/local/squid/var/cache/00/ |wc -l
  256
  也就是根据在squid.conf文件配置的cache_dir ufs /usr/local/squid/var/cache 100 16 256,一共在cache_dir中生成16个目录,每个目录下又生成256个目录。
  下面启动squid:
  [root@squid etc]# /usr/local/squid/sbin/squid -N -d1  #启动squid(前台启动)
  2016/10/15 09:15:14| Starting Squid Cache version 3.0.STABLE20 for x86_64-unknown-linux-gnu...
  2016/10/15 09:15:14| Process ID 21815
  2016/10/15 09:15:14| With 64000 file descriptors available
  2016/10/15 09:15:14| Performing DNS Tests...
  2016/10/15 09:15:14| Successful DNS name lookup tests...
  2016/10/15 09:15:14| helperOpenServers: Starting 5/5 'dnsserver' processes
  2016/10/15 09:15:14| User-Agent logging is disabled.
  2016/10/15 09:15:14| Referer logging is disabled.
  2016/10/15 09:15:14| Unlinkd pipe opened on FD 14
  2016/10/15 09:15:14| Swap maxSize 102400 + 8192 KB, estimated 8507 objects
  2016/10/15 09:15:14| Target number of buckets: 425
  2016/10/15 09:15:14| Using 8192 Store buckets
  2016/10/15 09:15:14| Max Mem  size: 8192 KB
  2016/10/15 09:15:14| Max Swap size: 102400 KB
  2016/10/15 09:15:14| Rebuilding storage in /usr/local/squid/var/cache (DIRTY)
  2016/10/15 09:15:14| Using Least Load store dir selection
  2016/10/15 09:15:14| Set Current Directory to /usr/local/squid/var/cache
  2016/10/15 09:15:14| Loaded Icons.
  2016/10/15 09:15:14| Accepting  HTTP connections at 0.0.0.0, port 3128, FD 15.
  2016/10/15 09:15:14| Accepting ICP messages at 0.0.0.0, port 3130, FD 16.
  2016/10/15 09:15:14| HTCP Disabled.
  2016/10/15 09:15:14| Pinger socket opened on FD 18
  2016/10/15 09:15:14| Ready to serve requests.
  2016/10/15 09:15:15| Done scanning /usr/local/squid/var/cache swaplog (0 entries)
  2016/10/15 09:15:15| Finished rebuilding storage from disk.
  2016/10/15 09:15:15|         0 Entries scanned
  2016/10/15 09:15:15|         0 Invalid entries.
  2016/10/15 09:15:15|         0 With invalid flags.
  2016/10/15 09:15:15|         0 Objects loaded.
  2016/10/15 09:15:15|         0 Objects expired.
  2016/10/15 09:15:15|         0 Objects cancelled.
  2016/10/15 09:15:15|         0 Duplicate URLs purged.
  2016/10/15 09:15:15|         0 Swapfile clashes avoided.
  2016/10/15 09:15:15|   Took 0.99 seconds (  0.00 objects/sec).
  2016/10/15 09:15:15| Beginning Validation Procedure
  2016/10/15 09:15:15|   Completed Validation Procedure
  2016/10/15 09:15:15|   Validated 25 Entries
  2016/10/15 09:15:15|   store_swap_size = 0
  2016/10/15 09:15:15| storeLateRelease: released 0 objects
  2016/10/15 09:55:14| NETDB state saved; 0 entries, 0 msec
  2016/10/15 10:36:54| NETDB state saved; 0 entries, 0 msec
  查看一下监听端口:

  [root@squid ~]# netstat -tunlp|grep squid
  tcp        0      0 0.0.0.0:3128                0.0.0.0:*                   LISTEN      21815/squid         
  udp        0      0 0.0.0.0:3130                0.0.0.0:*                               21815/squid         
  [root@squid ~]# lsof -i :3128
  COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
  squid   21815 squid   15u  IPv4  36097      0t0  TCP *:squid (LISTEN)
  四、简单的测试
  由于上面的配置只是简单的一个正向代理的配置,所以这里使用IE浏览器进行代理连接测试。

  首先,打开IE浏览器的浏览器选项,在连接选项卡中点击局域网设置。

  在代理服务器中输入squid服务器的IP和端口,确定,然后打开百度进行刷新。
  

  为了确定是否是从squid代理进行浏览网页,我清空了squid的access.log,然后再进行跟踪,下面是详细的日志信息:
  [root@squid ~]# > /usr/local/squid/var/logs/access.log
  [root@squid ~]# tail -f /usr/local/squid/var/logs/access.log
  1476545163.478    214 192.168.49.1 TCP_MISS/200 48583 CONNECT www.baidu.com:443 - DIRECT/14.215.177.38 -
  1476545163.545     69 192.168.49.1 TCP_MISS/200 12924 CONNECT ss0.baidu.com:443 - DIRECT/119.146.74.33 -
  1476545163.547     74 192.168.49.1 TCP_MISS/200 12252 CONNECT ss2.baidu.com:443 - DIRECT/119.146.74.33 -
  1476545163.613    131 192.168.49.1 TCP_MISS/200 618 CONNECT ss0.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545163.635    161 192.168.49.1 TCP_MISS/200 1151 CONNECT ss0.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545163.636    163 192.168.49.1 TCP_MISS/200 1135 CONNECT ss0.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545163.751    277 192.168.49.1 TCP_MISS/200 1103 CONNECT ss0.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545164.094    622 192.168.49.1 TCP_MISS/200 1087 CONNECT ss0.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545164.094    618 192.168.49.1 TCP_MISS/200 1055 CONNECT ss0.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545164.094    622 192.168.49.1 TCP_MISS/200 1524 CONNECT ss0.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545164.095    480 192.168.49.1 TCP_MISS/200 1684 CONNECT ss1.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545164.095    460 192.168.49.1 TCP_MISS/200 3139 CONNECT ss1.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545164.444    107 192.168.49.1 TCP_MISS/200 634 CONNECT sp3.baidu.com:443 - DIRECT/14.215.177.37 -
  1476545223.537  60061 192.168.49.1 TCP_MISS/200 15152 CONNECT ss1.baidu.com:443 - DIRECT/119.146.74.33 -
  1476545223.549  60076 192.168.49.1 TCP_MISS/200 1156 CONNECT ss0.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545223.555  60079 192.168.49.1 TCP_MISS/200 9479 CONNECT ss1.baidu.com:443 - DIRECT/119.146.74.33 -
  1476545223.738  60100 192.168.49.1 TCP_MISS/200 2238 CONNECT ss1.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545224.154  60606 192.168.49.1 TCP_MISS/200 1625 CONNECT ss0.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545224.154  60606 192.168.49.1 TCP_MISS/200 1657 CONNECT ss0.bdstatic.com:443 - DIRECT/119.146.74.32 -
  1476545224.376  60236 192.168.49.1 TCP_MISS/200 25575 CONNECT www.baidu.com:443 - DIRECT/14.215.177.37 -
  1476545224.437  60109 192.168.49.1 TCP_MISS/200 953 CONNECT www.baidu.com:443 - DIRECT/14.215.177.38 -
  1476545258.936  95184 192.168.49.1 TCP_MISS/200 3736 CONNECT sp0.baidu.com:443 - DIRECT/14.215.177.38 -
  1476545258.994  78103 192.168.49.1 TCP_MISS/200 1742 CONNECT sp1.baidu.com:443 - DIRECT/14.215.177.37 -
  五、其他
  把squid命令路径添加到系统环境变量:

  echo 'PATH=/usr/local/squid/sbin:/usr/local/squid/bin:$PATH' >> /etc/profile
  source /etc/profile
  让squid在后台运行:
  /usr/local/squid/sbin/squid -D
  将squid添加到开机启动:
  echo '/usr/local/squid/sbin/squid -D' >>/etc/rc.local
  squid启动脚本:

  #!/bin/bash
  # chkconfig: 345 88 14
  # description: squid Daemon
  

  case "$1" in
       start)
           /usr/local/squid/sbin/squid -D
           ;;
   stop)   /usr/local/squid/sbin/squid -k shutdown
           ;;
   restart)
           /usr/local/squid/sbin/squid -k reconfigure
   ;;
   parse)
           /usr/local/squid/sbin/squid -k parse
   ;;
   check)
           /usr/local/squid/sbin/squid -k check
   ;;
   *)
           echo "Usage: $0 start|stop|restart|check|parse"
               ;;
  esac
  配置squid日志轮询:
  /usr/local/squid/sbin/squid -k rotate
  配置squid日志切割:
  1)添加定时任务:
  0 0 * * *  /bin/sh   /opt/tools/rotate_squid.sh >/dev/null 2>&1
  2)rotate_squid.sh脚本的内容如下:
  cd /usr/local/squid/var/logs
  [ -f access.log ] && mv access.log access_$(date +%F).log
  /usr/local/squid/sbin/squid -k rotate
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-656215-1-1.html 上篇帖子: Iptables+layer7+squid的应用 下篇帖子: Squid3.0与2.7的配置差异
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表