作者归档:xinlu

scrapy在Window7和Centos6.5下的安装

在window下直接使用pip进行安装scrapy,可能会失败,原因是scrapy依赖比较多的其它库如pyopenssl\twisted等第三方库,这些库有一些是需要使用vc进行编译的,而这些库有可能也是需要Git进行下载。

也许到这里你已经知道需要准备什么环境来安装scrapy了。正是如下所示:

1.安装ActivePython-2.7.8.10-win32,内置了pip,easy_install这个包管理工具,省去了不少麻烦。

2.安装visual studio 2008+,+表示可以更新的版本如VS2010、VS2012等。

3.安装Git-1.9.2-preview。

4.pip install scrapy,耐心等待可以了。

 

在CentOS中呢?会遇到比较多的麻烦,原因是centos系统自带了python2.6版本,而我们开发使用的版本是2.7.x版,在centos中的yum包管理工具,直接依赖python2.6,如果直接使用python2.7.x源码编译然后make install方式安装,会导致yum工具无法使用,这是我们不愿意看到的。使用activepython2.7.8就可以避免了吗?答案是NO,但为什么仍然使用它呢?原因是它集成了较多开发包和工具,很省事。

安装顺序如下:

1.安装ActivePython-2.7.8.10-linux,点击install.sh文件,安装到/activepython2.7目录下。

2.使用vim在/etc/profile文件尾部添加执行路径,如下:

export PATH=/activepython2.7/bin: $PATH

3.运行source /etc/profile,在当前终端上激活该路径。

4.运行echo $PAHT检查目标路径是否在输出结果中。

5.检查pip 和easy_install 命令是否正常。

6.在安装scrapy前先根据如下命令安装编译环境。

yum erase firefox,如果不想升级firefox,可把firefox的安装命令移除,一般情况下erase firefox后,需要重启系统。

yum -y install firefox  gcc gcc-c++ autoconf automake gdb git perl svn libtool flex bison  pkgconfig vim subversion git lrzsz  openssl curl wget curl p7zip mysql安装所有基础开发环境。

yum install -y python-devel libxml2-devel libxslt-devel python-lxml sqlite-devel libffi-devel openssl-devel mysql-devel zlib-devel curl-devel 安装scrapy依赖的库文件,如果不安装这些开发库,scrapy会安装失败,本人经历了N多次失败后,才找到所有的依赖库,在找到这些依赖库前,曾多次怀疑centos是否具备安装activepython的条件,而这种怀疑是基于window安装太顺畅所影响的。

yum -y install gcc gcc-c++ autoconf automake git perl svn libtool flex bison pkgconfig vim subversion lrzsz openssl curl wget curl p7zip mysql python-devel libxml2-devel libxslt-devel python-lxml sqlite-devel libffi-devel openssl-devel mysql-devel zlib-devel curl-devel

7.在第6个步骤完成后,就可以直接使用命令如下完成安装了。

pip install scrapy

 

Scrapy的调试

关于scrapy调试问题,较为麻烦,故在百度上搜索,再结合本人实践,有如下方法:

1.直接利用scrapy的cmdline.py执行文件进行调试。如下图:

C:\Python27\Lib\site-packages\scrapy\cmdline.py

crawl dmoz

D:\vipshop\crawls\tutorial\

在命令行执行的命令为:

scrapy crawl dmoz

工程文件目录结构:

方法二:

在scrapy.cfg目录下新建main.py文件,并填上如下代码:

from scrapy import cmdline

cmdline.execute(“scrapy crawl dmoz”.split())

然后就可直接调试该文件了。

方法三:

把scrapy\cmdline.py文件拷贝到与scrapy.cfg相同的目录下,直接调试运行,也是可行的。

此外这也方法也启发我们,我们可以自由地定制我们想要的运行方式,例如在该代码上增加套接字功能又或者增加调度器等,而在scrapy目录下所有关键py文件都支持这样的拷贝,是不是很神奇哦。

腾迅佛学,我没有看错吧??

image

腾讯弹窗,竟然让我看到他的佛学网站,一下子惊呆了。而我很快注意到它的一篇文章,《因果律:佛法与科学的暗合》,地址:http://rufodao.qq.com/a/20141124/049271_all.htm#page1

在以前传统文化(儒释道)一直是由公益团体在推广,曾几何时我与身边朋友谈及佛学文化时,总感到有莫名的障碍。

现在有腾讯这样的大公司站出来,弘扬传统文化,这是怎样的一种功德哦!!!

想想那个国家的富强、兴旺不是建立在本土文化的强大之上哦!真心期望更多的大公司能关注传统文化,迈入弘扬传统文化的前列中。

爱你的敌人

这标题是德宝老师在《八正道》书藉里的,描述关于“正思维”的一个小标题,触动较大,于是摘出来,分享一下。原文如下:

