麒麟在线

当前位置:网站首页 / 教程 / 正文

手撕包菜SSBC DHT磁力链一键安装包常见问题及解决方法

1.必须centos7吗? 非常建议使用centos7,centos6可能会有意想不到的错误

2.如何设置首页关键字? 登录管理员后台,点击Rec keywordss,右上角新增

3.怎么查看入库的文件? 登录管理员后台,点击 Hashs 4.怎么查看每天入库了多少文件,以便清楚入库效率? 登录管理员后台,点击 Status reports 5.如何确认web服务器、采集、入库正在运行? 运行 ps -ef|grep python|grep -v grep 结果里面有 gunicorn ssbc.wsgi:application -b 127.0.0.1:8000 --reload python simdht_worker.py   python index_worker.py 即表示正在运行。

6.只允许自己的域名解析:

ssbc/settings.py

ALLOWED_HOSTS = ['www.smzdy.com',]

—————————————————————————————————————— 去除搜索页 右下角广告 [root@localhost ssbc-master]# cd web/static/js[root@localhost js]# vi ssbc.js  

找到如下3行,在前面添加//进行注释,保存

//document.write('<script src="http://v.6dvip.com/ge/?s=47688"><\/script>'); //document.writeln("<script language=\"JavaScript\" type=\"text/javascript\" src=\"http://js.6dad.com/js/xiaoxia.js\"></script>"); //document.writeln("<script language=\"JavaScript\" type=\"text/javascript\" src=\"http://js.ta80.com/js/12115.js\"></script>"); —————————————————————————————————————— 如何修改扩展名归类? workers/metautils.py文件中有如下代码:def get_category(ext):    ext = ext + '.'    cats = {        u'video': '.avi.mp4.rmvb.m2ts.wmv.mkv.flv.qmv.rm.mov.vob.asf.3gp.mpg.mpeg.m4v.f4v.',        u'image': '.jpg.bmp.jpeg.png.gif.tiff.',        u'document': '.pdf.isz.chm.txt.epub.bc!.doc.ppt.',        u'music': '.mp3.ape.wav.dts.mdf.flac.',        u'package': '.zip.rar.7z.tar.gz.iso.dmg.pkg.',        u'software': '.exe.app.msi.apk.'    } 意思是:扩展名为.exe、.app、.msi、,.apk的文件都属于software类型。 如果你把u'software': '.exe.app.msi.apk.' 改为 u'software': 'app.msi.apk.',那么exe将会被归为other类型。 所以在这里修改归类设置。 —————————————————————————————————————— 如何禁止某些格式/分类的文件入库? workers/metadata.py文件中有如下代码: info['extension'] = metautils.get_extension(bigfname).lower() info['category'] = metautils.get_category(info['extension']) 所以如果你要排除扩展名为.exe的文件,或者类型为software,可以在上面代码后面加上##########这是增加的过滤-开始#############按扩张名过滤,禁止扩展名为.exe的入库if info['extension'] == 'exe':    return # 直接返回,跳过下面的入库#按文件类型过滤,禁止类型为software的入库if info['category'] == 'software':    return#禁止类型为other的入库if info['category'] == 'other':    return##########这是增加的过滤-结束############—————————————————————————————————————— 如何重建索引? 第一步: 删除/data目录,重建/data目录

[root@localhost ssbc-master]# mkdir -p /data/bt/index/db /data/bt/index/binlog /tem/downloads
[root@localhost ssbc-master]# chmod 755 -R /data
[root@localhost ssbc-master]# chmod 755 -R /tem

第二步: 进入数据库,把search_hash表中所有记录的tagged字段置为0

UPDATE search_hash SET tagged=0;

启动sphinx,并创建索引数据库。

完成后会提示skipping non-plain index 'rt_main',这是没有问题的。

indexer -c sphinx.conf --all

停止原来的searchd进程,否则会报错提示bind() failed on 0.0.0.0: Address already in use

ps aux|grep searchd|awk '{print $2}'|grep -v grep|xargs kill -9

然后启动搜索进程,会自动创建rt_main这个索引表

searchd --config ./sphinx.conf

最后进入/workers目录启动index_worker.py从MySQL数据库中读取未索引的资源,更新到Sphinx的实时索引中如果是搬家重新索引,且数据量大的需要的时间会很长,请耐心等待完全索引完成。

python index_worker.py

让索引进程在后台运行

[root@localhost workers]# nohup python index_worker.py >/dev/zero 2>&1&

—————————————————————————————————————— 

