rsync同步多台服务器并排除文件

之前说过手里两台VPS做了Mysql的读写分离,以便减轻机器的内存压力,而且不用每天再对数据库做定时备份操作。数据库做了主从之后每次更新文件都需要FTP连接两台VPS,然后上传文件……偶尔出现某台文件忘记更新的情况…以前知道有rsync这个东西用来做文件同步,但之前没多台机器来折腾,所以也没细看文档。直接Google了一些资料(见文章最后),实际操作一下通过ssh方式同步文件并不复杂:apt-getinstallrsync安装rsyncrsync-vzrtopg--delete-essh*.*.*.*:/home/test//home/test/就可以开始同步文件了如果ssh的端口不是默认的22端口则需要rsync-vzrtopg--delete-e"ssh-p端口"*.*.*.*:/home/test//home/test/这样来处理如果需要忽略某些文件则rsync-vzrtopg--e...

精彩继续

Varnish泛解析域名设置

先说点废话好久没写点东西了,拖延症最近越来越严重,整整两个星期没写过几行代码,倒是追完了一部写了一年多的小说:(时间浪费的太严重了。从上周开始其实就在强迫自己打开SublimeText写一些东西,但每次把项目给拖进去就感觉很难进入状态。拖拖拉拉半周过去了,终于勉强算是写了一个半成品出来。而且这个半成品还只是把前一阵买过来个一套PHP的代码重写了一下,将只能在SAE运行的代码迁移到了VPS上,并改成了Python平台。正文这套代码其实就是博客右侧的一个天猫店铺收集的Python版本而已,部署代码时候用到了泛域名解析的部分,nginx的conf规则如下:if($uri~*"/(.*)/(.*)/(.*)\.html"){rewrite"^/(.*)/(.*)/(.*)\.html$"/$1/$2/$3.htmllast;}if($host~*"(.*)\.94425\.com"){set$su...

精彩继续

Python+Requests抓取中文乱码改进方案

前两天更新了下网址缩短这个项目的requests版本后抓取要缩短的网址title时候乱码的比例大幅上升。但有不想靠降级版本来解决。之前最早开始用Requests做抓取内容工具时候也碰到过一些中文乱码的情况,最后搜索到的Python中文乱码的最常见的解决方案就是重置页面编码importsysreload(sys)sys.setdefaultencoding('utf-8')同样的,俺做网址缩短项目时候抓取要缩短网址的Title时候也是采用这样的方式。但是升级了Requests版本之后出现了大量的GBK编码url的Title无法正常识别的情况。在本地也升级了最新的Requests版本后写了一个函数做了一些测试,发现重置页面默认编码之后虽然抓取到了某些GBK编码的页面内容,抓取后的结果也是unicode格式,但是转换成正常gbk时候出现各种莫名其妙错误。这时候使用r.encoding输出抓取的页...

精彩继续

将淘宝客链接转换为正常淘宝、天猫商品链接

前一阵有个朋友采集了一堆的淘宝客推广链接,但很多都是加密后的格式http://s.click.taobao.com/t?e=zGU34CA7K%2BPkqB07S4%2FK0CITy7klxxrJ35Nnc0vWaHl37H18cjdMO0RFhunziOFb%2FYR38ThEJAQs2K2vhBq7dgXLmU%2BSx8tU3PLk9d5Pc2Up下文均简称此为淘客链接,朋友希望能转换成正常的淘宝链接,然后他再去自己的微博等地方单独推广这些商品。他Google了一下,现有的大部分工具都是将普通的淘宝商品链接转换成淘宝客链接,没找到现成的工具可以反向操作的。朋友QQ问我有没办法实现,本来计划用c#写一个gui的工具给他,但他机器上没.netframework加上朋友对这些东西一知半解,还是用Python做了一个简单的实现这里就不放出最终的成品了,只放出操作的过程和核心的函数。首先拿到一...

精彩继续

解决Python自带的json序列化工具不能序列化datetime类型数据问题

Python自带的json.dumps方法序列化数据时候如果格式化的数据中有datetime类型数据时候会提示错误TypeError:datetime.datetime(2012,12,12,15,47,15)isnotJSONserializable搜索出来的解决方案基本都是用Django的DjangoJSONEncoder来解决,为了一个简单的办法引入Django这个大家伙实在有点不知所谓。不过这一点就体现了Django的资料多的优势了正在下决心是否干脆下载了Django的代码去翻出DjangoJSONEncoder这个方法来的时候看到了官方文档中关于json.dumps方法的一个参数(cls)说明:TouseacustomJSONEncodersubclass(e.g.onethatoverridesthedefault()methodtoserializeadditionaltyp...

精彩继续

微信公共平台api Python(bottle)版

微信这个东西估计宅男没几个不熟悉的吧,微信经过这么两年多的发展终于向开放平台跨出了友好的一步。蛋疼的以为微信会出一个详细的api等接口,兴奋不已的去申请了微信公共平台,然后开始找各种api的位置……花费了近一个小时,依然没找到……最后动用Google大杀器,终于找到了这么个链接。我了个去的,没比这还简单的api文档了吧。最让人无法理解的是:居然没有本地开发环境支持,每次都要放在生产环境去调试。最让人欣慰的是:就那么俩方法,生产环境调试几次也就完事了。Python(bottle)版代码如下:#-*-coding:utf-8-*-frombottleimportdebug,default_app,run,get,request,postimportsys,os,time,libxml2dom@get('/')defindex():returnrequest.GET.get('echostr')...

精彩继续

varnish3.x清除缓存方法

首先吐槽一下varnish文档的匮乏,不管中文还是英文文档都比nginx之流少的可怜。而且尤其是2.x和3.x版本语法各种不一样,网上中文的文档基本都是从张宴的使用Varnish代替Squid做网站缓存加速器的详细解决方案[原创]文章上衍生或者甚至只是复制过去的。vainish2.x版本都是通过varnishadm-T127.0.0.1:3500url.purgew*$方式清空缓存,而且张宴的文章中没有提及auth验证的问题。当然因为张宴的文章中并没有任何引入-S这个参数,所以也就无需做任何验证即可清除缓存。而我上篇文章中的启动参数是有使用-S/etc/varnish/secret这个参数的。所以在清空缓存时候也需要指定此参数。如果清除缓存时候不指定此参数varnish会提示Authenticationrequired。这个提示Google了一下午才找到原因所在。所以最终我的清除缓存的命令...

精彩继续

自动识别网站友情链接,并自动识别网站RSS地址

起因:GoogleReader订阅的Blog中有人推荐了一篇通过友情链接进行博客Feed的搜集,你的博客收录了吗,文章作者并没有给出完整的代码,只给出了识别友情链接所在区域的算法,而且看样子该博主也不大计划提供了。所以:算法有了,完整代码还远么:D最终:用不到120行的代码就把完整识别友情链接&&获取网站RSS地址的代码全部实现了,当然核心算法还是用的上边提到的那个文章中的算法。完整代码:#-*-coding:utf-8-*-importlibxml2dom,sys,requestsreload(sys)sys.setdefaultencoding('utf-8')defaffect(points,keep_ratio,ratio,power):keep=points*keep_ratioifratio>=1.:returnpointsreturnkeep+(points-...

精彩继续

使用varnish取代nginx反代功能

作为一个工具控最手贱的就是更换各种工具,更新一次工具就要熟悉半天。从Arch换到debian本意是为了环境能稳定一些且少一些折腾,终于熟悉了debian之后就开始折腾各种软件,尝试了使用apt-get搭建环境发现很多不舒服的地方,然后用了一天时间又折腾回编译版本的环境。昨天编译完软件,拾起了很早之前放在收藏夹的一些varnish资料翻了一下,和现在用的nginx反代前端比较下了,没去管那么多的跑分、测评,只是感觉了varnish的一些灵活和强大,然后再一次「中毒」……在某一台vps上安装了varnish2.x版本后,网上搜到的vcl的写法有点不舒服,用了一下根据varnish官方的建议安装了3.x。2.x的vcl文件见https://gist.github.com/3992376升级成3.x后……坑爹的原2.x的vcl文件不能用了…继续Google,找到一个写的还算清晰的3.x的vcl,简...

精彩继续

Debian下配置samba和Windows7共享

虽然在博客写的最多的是php和python的东西,但实际上俺真心是一个.NET程序员,而且是平时接触不到inx环境的纯粹WIN平台程序员。所以一个inx最基本的操作对我来说都可能需要花费一定时间去Google去摸索。因为无法将电脑环境完全替换成Linux,所以为了调试一段小脚本特意装了一个最小环境(我能做到的最小环境)的Debian在虚拟机里。又因为实在记不住繁多的vi快捷键,虽然用过一段时间个gvim在WIN上,但依然还是降伏不了这个「神器」。所以,写脚本还是在WIN平台使用SublimeText2编辑器写好之后放在虚拟机去执行。之前虽然知道samba这个东东,但实在是没自己亲手动手实践过(因为vps也用不到这个东西),翻了一下在我的myBaseDesktop中不知道什么时候记录过一篇关于samba配置的文章。按照这篇文章实际操作了下居然小小成功了……实际操作步骤如下:apt-getin...

精彩继续