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

[经验分享] 使用Squid搭建内网视频缓存系统

[复制链接]

尚未签到

发表于 2017-4-17 20:29:28 | 显示全部楼层 |阅读模式
 

videocache地址:http://cachevideos.com/documentation/introduction


 

软件需要:videocache、squid-2.7、apache2、redis、python2.7


 

操作系统:Ubuntu


 

文件缓存路径:/var/www/html/videocache/


 

操作步骤:

 

==================

 

1.  安装Python:Ubuntu系统自带Python2.7版本,跳过本步骤

 

2. 安装Mysql(这步没有用到,可以直接跳过)

 

$ apt-get install mysql-server mysql-client libmysqlclient-dev

$ mysql -uroot -proot

$ create database videocache

 

3. 安装apache2,安装完成后apache2自动启动,可以访问http://ip/测试apache2是否安装成功

 

$ apt-get install apache2

 

4. 安装squid2.7

 

$ wget http://www.squid-cache.org/Versions/v2/2.7/squid-2.7.STABLE9.tar.gz


$ tar -xvf squid-2.7.STABLE9.tar.gz

./configure --prefix=/usr/local/squid --sysconfdir=/usr/local/squid/etc --bindir=/usr/local/squid/bin --sbindir=/usr/local/squid/sbin --mandir=/usr/local/squid/share/man --enable-gnuregex --enable-carp --enable-async-io=80 --enable-removal-policies=heap,lru --enable-icmp --enable-delay-pools --enable-useragent-log --enable-referer-log --enable-kill-parent-hack --enable-snmp --enable-arp-acl --enable-htcp --enable-cache-digests --enable-default-err-language=Simplify_Chinese --enable-err-languages="Simplify_Chinese" --enable-poll --enable-linux-netfilter --disable-ident-lookups --enable-underscores --enable-auth="basic" --enable-basic-auth-helpers="NCSA" --enable-external-acl-helpers="ip_user" --enable-x-accelerator-vary


make

$ make install

 

5. 修改配置squid文件,用下面的内容替换

 

# --BEGIN-- videocache config for squid
#
# PASTE THIS FILE AT THE TOP OF YOUR SQUID CONFIGURATION FILE
#
# (C) Copyright Kulbir Saini <saini@saini.co.in>
# Product Website : http://cachevideos.com/
#
# Videocache Version : 3.0
#
# This configuration is for Squid versions 2.x
url_rewrite_program /usr/bin/python /usr/share/videocache/videocache.py
url_rewrite_children 15
url_rewrite_concurrency 15

acl vc_deny_url url_regex -i \.blip\.tv\/(.*)filename \.hardsextube\.com\/videothumbs \.xtube\.com\/(.*)(Thumb|videowall)
acl vc_deny_url url_regex -i \.(jpg|jpeg|gif|png|tiff|mp3|exif|riff|bmp|webp)\?

acl vc_url url_regex -i \/youku\/[0-9A-Z]+\/[0-9A-Z\-]+\.(flv|mp4|avi|mkv|mp3|rm|rmvb|m4v|mov|wmv|3gp|mpg|mpeg)
acl vc_url url_regex -i \/(.*)key=[a-z0-9]+(.*)\.flv
acl vc_url url_regex -i \-xh\.clients\.cdn[0-9a-zA-Z]?[0-9a-zA-Z]?[0-9a-zA-Z]?\.com\/data\/(.*)\.flv
acl vc_url url_regex -i \.android\.clients\.google\.com\/market\/GetBinary\/
acl vc_url url_regex -i cs(.*)\.vk\.me\/(.*)/([a-zA-Z0-9.]+)\.(flv|mp4|avi|mkv|mp3|rm|rmvb|m4v|mov|wmv|3gp|mpg|mpeg)
acl vc_url url_regex -i video(.*)\.rutube\.ru\/(.*)/([a-zA-Z0-9.]+)\.(flv|mp4|avi|mkv|mp3|rm|rmvb|m4v|mov|wmv|3gp|mpg|mpeg)Seg[0-9]+-Frag[0-9]+

acl vc_dom_r dstdom_regex -i msn\..*\.(com|net)
acl vc_dom_r dstdom_regex -i msnbc\..*\.(com|net)
acl vc_dom_r dstdom_regex -i video\..*\.fbcdn\.net
acl vc_dom_r dstdom_regex -i myspacecdn\..*\.footprint\.net