MySQL server has gone away提示怎么办? ssbc 运行一段时间后,大概半个小时,就莫名奇妙停止不爬了。 错误提示如下: MySQL server has gone away 通过错误提示可以看出,其实是ssbc与mysql(maridb)断开连接了,导致程序异常,当然就插入不了数据了。 有3种解决办法: 方法1是写个脚本,定时重启爬虫。 方法2是修改下代码,当mysql断开连接时,再次重连mysql就可以拉。 方法3是修改Mysql配置,将闲置时间wait_timeout设置长一点。 —————————————————————————————————————— 哪里设置爬虫线程?让爬虫爬快/慢点? 在workers/simdht_worker.py里面把MAX_QUEUE_LT、MAX_QUEUE_PT、max_node_qsize设大/小一点。 如何关闭调试模式?设置404页面? 请参考 http://www.githubs.cn/post/19—————————————————————————————————————— 如何在搜索结果页面添加迅雷链接? 在web/views.py文件加入以下代码生成迅雷链接:import base64 xunleiurl = 'AAmagnet:?xt=urn:btih:' + d['info']['info_hash'] + 'ZZ'd['xunlei_url'] = 'thunder://' + base64.b64encode(xunleiurl) 可以在模板中用“ {{xunlei_url}} ”调用。位置要放在return render(request, 'info.html', d)的前面。 —————————————————————————————————————— SSBC如何搬家? 数据库用mysqldump导出sql,在新服务器上运行一键包,再导入刚才的sql。 —————————————————————————————————————— 提示duplicate id 'xxxx'解决办法

执行python index_worker.py,错误提示如下

fetched 10000
Traceback (most recent call last):
  File "index_worker.py", line 44, in <module>
    if work() == 10000:
  File "index_worker.py", line 35, in work
    (one['id'], one['name'], one['category'], one['length'], one['create_time'], one['last_seen']))
  File "/usr/lib64/python2.7/site-packages/MySQLdb/cursors.py", line 205, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: (1064, "duplicate id '3797947'")

进入数据库,执行语句 update search_hash set tagged=True where id=xxxx;

——————————————————————————————————————

重新安装提示gunicorn已安装

Traceback (most recent call last):

  File "manage.py", line 10, in <module>

    execute_from_command_line(sys.argv)

  File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line

    utility.execute()

  File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 312, in execute

    django.setup()

  File "/usr/lib/python2.7/site-packages/django/__init__.py", line 18, in setup

    apps.populate(settings.INSTALLED_APPS)

  File "/usr/lib/python2.7/site-packages/django/apps/registry.py", line 89, in populate

    "duplicates: %s" % app_config.label)

django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: gunicorn


修改/ssbc/settings.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'search',
    'web',
    'top',
)

把gunicorn删掉


修改simdht_worker.py里的max_node_qsize的大小调节爬取速度(队列大小)

执行python manage.py init_db创建表/平滑升级表结构

执行python manage.py create_user 建管理员

执行python manage.py changepassword修改管理员密码

执行systemctl start gunicorn启动网站

执行systemctl start mariadb启动数据库

执行systemctl status mariadb查看数据库运行状态

执行systemctl restart mariadb重新启动数据库

执行systemctl status gunicorn查看gunicorn运行状态

执行systemctl restart gunicorn 重新启动网站

执行systemctl restart indexer手动重新索引

执行systemctl start searchd开启搜索进程

执行systemctl status searchd查看搜索进程运行状态

执行systemctl restart searchd 重新启动搜索进程

相关问题


Q:如何绑定多个域名?

A:在/etc/nginx/nginx/nginx.conf文件内修改,多个域名用空格隔开,修改完成后执行nginx -s reload生效


Q:如何修改站点名?

A:修改manage.py里的常量sitename


Q:如何修改地图里的域名?

A:修改manage.py里的常量domain


Q:如何修改后台地址?

A:修改manage.py中的以下语句中的url=后面的地址: admin = Admin(app,name='管理中心',base_template='admin/my_master.html',index_view=MyAdminIndexView(name='首页',template='admin/index.html',url='/fucku'))


Q:如何屏蔽违禁词

A:在sensitivewords.txt这个文件里面添加违禁词,一行一个,支持.*?等正则符号,添加完成后systemctl restart gunicorn生效


Q:如何实现远程主机反向代理本机的程序?

A:修改本机的/etc/systemd/system/gunicorn.service其中的127.0.0.1:8000修改为0.0.0.0:8000然后执行systemctl daemon-reload,然后执行systemctl restart gunicorn,本机不开启nginx,远程主机开启nginx、配置反向代理、绑定域名即可,nginx的配置文件参考程序内的nginx.conf 。


