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主要用于一站式抓取。