目标操作系统:Win7下,VM VirtualBox虚拟机安装的Ubuntu Server12.04
无法实现Win7主机与Ubuntu Server(版本12.04)虚拟机之间的文件共享,USB驱动也有问题,所以退而求其次,使用Ubuntu桌面版,版本10.04。
推荐阅读:
配置Squid代理http和rsync http://www.linuxidc.com/Linux/2013-05/84642.htm
Squid:实现高速的Web访问 http://www.linuxidc.com/Linux/2013-04/83512.htm
CentOS 6.2 编译安装Squid 配置反向代理服务器 http://www.linuxidc.com/Linux/2012-11/74529.htm
Squid在企业网中的应用 http://www.linuxidc.com/Linux/2012-10/71818.htm
编译Squid
准备工作:
下载Squid,版本:3.2.1
建立专用账户:创建名为squid的用户和组,用户目录设为/usr/local/squid。
~$sudo useradd –d /usr/local/squid –m –G vboxsf -U squid
~$ passwd squid (设置新用户的口令)
-G是将新用户加入vboxsf组,以便获取读取共享文件夹(/media/sf_S~)的权限。
按照文档‘Compiling Squid’的提示首先解决包依赖关系:
~$sudo apt-get build-dep squid3 #解决编译源码 package 的依赖关系
此间如果出错(获取一些包失败),可能是有些日子没有用虚拟机了,执行如下命令:
~$sudo apt-get update #更新软件包下载源
然后再执行‘~$sudo apt-get build-dep squid3’,注意不要安装squid3的二进制代码包。
su为用户squid并从共享文件夹拷贝squid的源文件到目录 /usr/local/squid/src中,用如下命令进行解压:
~$tar xzf squid-3.0.STABLE26.tar.gz
~$cd /usr/local/squid/src/squid-3.0.STABLE26/
~$./configure [options] #选项参见下面的说明
~$make #一次性通过!
~$make install #涉及到权限问题,将squid用户加入sudo组,然后执行:
~$sudo make install #OK!
由于此处执行命令时切换到了root账户,所以后面运行时会碰到许多的权限设置问题。
配置Squid
根据Squid网站文档,安装完毕后的目录结构如下:
实际上不是,真实情况是(squid版本3.0):
配置文件目录:/etc/squid/
图标文件目录:/share/squid/icons/
可执行文件目录:/usr/sbin/
可执行文件目录-2:/usr/bin/
库文件目录:/lib/squid/
日志目录:/var/logs/
Setting Squid's HTTP Port
保持默认值不变,3128。
http_port 3128
Where to Store Cached Data
默认系统缓存目录为 /usr/local/squid/cache,我在安装squid 3.0后实际缓存目录位于 /var/cache
cache_dir /var/cache 100 16 256
配置文件中目录确实为‘/var/cache’,没有作更改,保持默认值,默认值的含义可以随便在网上搜索可知。
Logging
默认不变:
access_log /var/logs/access.log squid
Effective User and Group ID
运行时的用户和组ID,启动时一般都是root,为安全起见,运行时改变之,我均设置为squid。
cache_effective_user squid
cache_effective_group squid
Access Control Lists and Access Control Operators
允许局域网(192.168.1.*)内的所有主机访问(注意:这里的地址与你网络的配置密切相关):
acl localnet src 192.168.1.0/255.255.255.0
http_access allow localnet
icp_access allow localnet
其它配置参数
保持默认值不变。
运行Squid
运行如下命令启动squid:
~$/usr/sbin/squid –N –d 1
关于参数可以‘--help’查看。这一过程中依次出现问题。
问题一:
FATAL: Could not determine fully qualified hostname
Page faults with physical i/o: 20
解决办法:
编辑配置文件squid.conf,找到参数‘visible_hostname’,增加一行:
visible_hostname your_host_name
主机名称可以通过执行命令‘~$uname -n’获得。
再次执行‘~$/usr/sbin/squid –N –d 1’。
问题二:
FATAL: Failed to make swap directory /var/cache/00: (13) Permission denied
解决办法:
权限问题,squid要在/var/cache/目录下创建文件目录,我编译安装squid时的账户是root,在配置中设置运行时用户为squid,所以通过以下指令修改:
~$sudo chown –R /var/cache/
再次执行‘~$/usr/sbin/squid –N –d 1’。
问题三:
WARNING: Cannot write log file: /var/logs/cache.log
/var/logs/cache.log: Permission denied
解决办法:
同样是权限问题,参照问题二执行:
~$sudo chown –R /var/logs/
再次执行‘~$/usr/sbin/squid –N –d 1’。
问题四:
2012/08/17 15:10:47| /var/cache/00: (2) No such file or directory
FATAL: Failed to verify one of the swap directories, Check cache.log
for details. Run 'squid -z' to create swap directories
if needed, or if running Squid for the first time.
解决办法:
根据提示执行:
再次执行‘~$/usr/sbin/squid –z –N –d 1’,注意增加了一个选项‘-z’。
OK!查看日志文件‘/var/logs/cache.log’,看到如下输出即可:
……
2012/08/17 15:49:30| Accepting HTTP connections at 0.0.0.0, port 3128, FD 11.
2012/08/17 15:49:30| Accepting ICP messages at 0.0.0.0, port 3130, FD 12.
2012/08/17 15:49:30| HTCP Disabled.
2012/08/17 15:49:30| Ready to serve requests.
2012/08/17 15:49:31| Done scanning /var/cache swaplog (0 entries)
……
小结:主要都是权限设置的问题,这与执行安装时的用户有关。在‘Effective User and Group ID’步骤中设定好运行时用户和组ID后,需要检查配置文件与日志文件路径,执行以下命令:
~$sudo chmod squid:squid -R /etc/squid
~$sudo chmod squid:squid -R /var/logs
测试Squid
根据Squid官网提供的文档应当使用‘client’命令测试,可经搜索后发现3.0版本的没有此命令。经查询和系统搜索发现更改为‘squidclient’,另外还有‘RunCache’和‘RunAccel’命令,均在目录‘/usr/bin/’下(注意不是squid命令所在的‘/usr/sbin/’目录。
另外在安装Squid的源代码目录‘src’下有目录‘tools’,该目录下也有客户端测试命令‘squidclient’,另外还有一个执行脚本‘cachemgr.cgi’。
首先在代理服务器上打开浏览器看看是否能够正常浏览网页。
执行如下命令:
~$/ usr/bin/squidclient mgr:info
屏幕输出如下:
HTTP/1.0 200 OK
Server: squid/3.0.STABLE26
Mime-Version: 1.0
Date: Fri, 17 Aug 2012 13:03:56 GMT
Content-Type: text/plain
Expires: Fri, 17 Aug 2012 13:03:56 GMT
Last-Modified: Fri, 17 Aug 2012 13:03:56 GMT
X-Cache: MISS from WY-Ubuntu-2
Via: 1.0 WY-Ubuntu-2 (squid/3.0.STABLE26)
Proxy-Connection: close
Squid Object Cache: Version 3.0.STABLE26
Start Time: Fri, 17 Aug 2012 13:01:14 GMT
Current Time: Fri, 17 Aug 2012 13:03:56 GMT
Connection information for squid:
Number of clients accessing cache: 1
Number of HTTP requests received: 1
Number of ICP messages received: 0
Number of ICP messages sent: 0
Number of queued ICP replies: 0
Number of HTCP messages received: 0
Number of HTCP messages sent: 0
Request failure ratio: 0.00
Average HTTP requests per minute since start: 0.4
Average ICP messages per minute since start: 0.0
Select loop called: 28890 times, 5.585 ms avg
Cache information for squid:
Hits as % of all requests: 5min: 0.0%, 60min: 0.0%
Hits as % of bytes sent: 5min: 100.0%, 60min: 100.0%
Memory hits as % of hit requests: 5min: 0.0%, 60min: 0.0%
Disk hits as % of hit requests: 5min: 0.0%, 60min: 0.0%
Storage Swap size: 0 KB
Storage Swap capacity: 0.0% used, 100.0% free
Storage Mem size: 104 KB
Storage Mem capacity: 1.3% used, 98.7% free
Mean Object Size: 0.00 KB
Requests given to unlinkd: 0
Median Service Times (seconds) 5 min 60 min:
HTTP Requests (All): 0.00000 0.00000
Cache Misses: 0.00000 0.00000
Cache Hits: 0.00000 0.00000
Near Hits: 0.00000 0.00000
Not-Modified Replies: 0.00000 0.00000
DNS Lookups: 0.00000 0.00000
ICP Queries: 0.00000 0.00000
Resource usage for squid:
UP Time: 161.343 seconds
CPU Time: 0.556 seconds
CPU Usage: 0.34%
CPU Usage, 5 minute avg: 0.37%
CPU Usage, 60 minute avg: 0.37%
Process Data Segment Size via sbrk(): 2776 KB
Maximum Resident Size: 28720 KB
Page faults with physical i/o: 19
Memory usage for squid via mallinfo():
Total space in arena: 3040 KB
Ordinary blocks: 2943 KB 2 blks
Small blocks: 0 KB 0 blks
Holding blocks: 1520 KB 8 blks
Free Small blocks: 0 KB
Free Ordinary blocks: 96 KB
Total in use: 4463 KB 98%
Total free: 96 KB 2%
Total size: 4560 KB
Memory accounted for:
Total accounted: 1886 KB 41%
memPool accounted: 1886 KB 41%
memPool unaccounted: 2673 KB 59%
memPoolAlloc calls: 2007
memPoolFree calls: 984
File descriptor usage for squid:
Maximum number of file descriptors: 1024
Largest file desc currently in use: 13
Number of file desc currently in use: 13
Files queued for open: 0
Available number of file descriptors: 1011
Reserved number of file descriptors: 100
Store Disk files open: 0
Internal Data Structures:
26 StoreEntries
26 StoreEntries with MemObjects
25 Hot Object Cache Items
0 on-disk objects
第一次运行,许多统计数据都是0。
执行如下命令获取网页:
~$/usr/bin/squidclient -t 1 http://www.linuxidc.com
遇到两个问题,获取页面失败。
问题一:
如果输出中出现类似‘access deny/denied’字样,说明在前面的配置‘Access Control Lists and Access Control Operators’有误,需要检查IP地址。由于是在本机测试,所以我在squid.conf中增加一行:
http_access allow localhost
问题二:
页面报告如下错误:
HTTP/1.0 501 Not Implemented
折腾了一会儿,发现是命令选项有误,不能指定‘-t 1’,该命令限定代理的跳数,可能是在家里测试,中间还有一个无线路由器的缘故。取消该选项,执行如下命令,OK!可以看到页面被get回来了。
~$/usr/bin/squidclient http://www.linuxidc.com
OK!!!