有些人质疑,怎么可能把慈爱的感觉延伸到敌人身上,质疑自己怎么可能真诚地说:“愿我的敌人幸福、快乐与平安;愿他们没有任何困难或问题。”

这问题是因错误的思维而生起,唯有心中充满困惑者,才会表现冒犯或伤害我们的行为,我们称那样的人为“敌人”。但事实上,没有“敌人”这种人,是烦恼造成我们困扰。正念为我们指出,心的状态并非是永恒的,它们是短暂、可改正与可调整的。

具体而言,对于确保自身平安、快乐的最佳做法是,帮助敌人解决他们的问题。若所有的敌人都无痛苦、不满、苦恼、恐慌、偏执、压力与焦虑,他们将不再有理由成为我的敌人。一旦无烦恼,敌人就像其他任何人一样,是个大好人。

触动大,是因为曾几何时,我就是“因错误思维,心中充满困惑”,偶然无心冒犯或伤害别人,是自已制造了烦恼,却又把这烦恼加诸于别人,认为“把别人改变了,然后自已就拥有快乐了”。“无明”的种子创造出一个“假想敌”,让自已忘记真正的敌人是“无明”,是自已内心深处的“贪嗔痴慢疑见”,自已才是真正且唯一的敌人。

推荐阅读这本书《八正道》,链接是http://www.putixin.com/continue/zhuanzai/bazhengdao120627/bzd-22.htm

MySQL双写主从配置

以前一般是两个子集群,在写数据时,两个子集群都写。偶然在网上看到双机互为主从的实现,感到有点意思,于是体验一下,感觉还是不错的,特别是数据量较少时,不失为一种防止单点故障的方案。
第一步授权
主:192.168.237.134
create database abc;
create table cc(id int, name varchar(20),age int);
grant replication slave on *.* to ‘root’@’192.168.237.133’identified by ‘123456’;
flush privileges;

主:192.168.237.133
create database abc;
create table cc(id int, name varchar(20),age int);
grant replication slave on *.* to ‘root’@’192.168.237.134’identified by ‘123456’;
flush privileges;

第二步 my.conf文件配置[mysqld]段:
主:192.168.237.134
server-id= 1
binlog-do-db=abc #多个数据库,可重复添加,如果没有设置,则所有数据库。
binlog-do-db=abc
binlog-ignore-db = mysql
master-host=192.168.237.133
master-user=root
master-password=123456
master-port=3306
master-connect-retry=60
log-bin

主:192.168.237.133
server-id= 2
binlog-ignore-db = mysql
master-host=192.168.237.134
master-user=root
master-password=123456
master-port=3306
master-connect-retry=60
replicate-do-db=abc
binlog-do-db=abc
log-bin

Ubuntu更新源

1.阿里云国内源,一健换源

sudo curl -L https://github.com/AndyYoungDev/ubuntu-aliyun-sources/releases/download/shell/change.sh | bash

以前曾因为ubuntu9.04以前的更新源问题,不得不修改项目架构的很多代码,以确保能顺利在10.4上使用,这过程痛苦极了,每次改动都害怕会影响服务器的稳定性。现在可好了,偶然发现ubuntu的一个历史版本更新源,从2006年到2014年的更新源都齐全。这可算是一个好事情了。

http://old-releases.ubuntu.com/ubuntu/dists/

本人从官方源里修改域名后的9.04源地址如下:

deb http://old-releases.ubuntu.com/ubuntu/ jaunty main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ jaunty-security main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ jaunty-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ jaunty-proposed main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ jaunty-backports main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty-security main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty-updates main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty-proposed main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty-backports main restricted universe multiverse

实用工具汇聚

Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。

mysqlreport是mysql性能监测时最常用的工具,对了解mysql运行状态和配置调整都有很大的帮助。

mysqlsla是hackmysql.com推出的一款MySQL的日志分析工具,功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等。

使用fastcgi_finish_request去操作耗时的事情

在访问时,要求在返回相应的数据给客户端后,后续仍需要去处理一些其它事情,例如写日志或跨站访问等,可以使用fastcgi_finish_request来立即响应数据返回并关闭网络,然后继续处理后续的工作。

<?php
echo ‘gomytest:’.date(‘Y-m-d H:i:s’);
file_put_contents(‘log.txt’, date(‘Y-m-d H:i:s’) . ” test1\n”, FILE_APPEND);
if (function_exists(“fastcgi_finish_request”)) {
      function fastcgi_finish_request()  {
      }
}
sleep(10);
file_put_contents(‘log.txt’, date(‘Y-m-d H:i:s’) . ” test2\n”, FILE_APPEND);
sleep(10);
file_put_contents(‘log.txt’, date(‘Y-m-d H:i:s’) . ” test3\n”, FILE_APPEND);
?>  

测试的结果是能立即返回,并正确处理后续操作。

image