手撕包菜 mysql_新版手撕包菜安装教程

系统:centos 7 64位

一.获取ssbc源代码

1.环境检测(Ssbc当前版本是基于django1.8.1开发,所需python环境为python2.7.5以上。)

[root@localhost ~]# python -V

Python 2.7.5

执行python -V即可获取当前版本。

2.获取ssbc安装包

[root@localhost ~]# wget https://github.com/78/ssbc/archive/master.zip

[root@localhost~]# unzip master.zip

解压后你会发现在root根目录先有个文件夹ssbc-master.

二.安装MariaDB

1.安装数据库及所需环境

yum install gcc gcc-c++ python-devel mariadb mariadb-devel mariadb-server

[root@localhost ~]# yum install gcc

[root@localhost ~]# yum install gcc-c++

[root@localhost ~]# yum install python-devel

[root@localhost ~]# yum install mariadb

[root@localhost ~]# yum install mariadb-devel

[root@localhost ~]# yum install mariadb-server

[root@localhost]# wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py

[root@localhost]# python get-pip.py

curl -kL https://bootstrap.pypa.io/get-pip.py | sudo python

[root@localhost]# cd ssbc-master

[root@localhost ssbc-master]# pip install -r requirements.txt

2.创建ssbc数据库

[root@localhost ~]# service mariadb start //启动数据库

[root@localhost ~]# mysql -uroot -p

Enter password: (回车即可)

MariaDB [(none)]> create database ssbc default character set utf8;

MariaDB [(none)]> quit; //创建成功后退出

修改root密码

1.以root身份在终端登陆,必须

2.输入 mysqladmin -u root -p password root

后面的 root 是要设置的密码

3.回车后出现 Enter password

输入就密码,如果没有,直接回车

三.安装Sphinx

[root@localhost ssbc-master]# wget http://sphinxsearch.com/files/sphinx-2.2.9-1.rhel7.x86_64.rpm

[root@localhost ssbc-master]# yum install unixODBC unixODBC-devel postgresql-libs

[root@localhost ssbc-master]# 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 权限 (需要继承到子文件夹)

[root@localhost ssbc-master]# indexer -c sphinx.conf --all (all 前面是空格减号减号)

[root@localhost ssbc-master]# searchd --config ./sphinx.conf (config前空格减号减号)

四.Web设置

[root@localhost ssbc-master]#

[root@localhost ssbc-master]# python manage.py makemigrations

[root@localhost ssbc-master]# python manage.py migrate

[root@localhost ssbc-master]# python manage.py runserver 0.0.0.0:8089 //启动ssbc

浏览器输入你的ip(如:54.43.43.43) 看网站是否能正常访问,正常则CTRL+C停止

[root@localhost ssbc-master]# python manage.py createsuperuser //输入用户名邮箱密码确认密码(创建管理账号)

[root@localhost ssbc-master]# nohup python manage.py runserver 0.0.0.0:8089 > /dev/zero & //将网站服务放在后台运行

五.开启爬虫(workers目录下)

安装 Python GeoIP库

pip install pygeoip

1.爬虫:执行:python simdht_worker.py (等2两分钟出现数据之后可以CTRL+C停止)

1.1 执行命令:nohup python simdht_worker.py >/dev/zero & (让爬虫在后台运行)

2.入库:执行:python index_worker.py (等待10分钟没有出现数据之后可以CTRL+C停止)

2.1 后台执行命令:nohup python index_worker.py >/dev/zero & (让爬虫在后台运行)

后台登陆:http://ip/admin

只允许自己的域名解析:

ssbc/settings.py

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

常见问题:

1.必须centos7吗?

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

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

登录管理员后台,点击 Hashs

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

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

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

ps -ef|grep python

结果里面有

python manage.py runserver 0.0.0.0:80

python simdht_worker.py

python index_worker.py

即表示正在运行。

mariadb添加自启动 添加到服务。

systemctl enable mariadb.service

centos7 需要给予执行权限 chmod u+x /etc/rc.d/rc.local

在里面运行一个把所有服务的.sh文件,注意绝对路径和加延时

转载:http://blog.ouoshop.com/post/13.html

搜索中文出现错误:

'ascii' codec can't encode character u'。。。。

在search/timermiddleware.py

指定文件字符集为utf-8

在文件头部加入以下代码:

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

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

Python and Django OperationalError (2006, 'MySQL server has gone away')

解决方法:

cd /etc/my.cnf.d

vi server.cnf

在# this is only for the mysqld standalone daemon

[mysqld]

后面加上

max_allowed_packet = 128M

128M或者更大

http://stackoverflow.com/questions/14163429/python-and-django-operationalerror-2006-mysql-server-has-gone-away

3、索引入库可能会出现如下问题

![10fa85f47f86bdbb.png][1]

