龙空技术网

自建磁力链搜索网站做老司机之ZSKY

灰科技社 561

前言:

如今咱们对“phpsphinx分词”大致比较注意,姐妹们都需要剖析一些“phpsphinx分词”的相关资讯。那么小编也在网上收集了一些对于“phpsphinx分词””的相关知识,希望我们能喜欢,各位老铁们快快来了解一下吧!

简介

下载类的网站应该是大家经常用到的工具了,特别是一些 BT,PT 一类的网站,最近几年比较火的小型站点一般都是磁力搜索类的,但很多网站鱼龙混杂,广告横生(网站挂广告无可厚非,但是时不时弹出令人尴尬的内容就有点儿嗯。。)

直接附上相关的说明(注:这类磁力搜索的网站实际上是利用 Python 爬去 DHT 网络中的信息,因此,基本不需要手动维护内容)

官方说明

在 ssbc 爬虫的基础上修复,现在可以 7*24 爬取的爬虫,修改了爬取策略,只入库音乐、电影、电子书。python 实现的磁力搜索网站,代码比较烂,请轻喷!

搜索排行榜、浏览排行榜、DMCA 投诉的功能未完成(其实是不想做)

和 ssbc 相比,没使用 sphinx 进行索引,而是用 redis 缓存访问页面,使用 jieba 分词,比 sphinx 的中文分词效果好。

模板在 templates 目录,模板引擎是 jinja2(非常易读),编写自己的专属模板非常方便,中文版文档 。

后台可以直接搜索、删除 DMCA 投诉的关键字,管理首页推荐关键字、用户搜索记录、查看每天爬取的资源数量、管理后台用户。

修改数据库密码后请修改 manage.py 里面的 mysql+pymysql://root: 后面的内容和 simdht_work.py 里面的 DB_PASS

实验环境:centos7 python2.7

新安装

Github 地址:

複製代碼

yum -y install git

git clone

cd zsky

sh zsky.sh

原安装及环境配置

複製代碼

#下载源文件(到Github找最新版下载)

tar zxvf zsky.tar.gz

systemctl stop firewalld.service

systemctl disable firewalld.service

systemctl stop iptables.service

systemctl disable iptables.service

setenforce 0

sed -i s/\"SELINUX=enforcing\"/\"SELINUX=disabled\"/g /etc/sysconfig/selinux

#关闭selinux

cat << EOF > /etc/sysctl.conf

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_keepalive_time = 600

net.ipv4.tcp_keepalive_probes = 3

net.ipv4.tcp_keepalive_intvl =15

net.ipv4.tcp_retries2 = 5

net.ipv4.tcp_fin_timeout = 2

net.ipv4.tcp_max_tw_buckets = 36000

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_max_orphans = 32768

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.tcp_wmem = 8192 131072 16777216

net.ipv4.tcp_rmem = 32768 131072 16777216

net.ipv4.tcp_mem = 786432 1048576 1572864

net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.ip_conntrack_max = 65536

net.ipv4.netfilter.ip_conntrack_max=65536

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180

net.core.somaxconn = 16384

net.core.netdev_max_backlog = 16384

EOF

/sbin/sysctl -p /etc/sysctl.conf

/sbin/sysctl -w net.ipv4.route.flush=1

echo ulimit -HSn 65536 >> /etc/rc.local

echo ulimit -HSn 65536 >>/root/.bash_profile

ulimit -HSn 65536

#优化内核参数,优化打开文件数

cd zsky

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

yum -y install epel-release python-pip redis

pip install -r requirements.txt

pip install redis

systemctl start mariadb.service

systemctl enable mariadb.service

systemctl start redis.service

systemctl enable redis.service

mysql -uroot -e\"create database zsky default character set utf8mb4;\"

mysql -uroot -e\"set global interactive_timeout=31536000;set global wait_timeout=31536000;set global max_allowed_packet = 64*1024*1024;set global max_connections = 10000;\"

python manage.py init_db

#建表

python manage.py create_user

#按照提示输入用户名、密码、邮箱

nohup gunicorn -k gevent --access-logfile zsky.log --error-logfile zsky_err.log manage:app -b 0.0.0.0:80 --reload>/dev/zero 2>&1&

#开启网站访问,访问日志是当前目录下zsky.log,错误日志是当前目录下zsky_err.log

#如果不想要日志 就运行下面这条命令

#nohup gunicorn -k gevent manage:app -b 0.0.0.0:80 --reload>/dev/zero 2>&1&

nohup python simdht_worker.py 2>&1&

#开启爬虫并写日志,如果爬虫有问题请提交日志文件nohup.out给我

现在应该能访问 了,解析域名即可完成部署

后台地址

#开机自启动

chmod +x /etc/rc.d/rc.local

echo \"systemctl start mariadb.service\" >> /etc/rc.d/rc.local

echo \"systemctl start redis.service\" >> /etc/rc.d/rc.local

echo \"cd /root/zsky\" >> /etc/rc.d/rc.local

echo \"nohup python simdht_worker.py >/dev/zero 2>&1&\" >> /etc/rc.d/rc.local

echo \"nohup gunicorn -k gevent manage:app -b 0.0.0.0:80 --reload>/dev/zero 2>&1&\" >> /etc/rc.d/rc.local

使用说明

Quote:

安装脚本执行过程中会提示输入绑定的域名、数据库密码、管理员用户名、密码、邮箱,输入后耐心等待即可访问 http://域名

后台地址 http://域名/admin

程序默认数据库密码123456

修改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:修改manage.py里的常量sitename

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

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

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+爬虫+数据库+索引在不同主机上的模式,甚至多前端模式,这样 即使前端被主机商强行封机,也能保证后端数据的安全。

标签: #phpsphinx分词