Nutch的编译安装需要JDK、Ant等环境,Nutch的主要配置项在nutch-default.xml这个文件中,自定义配置文件nutch-site.xml中配置的属性会覆盖nutch-default.xml中对应的属性,可以根据实际需要对其进行配置。
## 1 安装JDK
在Oracle官网http://www.oracle.com/technetwork/java/javase/downloads/index.html下载JDK,本教程下载的是jdk-8u45-linux-x64.tar.gz。解压JDK包:
~~~
tar zxvf jdk-8u45-linux-x64.tar.gz
~~~
解压后得到jdk1.8.0_45这个文件夹,先查看/usr/lib/路径下有没有jvm这个文件夹,若没有,则新建一个jvm文件夹:
~~~
mkdir /usr/lib/jvm
~~~
将当前解压得到的jdk1.8.0_45复制到/usr/lib/jvm中:
~~~
mv jdk1.8.0_45 /usr/lib/jvm
~~~
打开profile设置环境变量:
~~~
vim /etc/profile
~~~
在profile的末尾加入以下内容:
~~~
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_45
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
~~~
然后使用以下命令使得环境变量生效:
~~~
source /etc/profile
~~~
到此为止,JDK就安装完成了。查看JDK的版本:
~~~
java –version
~~~
若以上命令没有成功显示版本信息,那有可能是之前的操作出现问题,请仔细检查之前的操作。
## 2 安装Ant
到Ant官网http://ant.apache.org/bindownload.cgi下载最新版的Ant,本教程下载的包为apache-ant-1.9.6-bin.zip。使用以下命令解压安装包:
~~~
unzip apache-ant-1.9.6-bin.zip
~~~
解压后可得到apache-ant-1.9.5这个文件夹,将其移动到/usr/local/文件夹中:
~~~
mv apache-ant-1.9.5 /usr/local/
~~~
打开profile设置环境变量:
~~~
vim /etc/profile
~~~
在profile文件末尾加入以下内容:
~~~
export ANT_HOME=/usr/local/ant
export PATH=$PATH:$ANT_HOME/bin
~~~
使用以下命令使得环境变量生效:
~~~
source /etc/profile
~~~
查看Ant版本:
~~~
ant -version
~~~
## 3 安装配置Nutch
请参考[Nutch 1.10入门教程(一)——Nutch简介](http://www.sanesee.com/article/step-by-step-nutch-introduction "Nutch 1.10入门教程(一)——Nutch简介")下载Nutch1.10的源码,若官网最新版已经高于1.10,则需要在历史版本中进行下载。本教程下载的Nutch包为apache-nutch-1.10-src.zip。
使用以下命令解压源码包:
~~~
unzip apache-nutch-1.10-src.zip
~~~
解压后得到apache-nutch-1.10这个文件夹,然后进入文件夹:
~~~
cd apache-nutch-1.10
~~~
打开Nutch的默认配置文件:
~~~
vim conf/nutch-default.xml
~~~
找到http.agent.name这个属性,将其拷贝到conf/nutch-site.xml中,并修改value,修改后的nutch-site.xml如下:
~~~
<configuration>
<property>
<name>http.agent.name</name>
<value>myNutch</value>
<description>HTTP 'User-Agent' request header. MUST NOT be empty -
please set this to a single word uniquely related to your organization.
NOTE: You should also check other related properties:
http.robots.agents
http.agent.description
http.agent.url
http.agent.email
http.agent.version
and set their values appropriately.
</description>
</property>
</configuration>
~~~
http.agent.name这个属性是用于标记爬虫的,便于被爬的网站对其进行识别。
nutch-site.xml中配置的属性会覆盖nutch-default中的默认属性,在这里我们仅修改http.agent.name这个属性,其它的不作改变。
到此,我们就配置好Nutch了,接着,在Nutch的主目录使用以下命令对源码进行编译:
~~~
ant
~~~
首次编译过程会耗费较多时间,因为需要下载较多的依赖包,具体时间根据实际网络情况而定,快的话需要5-10分钟,慢的话需要20分钟以上。
编译开始时会报如下警告:
Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.
这个警告不影响编译结果,因此可以忽略。
编译过程中也有可能因为网络问题而出现编译失败,只需要使用如下命令清除上次编译结果(不会删除已经下载好的依赖包):
~~~
ant clean
~~~
然后再使用如下命令进行编译:
~~~
ant
~~~
在网络较差的情况下,可能会重复上面两步操作多次。
当出现如下类似信息时,也就意味着编译成功了:
~~~
BUILD SUCCESSFUL
Total time: 1 minute 7 seconds
~~~
## 4 编译后的目录结构
Nutch编译成功之后,会在主目录下生成一个runtime文件夹。其中包含deploy和local两个子文件夹。deploy用于分布式抓取,而local用于本地单机抓取。本节内容先讲解使用本地单机抓取,分布式抓取放到后续教程。
进入local文件夹,再进入bin文件夹。这里包含两个脚本文件,一个是nutch,另一个是crawl。其中,nutch包含了所需的全部命令,而crawl主要用于一站式抓取。