安装 DHT 爬虫运行环境
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.gzmv 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 -vNode 14 对多数 DHT 爬虫库兼容性最好,稳定运行多年无问题。
至此,DHT 爬虫运行环境搭建完成
现在你的服务器已经具备:
- MySQL 5.6 数据存储
- Node.js 运行环境
- 可远程访问数据库
- 稳定的系统级部署结构
接下来只需部署 DHT 爬虫程序,即可开始持续采集 BT 网络数据。
额外补充建议
虽然本环境版本略老,但若追求长期稳定运行,这套组合依然非常可靠。如果未来需要升级:
- MySQL 可平滑迁移至 5.7 或 8.0
- Node.js 可直接通过 nvm 切换版本
- 爬虫程序无需改动
这也是使用二进制部署和 nvm 的真正价值 - 可控、可迁移、可维护 。
环境搭建完成,DHT 网络世界的大门已经打开。
发布评论
评论列表 0