acl vc_dom dstdomain .stream.aol.com .5min.com .msn.com .blip.tv .dmcdn.net .break.com .vimeo.com .vimeocdn.com video.thestaticvube.com
acl vc_dom dstdomain .dailymotion.com .c.wrzuta.pl .v.imwx.com .mccont.com .myspacecdn.com video-http.media-imdb.com fcache.veoh.com
acl vc_dom dstdomain .hardsextube.com .public.extremetube.phncdn.com .redtubefiles.com .video.pornhub.phncdn.com .videos.videobash.com
acl vc_dom dstdomain .public.keezmovies.com .public.keezmovies.phncdn.com .slutload-media.com .public.spankwire.com .xtube.com
acl vc_dom dstdomain .public.youporn.phncdn.com .xvideos.com .tube8.com .public.spankwire.phncdn.com .pornhub.com

refresh_pattern \.video\.msn\.com\/.*\/entityid\/[a-zA-Z0-9_\-]+\? 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern \.android\.clients\.google\.com\/market\/GetBinary\/ 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern stream\.aol\.com\/(.*)/[a-zA-Z0-9]+\/(.*)\.(flv|mp4) 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern videos\.5min\.com\/(.*)/[0-9_]+\.(mp4|flv) 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern \.blip\.tv\/(.*)\.(m4v|mp4|flv) 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern proxy[a-z0-9\-]?[a-z0-9]?[a-z0-9]?[a-z0-9]?\.dailymotion\.com\/(.*)\.(flv|on2|mp4|avi|mkv|mp3|rm|rmvb|m4v|mov|wmv|3gp|mpg|mpeg) 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern vid\.akm\.dailymotion\.com\/(.*)\.(flv|on2|mp4|avi|mkv|mp3|rm|rmvb|m4v|mov|wmv|3gp|mpg|mpeg) 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern \.dmcdn\.net\/(.*)\.(flv|on2|mp4|avi|mkv|mp3|rm|rmvb|m4v|mov|wmv|3gp|mpg|mpeg) 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern video\.(.*)\.fbcdn\.net\/(.*)/[0-9_]+\.(mp4|flv|avi|mkv|m4v|mov|wmv|3gp|mpg|mpeg) 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern (.*)\.myspacecdn\.com\/(.*)\/[a-zA-Z0-9]+\/vid\.(flv|mp4|avi|mkv|mp3|rm|rmvb|m4v|mov|wmv|3gp|mpg|mpeg) 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern (.*)\.myspacecdn\.(.*)\.footprint\.net\/(.*)\/[a-zA-Z0-9]+\/vid\.(flv|mp4|avi|mkv|mp3|rm|rmvb|m4v|mov|wmv|3gp|mpg|mpeg) 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern c\.wrzuta\.pl\/w[a-zA-Z0-9]+\/[a-zA-Z0-9]+$ 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern \.hardsextube\.com\/.*\/.*\.(flv|mp4|avi|mkv|mp3|rm|rmvb|m4v|mov|wmv|3gp|mpg|mpeg) 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern -xh\.clients\.cdn[0-9a-zA-Z]?[0-9a-zA-Z]?[0-9a-zA-Z]?\.com\/data\/(.*)\.flv 20 80% 40 ignore-no-cache override-expire override-lastmod ignore-private

