ubuntu16.04安装手撕包菜DHT磁力站点源码
现在的磁力搜索站点非常多,其实这都是跟百度学来的,在大陆是不能建设网站传播非法内容的,被发现轻则查水表,重则进小黑屋保你衣食无忧(你懂的),但是提供搜索技术就不一样,第一你不存储任何实质性的内容,第二你只是提供一个搜索界面,可以声称自己没有进行内容传播。百度就是这样的,你用百度能搜索到很多黄色内容吧,但是百度负责吗?百度不仅不负责,甚至还基于你的搜索给你提供带诈骗性质的广告,魏则西的故事这个大家都知道吧。
磁力搜索也可以利用百度这一套,如果涉及到版权等侵权内容还可以利用 避风港原则避免法律风险。
磁力搜索开源的程序有很多,大部分是用php,python开发磁力搜索脚本,把数据保存到mysql数据,然后利用sphix建立索引,最好开发一个web界面,就能实现一个完整的磁力搜索网站了。
安装ssbc
github上能找到的完整的磁力搜索网站源码就只有 ssbc了,大部分都是提供磁力搜索引擎,没有web界面和建立数据库索引的部分,这篇文章就介绍怎么基于ssbc搭建自己的磁力搜索网站。
环境检测
ssbc的DHT磁力搜索源码是使用python开发的,运行 python -v
检测python的版本,确保安装了2.7版本的python。ubuntu 16.06默认安装的就是python2.7,如果你使用的是其他linux发行版,可以自行安装python。
ssbc源码托管在github上,如果你想用git方式下载源码,需要先安装git客户端。
下载源码和安装依赖
wget https://github.com/78/ssbc/archive/master.zip
sudo apt-get -y install zip
unzip master.zip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
cd ssbc-master
pip install -r requirements.txt
安装mysql数据库
ubuntu16.04默认使用的是mysql5.7的源,经过测试,ssbc的源码在mysql5.7上运行正常,如果是ubuntu14.04,你也可以用 sudo apt-get install mysql-server
安装mysql5.5版本,这个是ssbc推荐的mysql版本。
ssbc的默认密码配置是root和空密码,使用空密码不安全,你需要修改源码中的数据库配置文件来完成密码的修改,使用github的基于项目的搜索功能,访问 https://github.com/78/ssbc/search?utf8=%E2%9C%93&q=root可以看到所有需要配置数据密码的脚本,根据需要自行修改。
创建数据库
mysql -uroot -p
create database ssbc default character set utf8;
quit
启动DHT爬虫
安装源码依赖和数据库之后就可以开始爬取种子信息了,
cd ssbc-master/workers
python simdht_worker.py
有些vps服务器会限制dht爬虫,因为会造成大量的网络请求,拖慢整个服务器的网速,如果运行上述的脚本10分钟左右在控制台能看到脚本打印爬取到的种子信息,说明你的爬虫运行正常,可以把爬虫进程关闭掉,然后以后台进程的方式重新启动。
nohup python simdht_worker.py > /tmp/dht.log 2>&1 &
这样启动还是不够安全,当服务器重启之后需要重新手动启动爬虫进程,如果你有能力,可以自己写一个 worker.service,把爬虫程序安装成系统服务,然后在系统启动的过程中自动启动你的爬虫程序。
安装sphinx索引
有了前面爬取的种子信息,当种子数很多的时候,直接使用mysql的搜索速度是很慢的,这个时候就需要使用第三方索引程序来提高种子搜索的响应速度,ssbc使用的是sphinx,其实简单改造一下也能使用elasticsearch或者solr等java开源索引框架,修改index_worker.py这个文件就行。
sudo apt-get install -y libmysqlclient-dev python-dev gcc sphinxsearch
这个过程中可能会遇到一些问题,基本上都是缺少sphinxsearch的一些依赖库,如果自己不会解决可以给我留言或者在 stackoverflow上提问,肯定有很多类似的问题,参考一些就能解决这些安装依赖的问题了。
配置sphinx目录和权限
mkdir -p /data/bt/index/db /data/bt/index/binlog /tem/downloads
chmod 755 -R /data
chmod 755 -R /tem
生成索引,这一步还只是使用sphinx自带的命令生成索引,还没有索引前面爬取的种子信息
indexer -c sphinx.conf --all
searchd --config ./sphinx.conf
索引种子信息
cd ssbc-master
python index_worker.py
运行10分钟左右,如果程序没有报错就可以和爬虫程序一样,把这个索引程序运行放在后台运行
nohup python index_worker.py > /tmp/index.log 2>&1 &
启动web服务
为了让别人使用你的磁力搜索服务,还需要安装一个web服务,提供基于html的搜索入口,整个磁力搜索网站就算搭建完成了。
python manage.py makemigrations
python manage.py migrate
nohup python manage.py runserver 0.0.0.0:80 >/tmp/server.log 2>&1 &
ssbc的web是基于python的django框架开发的,前面两个命令是django提供的进行网站迁移的命令,如果是第一次安装,运行这两个命令没有任何效果,不过如果你启动web服务遇到问题,还是建议你把这两个命令添加上去。
除了直接使用80端口,还可以配置nginx等前端代理,流量大还可以做负载均衡,这些留待以后探索。
增加后台管理员
cd ssbc-master
python manage.py createsuperuser
根据提示:
- 输入管理员用户名
- 输入管理员邮箱
- 输入管理员密码
- 确认密码,完成
- 管理员登录地址: http://IP/admin
网上有一个ssbc的centos安装教程,centos和ubuntu的安装过程很不一样,所以就写了一个基于ubuntu 16.04的安装教程。
示例网站
最后贴上根据上述教程安装的磁力搜索站,点击 demo访问示例网站,本网站纯属教学意义。