TSE部署实践
系统环境:ubuntu12.04
编译环境:g++4.1.2 gcc4.1.2
1. 环境部署
- a. g++安装
由于ubuntu12.04在安装apt-get install buildessential 后的g++版本是4.6 ,而TSE需要低版本,所以首先需部署C++环境:
$ sudo apt-get install g++4.1.2
b. gcc源码安装
在安装过程中发现源中没有gcc4.1.2 , 所以用源码安装:
1) 下载&解压源码
$ wget http://ftp.gnu.org/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2
$ tar xvjf gcc-4.1.2.tar.bz2
2) 安装依赖库, 以及软件
$ sudo apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo
3) 为头文件以及所需库添加链接
添加如下链接, 这取决于你的 Ubuntu 系统架构, 如果你使用的是64位的ubuntu系统应当使用x86_64-linux-gnu替代i386-linux-gnu
$ cd /usr/include
$ sudo ln -s i386-linux-gnu/bits bits
$ sudo ln -s i386-linux-gnu/gnu gnu
$ sudo ln -s i386-linux-gnu/sys sys
$ sudo ln -s i386-linux-gnu/asm asm
$ cd /usr/lib
$ sudo ln -s i386-linux-gnu/crt1.o crt1.o
$ sudo ln -s i386-linux-gnu/crti.o crti.o
$ sudo ln -s i386-linux-gnu/crtn.o crtn.o
4) 编译gcc
$ cd gcc-4.1.2
$ mkdir build
$ cd build
$ ../configure --prefix=/usr/local --program-prefix=sse- --libexecdir=/usr/local/lib --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --disable- multilib --enable-languages=c,c++
$ make bootstrap
5) 安装gcc
$ make install
$ cd /usr/local/bin
$ ll *gcc*
看到类似以下几个文件, 安装就完成了
i686-pc-linux-gnu-gcc-4.1.2 i686-pc-linux-gnu-ssegcc ssegcc ssegccbug
6) 切换到当前4.1.2版本
$ sudo ln -sf /usr/local/bin/i686-pc-linux-gnu-gcc-4.1.2 /usr/bin/gcc
$ sudo ln -sf /usr/local/bin/i686-pc-linux-gnu-sse-g++ /usr/bin/g++
终端输入:
$ gcc -v
$ g++ -v
当现实版本为4.1.2时,则配置成功。
c. 安装zlib
从 http://pan.baidu.com/s/1c0CaiHE 下载zlib1.2.3并编译安装:
$ tar xvzf zlib-1.2.3.tar.gz
$ cd zlib-1.2.3
$ ./configure
$ make
$ sudo make install
d.安装包flex
在终端输入:
$ sudo apt-get install flex bison
2. 安装部署TSE 的index包
a. 安装Apache2 服务器
$sudo apt-get install apache2
打开,关闭,重起Apache2的命令:
打开:sudo /etc/init.d/apache2 start
关闭:sudo /etc/init.d/apache2 stop
重起:sudo /etc/init.d/apache2 restart
b. 编译index包
1) 下载
在 http://net.pku.edu.cn/~webg/src/TSE/ 下载index.090422-2245.Linux.tar.gz ,打开终端,输入:
$ tar xvzf index.090422-2245.Linux.tar.gz
$ cd index
$ sudo make
2)配置文件
将make好后的index目录下所有文件放到 /var/www/html/yc-cgi-bin/index中(没有的路径需自行创建相关文件夹)
把tar后index/public_html中的所有文件移到/var/www/html中
建立/var/www/html/yc/TSE,并把index/public_html中的文件发到其中。
c. 修改配置文件
1) 配置文件存放在etc/apache2/ 这个文件夹下,首先配置:
etc/apache2/conf.d/charset
最后添加一行:AddDefaultCharset GB2312
2) etc/apache2/sites-available/default
这个是网站目录配置,想更改网站目录的话,需修改这个。终端执行:
$ cd /etc/apache2/sites-available
$ sudo cp default default_backup
$ sudo gedit default
打开后做如下更改:
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
改为
DocumentRoot /var/www/html/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html/>
将
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
改为:
ScriptAlias /yc-cgi-bin/index/ /var/www/html/yc-cgi-bin/index/
<Directory "/var/www/html/yc-cgi-bin/index/">
这样修改就不需要在程序中再改路径了。
d. 重启apache2
sudo /etc/init.d/apache2 restart
打开浏览器,输入http://localhost/public_html/
就出现了北大天网的搜索页面,测试可用!如下图
e. PS:网站发布
PS: 如果发布该网站,需要做如下工作:
1. 修改Aparche服务器的端口号
1)sudo gedit /etc/apache2/ports.conf
有如下内容:
NameVirtualHost*:80
Listen 80
改为
NameVirtualHost*:9001
Listen 9001
2)sudo gedit /etc/apache2/sites-enabled 000-default
将第一行<VirtualHost *:80>改为<VirtualHost *:9001>
2. 修改服务器所在PC机的IP
这一步主要是针对内网服务器,将机器的IP有自动分配IP改为手动固定IP,再把相应的网关,DNS等修改完
//到此,关闭重启Apache,sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 restart,你可以在内网内访问你的网页,例如http://你修改过的Ip:9001
3. 修改内网路由器
将9001端口号映射到路由器公网上的端口号。
//现在关闭重启Apache,sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 restart,就可以在往往访问你的网页了。例如:http://公网IP:9001.
3.安装部署TSE的tse抓取工具包
a) 下载编译
从 http://net.pku.edu.cn/~webg/src/TSE/ 下载tse.081227-1441.Linux.tar.gz ,命令行输入:
$ tar xvzf tse*
$ cd tse
$ sudo make
b) 运行搜集网页
1)终端输入:
$ sudo nohup ./Tse -c tse_seed.pku &
运行这句代码的时候,TSE的蜘蛛就开始去网络上抓取页面了。爬取后会得到10个Tianwang.raw.*****在tse的文件夹下。
2)
选取一个移到tar 后的index文件中。打开index中的DocIndex.cpp, Comm.h, Snapshot.cpp找到其中的Tianwang.raw.2559638448 改成 Tianwang.raw.*****,
注意,*****的数字应为你之前移到Index中的那个。
3) 重新打开终端:
$ cd index
$ sudo make
$ ./DocIndex
打开生成的Doc.idx记住最后的数字。打开DocSegment.cpp按源码的提示将MAX_DOC_ID的值改为此数字。
4) 在终端再次 make
$ sudo make
$ ./DocIndex got Doc.idx, Url.idx, DocId2Url.idx
$ sort Url.idx|uniq > Url.idx.sort_uniq
$ ./DocSegment Tianwang.raw.×× got Tianwang.raw.××.seg
$ ./CrtForwardIdx Tianwang.raw.××.seg > moon.fidx
$ set | grep “LANG”
LANG=en; export LANG;
$ sort moon.fidx > moon.fidx.sort
$ ./CrtInvertedIdx moon.fidx.sort > sun.iidx
将得到的sun.iidx, Url.idx.sort_uniq放到/var/www/html/yc-cgi-bin/index/Data文件夹中
4. 参考文献
在自己搭建TSE的过程中查看了很多网上的内容,文中很多内容很多来自前辈的文章,在此将其文章链接提供如下:
gcc 部署安装:
http://blog.csdn.net/vsooda/article/details/9294293
TSE 参考链接:
http://blog.csdn.net/leonsc/article/details/6422094
http://hi.baidu.com/sunnnnnnnnny/item/6637d53e2616be0bcfb9febf