acl vc_deny_url url_regex -i crossdomain.xml
acl vc_method method GET
acl vc_header req_header X-Requested-With -i videocache
url_rewrite_access deny !vc_method
url_rewrite_access deny vc_header
url_rewrite_access deny vc_deny_url
url_rewrite_access allow vc_dom
url_rewrite_access allow vc_url
url_rewrite_access allow vc_dom_r
redirector_bypass on
#These lines are needed.
strip_query_terms off
maximum_object_size 200 MB
acl this_machine src 127.0.0.1
http_access allow this_machine
# --END-- videocache config for squid

    acl localnet src 192.0.0.0/8
    acl all src all
    acl manager proto cache_object
    acl localhost src 127.0.0.1/32
    acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
    acl SSL_ports port 443
    acl CONNECT method CONNECT

    http_access allow manager localhost
    http_access deny manager

    http_access deny CONNECT !SSL_ports
    http_access allow localnet
    http_access deny all

    http_port 3128
    hierarchy_stoplist cgi-bin ?
    access_log /usr/local/squid/var/logs/access.log squid
    refresh_pattern ^ftp: 1440 20% 10080
    refresh_pattern ^gopher: 1440 0% 1440
    refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
    refresh_pattern . 0 20% 4320
    acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
    upgrade_http0.9 deny shoutcast
    acl apache rep_header Server ^Apache
    broken_vary_encoding allow apache
    coredump_dir /usr/local/squid/var/cache

    cache_mem 400 MB
    maximum_object_size 4096000 KB
    minimum_object_size 0 KB
    maximum_object_size_in_memory 2560 KB

    cache_dir ufs /usr/local/squid/var/cache-data 20480 16 256
    cache_swap_low 80
    cache_swap_high 97
    strip_query_terms off
    request_body_max_size 5 MB
    memory_pools on
    memory_pools_limit 50 MB 

 

6. 配置本地DNS服务器(本步骤可省略),添加namesever指向本地的DNS

 

$ vi /etc/resolve.conf

 

nameserver 114.114.114.114

nameserver 8.8.8.8

search localdomain

 

7. 安装redis,安装完成后自动启动

 

$ apt-get install redis-server



8. 安装videocache,videocache对python依赖,需要很多类库

 

$ tar -xvf videocache-master.tar

$ cd videocache-master

$ ./install.sh

 

如果代理服务器的IP地址发生变化,请修改/etc/videocache.conf文件中的cache_host=你的IP地址

 

安装过程中会自动安装缺少的python类库,比如缺少类库名字叫A,也可以用手动执行 apt-get install python-A 进行安装

 

安装完成后,会弹出五部,照做就行

 

$ vc-update

$ apachectl -k restart

$ vc-scheduler -s restart

 

8. 启动squid

 

$ cd /usr/local/squid/

$ chmod 777 ./var

$ ./sbin/squid -k shutdown

$ ./sbin/squid -z


$ ./sbin/squid -d 1

 

第一次运行时,先运行squid -z创建缓存文件夹。缓存文件夹在/usr/local/squid/var下创建,因此创建缓存前还需运行chmod 777 /usr/local/squid/var给该文件夹权限。 


 

再运行squid -d 1开启squid即可。 




如果要关闭squid,运行squid -k shutdown则是安全关闭。 

 

$ /usr/local/squid/sbin/squid

 

启动时报错了,如下

FATAL: Cannot open '/usr/local/squid/var/logs/access.log' for writing.

 The parent directory must be writeable by the

 user 'nobody', which is the cache_effective_user

 set in squid.conf.

Squid Cache (Version 2.7.STABLE9): Terminated abnormally.

CPU Usage: 0.005 seconds = 0.001 user + 0.004 sys

Maximum Resident Size: 15008 KB

Page faults with physical i/o: 0

 

修改权限解决:

 

$ chown -R nobody /usr/local/squid/var/logs/access.log

echo>var/logs/store.log

$ chown -R nobody /usr/local/squid/var/logs/store.log

$ ./sbin/squid -z

$ ./sbin/squid -d 1



 

==================

 

现在缓存系统已经启动,所有缓存文件缓存到 /var/www/html/videocache目录下,可以通过 http://ip/videocache/ 查看缓存的内容


 

缓存服务器的默认端口是3128

 

===========================

 

下面是squid常用的命令,squidclient在squid安装bin目录下

 

squidclient -p 80 mgr:info      #取得squid运行状态信息:
squidclient
-p 80 mgr:mem     #取得squid内存使用情况:
squidclient
-p 80 mgr:objects #取得squid已经缓存的列表,使用时要小心,可能会造成squid崩溃:
squidclient
-p 80 mgr:diskd  #取得squid的磁盘使用情况:
squidclient
-p 80-m PURGE http://www.361way.com  #强制更新某个url,即清理某连接的squid
   

运维网声明 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-365564-1-1.html 上篇帖子: 自己写了个nagios 监控squid 的脚本。。 下篇帖子: Squid 3的多域名加速基本配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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