安装 DHT 爬虫运行环境

2026-01-23 41 浏览 0 评论

DHT 网络爬虫在 P2P 资源发现、BT 种子采集等场景中非常常见。实现语言有很多种,这里我选择 Node.js 作为爬虫运行时, MySQL 5.6 作为数据存储, CentOS 7 作为服务器操作系统。

这套组合虽然版本略旧,但有几个现实优势:

  • 组件成熟稳定,线上长期运行风险低
  • 对服务器硬件要求不高,适合轻量部署
  • 资料丰富,踩坑成本低
  • 我个人维护经验最充分,部署效率高

如果你有更新版本的环境(如 MySQL 8、Node 18、Ubuntu),也可以替换使用,只要确保驱动兼容即可。

本篇将完整记录 从零搭建 DHT 爬虫运行环境 的全过程。


安装 MySQL 5.6

CentOS 7 官方 yum 源里的 MySQL 版本已经停止维护,而且版本不可控。因此这里采用 官方二进制压缩包安装 ,既可指定版本,又避免源失效问题。

下载 MySQL 安装包

到镜像站下载对应版本:

wget https://domanin/mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz

(实际使用时将 domanin 换成真实镜像地址)

解压并重命名目录

tar -xvf mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.49-linux-glibc2.12-x86_64 mysql56

统一目录名方便后续维护。

安装系统依赖

MySQL 5.6 运行依赖 libaio:

yum -y install libaio-devel

配置 MySQL

进入 mysql56 目录,创建配置文件 my.cnf

该配置主要针对:

  • UTF8 字符集
  • InnoDB 引擎
  • 较高连接数
  • 慢查询日志
  • 合理的 Buffer Pool

适合爬虫类高并发写入场景。

[mysqld]
datadir = /www/mysql56/data
port = 3306
socket = /www/mysql56/mysql.sock
log-error = /www/mysql56/error.log
pid-file = /www/mysql56/mysql.pid
user = root
tmpdir = /tmp
character_set_server = utf8
default-storage-engine = INNODB
lower_case_table_name = 1
skip-host-cache
skip-name-resolve
query_cache_size = 128M
query_cache_type = 1
query_cache_limit = 4M
query_cache_min_res_unit = 4K
interactive_timeout = 28800
wait_timeout = 28800
default-time-zone = '+8:00'
back_log = 500
max_connections = 3000
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 4096
binlog_cache_size = 1M
max_heap_table_size = 256M
tmp_table_size = 256M
max_allowed_packet = 32M
read_buffer_size = 16M
read_rnd_buffer_size = 64M
sort_buffer_size = 32M
join_buffer_size = 16M
key_buffer_size = 128M
thread_cache_size = 100
bulk_insert_buffer_size = 16M
slow_query_log=1
slow_query_log_file = /www/mysql56/mysql-slow.log
long_query_time = 1
min_examined_row_limit = 100
log_queries_not_using_indexes = 1
log_throttle_queries_not_using_indexes = 10
log-slow-admin-statements = 1
log_slow_slave_statements = 0
log_output = FILE
innodb_file_per_table = 1
innodb_open_files = 2000
innodb_buffer_pool_size = 4G
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 8M
innodb_log_file_size = 128M
innodb_log_files_in_group = 2
innodb_max_dirty_pages_pct = 80
innodb_lock_wait_timeout = 50
innodb_flush_method = O_DIRECT
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqldump]
quick
max_allowed_packet = 16M
[client]
default-character-set=utf8
socket = /www/mysql56/mysql.sock

说明:

  • innodb_buffer_pool_size 可按服务器内存调整,一般为物理内存的 50%~70%
  • skip-name-resolve 可避免 DNS 反查带来的连接延迟
  • 慢查询日志便于后期优化索引

初始化数据库

执行初始化脚本:

/www/mysql56/scripts/mysql_install_db --user=root --basedir=/www/mysql56 --datadir=/www/mysql56/data

注意: 安装日志里会提示 root 初始密码(或空密码),务必保存下来。


配置启动脚本路径

编辑启动脚本,使其指向当前安装目录。

文件路径:

/www/mysql56/support-files/mysql.server

替换约第 62 行左右:

# Set some defaults
mysqld_pid_file_path=
if test -z "$basedir"
then
  basedir=/www/mysql56
  bindir=/www/mysql56/bin
  if test -z "$datadir"
  then
    datadir=/www/mysql56/data
  fi
  sbindir=/www/mysql56/bin
  libexecdir=/www/mysql56/bin
else
  bindir="$basedir/bin"
  if test -z "$datadir"
  then
    datadir="$basedir/data"
  fi
  sbindir="$basedir/sbin"
  libexecdir="$basedir/libexec"
fi

启动与停止 MySQL

启动服务:

/www/mysql56/support-files/mysql.server start

停止服务:

/www/mysql56/support-files/mysql.server stop

登录 MySQL

/www/mysql56/bin/mysql -h 127.0.0.1 -uroot -p

输入初始化时生成的密码即可登录。


开启远程访问

创建允许外网连接的账户:

create user 'root'@'%' identified by 'knxi234S5543oHo?44J11';
grant all privileges on *.* to 'root'@'%';

刷新权限:

flush privileges;

防火墙开放端口

放行 3306 端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

重启防火墙:

systemctl start firewalld
systemctl status firewalld
systemctl stop firewalld

如果服务器存在云厂商安全组(如阿里云、腾讯云),也需要额外放行 3306。


修改 MySQL 密码(可选)

如果只需要修改密码:

use mysql;
update user set password=password('knxi2SoHo?gh3444J11') where user='root' and host='%';

执行后记得:

flush privileges;

安装 Node.js

DHT 爬虫依赖 Node.js 运行环境。 推荐使用 nvm 管理 Node 版本,可随时切换,避免系统污染。


安装 nvm

unzip nvm-0.39.3.zip
tar -zxvf nvm-0.40.2.tar.gz
cd nvm-0.39.3/
sh install.sh

如果执行 nvm 提示找不到命令:

-bash: nvm: command not found

编辑 ~/.bash_profile

vim .bash_profile

添加:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

加载配置:

source .bash_profile

安装 Node.js 指定版本

nvm install 14.19

查看版本:

node -v
npm -v

Node 14 对多数 DHT 爬虫库兼容性最好,稳定运行多年无问题。


至此,DHT 爬虫运行环境搭建完成

现在你的服务器已经具备:

  • MySQL 5.6 数据存储
  • Node.js 运行环境
  • 可远程访问数据库
  • 稳定的系统级部署结构

接下来只需部署 DHT 爬虫程序,即可开始持续采集 BT 网络数据。


额外补充建议

虽然本环境版本略老,但若追求长期稳定运行,这套组合依然非常可靠。如果未来需要升级:

  • MySQL 可平滑迁移至 5.7 或 8.0
  • Node.js 可直接通过 nvm 切换版本
  • 爬虫程序无需改动

这也是使用二进制部署和 nvm 的真正价值 - 可控、可迁移、可维护


环境搭建完成,DHT 网络世界的大门已经打开。


发布评论

发布评论前请先 登录

评论列表 0

暂无评论