什么是手撕包菜?
博主说的手撕包菜并不是吃的那个。而是一个款BT收集源码。
手撕包菜一开始只是为了纯粹的技术研究,没有去想这个搜索引擎能给网民带来什么样的福利。当时采集了大量的数据,发现有一半以上的资源为限级内容,于是试图去对资源进行分类并且做了很多这方面的工作。譬如,基本上能通过一套规则能筛选出限级内容,对资源进行分类,如果是视频还能匹配出是哪一部影片。可惜,这些工作我主观上认为对生活应用并没有太大价值,于是就放弃了深入的研究。或许是因为网民使用此类搜索引擎大部分都是具有明显的目的性。
手撕包菜经历了多次点技术变更。开源版本使用了django网站框架重写,之前是Flask,再早期是tornado。电影FM也是使用tornado,后来发现tornado并不适用于任何场景。以内容为王的网站还是django比较擅长,只是入门时间比其他框架都较长。早期数据库采用了MongoDB,因为配合Python读写数据很方便,也不用关注数据结构,搜索功能采用自带的关键词搜索,不过后来随着资源数量增加,性能也明显跟不上。今年换了WiredTiger引擎,自带的fulltext search还是不给力。另外Amazon的cloudsearch是个坑,土豪可以考虑,性能真的很不错,就是比较贵。最后还是搭建一个SphinxSearch吧,数据库也换成MySQL(MyISAM引擎),配合起来也很方便。Sphinx创建全文索引的速度很给力,官方的自评也很高,我自己测试1000w的资源(大概3GB),1分钟左右就索引完毕。不信,大家可以自测一下。
网站和爬虫代码已经上传到GitHub,地址:
手撕包菜安装方法
一.获取ssbc源代码
1.环境检测(Ssbc当前版本是基于django1.8.1开发,所需python环境为python2.7.5以上。)
1 |
python -V |
Python 2.7.5
执行python -V即可获取当前版本。
2.获取ssbc安装包
1 |
wget https://github.com/78/ssbc/archive/master.zip && yum install -y unzip && unzip master.zip |
解压后你会发现在root根目录先有个文件夹ssbc-master.
二.安装MariaDB
1.安装数据库及所需环境
1 2 3 4 5 |
yum install -y gcc gcc-c++ python-devel mariadb mariadb-devel mariadb-server wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py python get-pip.py cd ssbc-master pip install -r requirements.txt |
2.创建ssbc数据库
1 2 |
service mariadb start #启动数据库 mysql -uroot -p |
Enter password: (回车即可)
1 2 3 |
create database ssbc default character set utf8; quit; //创建成功后退出 |
三.Web设置
1 2 3 |
python manage.py makemigrations python manage.py migrate python manage.py runserver 0.0.0.0:80 #启动ssbc |
浏览器输入你的ip(如:54.43.43.43) 看网站是否能正常访问,正常则CTRL+C停止如果无法访问,请先查看你的防火墙是否关闭了,下面给出CENTOS7的防火墙关闭命令,CENTOS7以下版本的,请自行搜索方法。
关闭Centos7防火墙:
1 2 |
systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 |
1 2 |
python manage.py createsuperuser #输入用户名邮箱密码确认密码(创建管理账号) nohup python manage.py runserver 0.0.0.0:80 > /dev/zero 2>&1 & #将网站服务放在后台运行 |
四.安装Sphinx
1 2 3 |
wget http://sphinxsearch.com/files/sphinx-2.2.9-1.rhel7.x86_64.rpm yum install -y unixODBC unixODBC-devel postgresql-libs rpm -ivh sphinx-2.2.9-1.rhel7.x86_64.rpm |
然后在服务器根目录创建文件夹: data 和 tem (两个文件夹)
然后在 data 目录创建文件夹: bt
然后在 bt 目录创建文件夹: index
然后在 index 目录创建文件夹: db 和 binlog (两个文件夹)
然后在 tem 目录创建文件夹: downloads
最后 给 data 以及 tem 文件夹赋予 755 或者 777 权限 (需要继承到子文件夹)
1 2 |
indexer -c sphinx.conf --all #(all 前面是空格减号减号) searchd –-config ./sphinx.conf #(config前空格减号减号) |
五.开启爬虫(workers目录下)
1 |
python simdht_worker.py #(等2两分钟出现数据之后可以CTRL+C停止) |
1.1 执行命令:
1 |
nohup python simdht_worker.py >/dev/zero 2>&1 & #让爬虫在后台运行) |
2.入库:执行:
1 |
python index_worker.py #(等待10分钟没有出现数据之后可以CTRL+C停止) |
2.1 后台执行命令: