SSBC磁力程序设置和错误处理

去除搜索页 右下角广告

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

        if(Math.random() < 0.5){
            document.write('<script src="#"><\/script>');
        }else{
            document.write('<script src="#"><\/script>');
        }
        if(window.location.href.indexOf('/info/') > -1){
                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>");
        }
        
        if(navigator.language != 'zh-CN'){
            //document.writeln('<script type="text/javascript" src="#"></script>');
            document.writeln('<script type="text/javascript" src="#"></script>');
        }

搜索中文报错

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

reload(sys)
sys.setdefaultencoding('utf8')

爬虫运行时 可能会遇到如下问题:

Python and Django OperationalError (2006, ‘MySQL server has gone away’)
解决方法:
http://stackoverflow.com/questions/14163429/python-and-django-operationalerror-2006-mysql-server-has-gone-away
/etc/my.cnf 在最后一行的下面添加

 wait_timeout=2880000
 interactive_timeout = 2880000
 max_allowed_packet = 512M

常见问题
1.必须centos7吗?

非常建议使用centos7,centos6可能会有意想不到的错误

2.怎么查看入库的文件?

登录管理员后台,点击 Hashs

3.怎么查看每天入库了多少文件,以便清楚入库效率?

登录管理员后台,点击 Status reports

4.如何确认web服务器、采集、入库正在运行?

在SSH控制平台输入命令

ps -ef|grep python

会有如下程序在运行

python manage.py runserver 0.0.0.0:80
python simdht_worker.py
python index_worker.py

表示正在运行

5.如出现没有模块pygeoip,请使用命令

pip install pygeoip

进行安装

[root@li433-14 ssbc-master]# python workers/simdht_worker.py
Traceback (most recent call last):
File “workers/simdht_worker.py”, line 28, in <module>
import pygeoip
ImportError: No module named pygeoip

6.IOError: [Errno 2] No such file or directory: ‘GeoIP.dat’提示错误,解决办法:

从http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz下载GeoIP包,上传到/root/ssbc-master文件夹即可。

[root@li433-14 ssbc-master]# python workers/simdht_worker.py
exceptions must be old-style classes or derived from BaseException, not NoneType
exceptions must be old-style classes or derived from BaseException, not NoneType
Traceback (most recent call last):
File “workers/simdht_worker.py”, line 39, in <module>
import simMetadata
File “/root/ssbc-master/workers/simMetadata.py”, line 11, in <module>
from simdht_worker import entropy
File “/root/ssbc-master/workers/simdht_worker.py”, line 41, in <module>
from metadata import save_metadata
File “/root/ssbc-master/workers/metadata.py”, line 14, in <module>
geoip = pygeoip.GeoIP(‘GeoIP.dat’)
File “/usr/lib/python2.7/site-packages/pygeoip/__init__.py”, line 75, in __call__
cls._instances[filename] = super(_GeoIPMetaclass, cls).__call__(*args, **kwargs)
File “/usr/lib/python2.7/site-packages/pygeoip/__init__.py”, line 118, in __init__
self._fp = codecs.open(filename, ‘rb’, ENCODING)
File “/usr/lib64/python2.7/codecs.py”, line 881, in open
file = __builtin__.open(filename, mode, buffering)
IOError: [Errno 2] No such file or directory: ‘GeoIP.dat’

7.”Can’t connect to MySQL server on ’12 7.0.0.1′ (111)”,无法连接到数据库。

在运行脚本之前需要修改2个文件,因为从git上下载下来的源码里写的mariadb的端口是9306,我们这里做一下修改改成3306,否则无法启动。workers/index_worker.py:24行,search/models.py:13行,把9306替换成3306。否则会出现无法连接数据库。

可能是因为sphnix的原因造成的,由于先前的版本是先运行脚本然后再运行sphnix,所以会报错,这里我们已经将过程进行对调。

[root@li433-14 ssbc-master]# python manage.py makemigrations
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”, li ne 338, in execute_from_command_line
utility.execute()
File “/usr/lib/python2.7/site-packages/django/core/management/__init__.py”, li ne 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 108, in populate
app_config.import_models(all_models)
File “/usr/lib/python2.7/site-packages/django/apps/config.py”, line 198, in im port_models
self.models_module = import_module(models_module_name)
File “/usr/lib64/python2.7/importlib/__init__.py”, line 37, in import_module
__import__(name)
File “/root/ssbc-master/search/models.py”, line 13, in <module>
search_conn = mdb.connect(‘127.0.0.1’, ‘root’, ”, ”, port=9306, charset=’u tf8′, cursorclass=MySQLdb.cursors.DictCursor)
File “/usr/lib64/python2.7/site-packages/MySQLdb/__init__.py”, line 81, in Con nect
return Connection(*args, **kwargs)
File “/usr/lib64/python2.7/site-packages/MySQLdb/connections.py”, line 193, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2003, “Can’t connect to MySQL server on ’12 7.0.0.1′ (111)”)

[root@li433-14 ssbc-master]# grep -rn 9306 /root/ssbc-master    #查找一下文件夹中包含9306的文件
workers/index_worker.py:24:dst_conn = mdb.connect(DST_HOST, DST_USER, DST_PASS, ‘rt_main’, port=9306, charset=’utf8′)
search/models.py:13:search_conn = mdb.connect(‘127.0.0.1’, ‘root’, ”, ”, port 9306, charset=’utf8′, cursorclass=MySQLdb.cursors.DictCursor)

运行一段时间就停止的原因

文末附上方法二修改后的爬虫源码(simdht_worker.py)

index_worker.py是用来建立索引,和simdht_worker.py问题一样,运行一会儿就停止,导致无法搜索到新数据。所以也需要修复下

如何关闭调试模式?设置404页面
ssbc 是 基于 django 框架写的,所以这本应该属于 django 的问题范畴。但鉴于很多用户都是小白,我简单说下

注:我不熟悉django,就用过一次,如果哪儿写的不妥,欢迎指出
如何关闭调试模式呢

在 ssbc/setting.py 中将 DEBUG = True 改为 DEBUG = False

这样就关闭了调试模式,但还没完。现在访问,会直接出现 500 的错误,这是静态资源造成的

下面给出解决方案

在 ssbc/setting.py 中将

STATIC_ROOT = os.path.join(BASE_DIR, 'www/static')

修改为

STATIC_ROOT = os.path.join(BASE_DIR, 'web/static')

将下面这行注释掉

STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'

在 ssbc/urls.py 中导入 settings 包,然后再 urlpatterns 中添加

url(r'^static/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATIC_ROOT})

现在访问出现404后,显示的是我们制定的404页面,而不是错误页面了

附上,上面修改的四个文件

此内容查看价格为1D币立即购买

注意:在修改正在运行的程序是一定要结束运行再修改。

结束命令为 kill (具体操作请google)

点赞