进入mysql,执行一下语句

update search_hash set tagged=True where id=8947593;

这里的id换成你自己的id

还是不行就要重新索引,看后面文字说明↓↓↓↓

mariadb配置允许远程访问方式

首先配置允许访问的用户,采用授权的方式给用户权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;

说明:root是登陆数据库的用户,123456是登陆数据库的密码,*就是意味着任何来源任何主机反正就是权限很大的样子。

%可以用允许登陆的IP替换

最后配置好权限之后不应该忘记刷新使之生效

flush privileges;

临时解决蜘蛛会死掉的方法:

#!/bin/sh

simdhtpid=$(ps -ef|grep -v grep|grep "python simdht_worker.py"|awk '{print $2}')

kill -9 $simdhtpid

simdhtpid=$(ps -ef|grep -v grep|grep "python index_worker.py"|awk '{print $2}')

kill -9 $simdhtpid

sleep 1

cd /root/ssbc/workers

nohup python simdht_worker.py >/dev/zero &

nohup python index_worker.py >/dev/zero &

终极解决办法:

cd /etc/my.cnf.d

vi server.cnf

在# this is only for the mysqld standalone daemon

[mysqld]

后面加上

max_allowed_packet = 128M

128M或者更大

更换服务器迁移:

备份ssbc网站文件

备份数据库:

mysqldump -usmzdy -psmzdy.com --default-character-set=utf8 smzdy > smzdy.sql

在新服务器wget数据过去。

安装环境,

**不需要执行:**

python manage.py makemigrations

python manage.py migrate

安装好mariadb后,新建同名数据库,

导入wget过来的数据库:

mysql -usmzdy -psmzdy.com smzdy < smzdy.sql

导入完后

mysql -uroot -p

选择数据库:

use smzdy

update search_hash set tagged=0;

quit;

然后:

indexer -c sphinx.conf --all (all 前面是空格减号减号)

searchd --config ./sphinx.conf (config前空格减号减号)

cd worker

重新索引所有数据:

python index_worker.py

运行网站,即可

index_worker.py意外退出会导致错误,无法运行:

[root@localhost workers]# python index_worker.py

fetched 10000

Traceback (most recent call last):

File "index_worker.py", line 44, in

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 '1'")

解决办法:

用上面的方法先清空tagged

mysql -uroot -p

选择数据库:

use smzdy

update search_hash set tagged=0;

quit;

然后:

备份/data /tem,然后删除这两个文件夹,重新各个新建文件夹和子文件夹,chmod 755 data -R chmod 777 /tem -R

indexer -c sphinx.conf --all (all 前面是空格减号减号)

searchd --config ./sphinx.conf (config前空格减号减号)

cd worker

重新索引所有数据:

python index_worker.py

[1]: http://www.smzdy.com/usr/uploads/2015/12/823242955.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为最早在国内研究和实践DHT爬虫的人,我的灵感是来自芬兰Helsinki大学的这篇论文: Real-World Sybil Attacks in BitTorrent Mainline DHT 英文好的同学应该很容易读懂,跟我写的不到300行的爬虫代码大致原理一样。初次接触DHT网络的可以结合我之前的文章阅读,或者拜读Kevin Lynx的博客。所以具体原理在这里就不再阐述了。 包菜一开始只是为了纯粹的技术研究,没有去想这个搜索引擎能给网民带来什么样的福利。当时采集了大量的数据,发现有一半以上的资源为限级内容,于是试图去对资源进行分类并且做了很多这方面的工作。譬如,基本上能通过一套规则能筛选出限级内容,对资源进行分类,如果是视频还能匹配出是哪一部影片。可惜,这些工作我主观上认为对生活应用并没有太大价值,于是就放弃了深入的研究。或许是因为网民使用此类搜索引擎大部分都是具有明显的目的性。 包菜经历了多次点技术变更开源版本使用了django网站框架重写,之前是Flask,再早期是tornado。电影FM也是使用tornado,后来发现tornado并不适用于任何场景。以内容为王的网站还是django比较擅长,只是入门时间比其他框架都较长。早期数据库采用了MongoDB,因为配合Python读写数据很方便,也不用关注数据结构,搜索功能采用自带的关键词搜索,不过后来随着资源数量增加,性能也明显跟不上。今年换了WiredTiger引擎,自带的fulltext search还是不给力。另外Amazon的cloudsearch是个坑,土豪可以考虑,性能真的很不错,就是比较贵。最后还是搭建一个SphinxSearch吧,数据库也换成MySQL(MyISAM引擎),配合起来也很方便。Sphinx创建全文索引的速度很给力,官方的自评也很高,我自己测试1000w的资源(大概3GB),1分钟左右就索引完毕。不信,大家可以自测一下。 标签:ssbc

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值