Q:如何限制/提高爬取速度?

A:修改simdht_worker.py里的max_node_qsize=后面的数字,越大爬取越快,越小爬取越慢


Q:如何修改数据库密码?

A:执行mysqladmin -uroot -p password 123456!@#$%^ //将提示输入当前密码,123456!@#$%^是新密码


Q:修改数据库密码后怎么修改程序里的配置?

A:修改manage.py里的mysql+pymysql://root:密码@127.0.0.1、修改manage.py里的DB_PASS、修改simdht_worker.py里的DB_PASS、修改sphinx.conf里的sql_pass


Q:怎么确定爬虫是在正常运行?

A:执行ps -ef|grep -v grep|grep simdht如果有结果说明爬虫正在运行


Q:更新manage.py/模板后怎么立即生效?

A:执行systemctl restart gunicorn重启gunicorn


Q:为什么首页统计的数据小于后台的数据?

A:在数据量变大后,索引将占用CPU 100%,非常影响用户访问网站,为了最小程度减小此影响 默认设置为每天早上5点更新索引,你想现在更新爬取结果的话,手动执行索引systemctl restart indexer,需要注意的是,数据量越大 索引所耗费时间越长


Q:如何查看索引是否成功?

A:执行systemctl status indexer可以看到索引记录


Q:觉得索引速度慢,如何加快?

A:修改sphinx.conf里面的mem_limit = 512M,根据你的主机的内存使用情况来修改,数值越大索引越快,最大可以设置为2048M


Q:如何确定搜索进程是否正常运行

A:执行systemctl status searchd,如果是绿色的running说明搜索进程完全正常


Q:如何备份数据库?

A:执行mysqldump -uroot -p zsky>/root/zsky.sql导出数据库 //将提示输入当前密码,数据库导出后存在/root/zsky.sql


Q:数据库备份后,现在重新安装了程序,如何导入旧数据?

A:执行mysql -uroot -p zsky</root/zsky.sql   //假设你的旧数据库文件是/root/zsky.sql,将提示输入当前密码,输入后耐心等待


Q:如何迁移到新主机?

A:备份数据库(方法见上面)→ 程序拷贝到新主机 → 安装程序 → 导入数据库(方法见上面)→ 重新索引


Q:我以前使用的搜片大师/手撕包菜,可以迁移过来吗?

A:程序在开发之初就已经考虑到从这些程序迁移过来的问题,所以你不用担心,完全可以无缝迁移。


Q:网站经常收到版权投诉,有没有好的解决办法?

A:除了删除投诉的影片数据外,你可以使用前端Nginx、后端gunicorn+爬虫+数据库+索引在不同主机上的模式,甚至多前端模式,这样 即使前端被主机商强行封机,也能保证后端数据的安全。


定时重启爬虫
下载脚本并给执行权限:

wget --no-check-certificate https://www.moerats.com/usr/down/ssbc/ssbc-reboot.sh && chmod +x ssbc-reboot.sh

增加计划任务:

crontab -e

i进入编辑模式:

0,30 * * * * sh /root/ssbc-reboot.sh

意思是每小时的0分和30分自动执行ssbc-reboot.sh这个文件,然后按Esc键退出编辑模式,然后按着shift并同时连按2次z,即回到shell界面。


禁止搜索关键词和禁止入库关键词

禁止搜索配置文件/root/ssbc/lib/politics.txt

禁止入库配置文件/root/ssbc/workers/black_list.txt


索引报错:FATAL: failed to lock /data/bt/index/db/main.spl: Resource temporarily unavailable, will not index. Try --rotate option.

cd /root/ssbc
indexer -c sphinx.conf --all --rotate

加个强制参数--rotate即可


批量删除含有敏感词的内容

DELETE FROM search_hash WHERE name LIKE '%preteen%';

批量替换敏感词为***

UPDATE search_hash SET name = REPLACE( name, 'preteen', '***' );

批量列表替换敏感词为***

UPDATE search_filelist SET file_list = REPLACE( file_list, 'preteen', '***' );



爬虫已启动,但数据不入库

是因为爬虫启动失败了,字符集解码失败

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

解决办法:
如果是centos7系统,修改/usr/lib64/python2.7/site.py
vi /usr/lib64/python2.7/site.py
在import sys下添加2行:

reload(sys)
sys.setdefaultencoding('utf8'

推荐阅读

文章标签:

版权声明: 本文除特别说明外均由原创

本文链接: https://www.70ol.com/jiaocheng/39.html,尊重共享,欢迎转载,请自觉添加本文链接,谢谢!

分享本文: 请填写您的分享代码。

呃 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。