linux架设BT Tracker服务器小记

By SuperTaoer | 十一月 3, 2005
Under: 程序 技术 周边
Views: 2,950 views

目前开源的Bt tracker项目有:
官方Tracker为 www.bittorrent.com/ 使用python语言

xbtt.sf.net 的c++ tracker

sourceforge.net/cvs/?group_id=94951

windows下的tracker www.bitcomet.com/tracker/index-zh.htm
这个似乎不是开源的说?不用管他,反正也不用windows做服务器。

另外介绍一个论坛:http://www.isohunt.com/forum/

我使用的是 c++ 的xbt tracker
下面我就以这个为例来把我的架设过程描述下。

首先下载BT tracker
在xbt的主页和 sourceforge.net/cvs/?group_id=94951 都有说明使用CVS方式下载源代码

cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/xbtt co xbt/misc xbt/XBT\ Tracker
这样你可以下载xbt tracker 和与之相关的源代码

cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/xbtt co xbt
这样你可以下载xbt所有的源代码,其中有用的是misc和XBT Tracker目录

执行后,你会得到一个xbt名字的目录,还犹豫什么,cd呗
进入XBT Tracker目录
新建一个名字为 xbt_tracker.conf 的文件
文件格式如下:
数据库名 主机地址 mysql用户名 mysql密码 表名前缀

注意,如果你的mysql服务器的端口不是默认的3306
请执行一下操作:

  1. cd ../misc
  2. cp -R /usr/local/mysql/include/mysql/ ./
  3. cd mysql/
  4. vi mysql_version.h

将下面的这三行替换为你实际的配置

  1. #define MYSQL_PORT 3306
  2. #define MYSQL_UNIX_ADDR "/tmp/mysql.sock"
  3. #define MYSQL_CONFIG_NAME "my"

然后用mysql命令行工具进入你的mysql数据库
/usr/local/mysql/bin/mysql -hlocalhost -uroot -p -P3306 -S/tmp/mysql.3306.sock #根据你不同的mysql配置这里也会不同
#最简单的: mysql -uroot -p

然后 create database tracker; #这里的tracker替换成你的配置文件的数据库名
use tracker;
\. xbt_tracker.sql;
exit;

好了,数据库方便搞完了,接下来要搞tracker了
chmod 0755 make.sh
./make.sh

如果出现了下面的错误:

  1. In file included from ../misc/sql/database.h:13,
  2. from server.h:8,
  3. from connection.cpp:6:
  4. ../misc/sql/sql_result.h:16:25: mysql/mysql.h: No such file or directory
  5. In file included from ../misc/sql/database.h:13,
  6. from server.h:8,
  7. from connection.cpp:6:

请执行一下这步操作

  1. cd ../misc
  2. ln -s /usr/local/mysql/include/mysql/ mysql
  3. cd ../XBT\ Tracker/
  4. ./make.sh

不出意外的话,就执行成功了

然后在当前目录下你会发现多出一个 xbt_tracker的文件
没错,运行这个文件
./xbt_tracker

如果出现了这个错误:

  1. ./xbt_tracker: error while loading shared libraries: libmysqlclient.so.12: cannot open shared object file: No such file or directory

这样来做

  1. cd /usr/lib/
  2. ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.12 libmysqlclient.so.12
  3. cd -
  4. ./xbt_tracker

ok运行成功了

注意上面的ln命令要根据你的mysql的配置的路径自行做相应的修改

再次进入你的mysql

  1. use tracker;
  2. SELECT * FROM xbt_tracker;

如果显示为空;
执行下面的sql语句

  1. INSERT INTO xbt_config (name,value) VALUES (announce_interval, 1800);
  2. INSERT INTO xbt_config (name,value) VALUES (anonymous_connect, 1);
  3. INSERT INTO xbt_config (name,value) VALUES (anonymous_announce, 1);
  4. INSERT INTO xbt_config (name,value) VALUES (anonymous_scrape, 1);
  5. INSERT INTO xbt_config (name,value) VALUES (auto_register, 1);
  6. INSERT INTO xbt_config (name,value) VALUES (clean_up_interval, 60);
  7. INSERT INTO xbt_config (name,value) VALUES (daemon, 1);
  8. INSERT INTO xbt_config (name,value) VALUES (debug, 0);
  9. INSERT INTO xbt_config (name,value) VALUES (gzip_announce, 1);
  10. INSERT INTO xbt_config (name,value) VALUES (gzip_debug, 1);
  11. INSERT INTO xbt_config (name,value) VALUES (gzip_scrape, 1);
  12. INSERT INTO xbt_config (name,value) VALUES (listen_check, 0);
  13. INSERT INTO xbt_config (name,value) VALUES (listen_ipa, *);
  14. INSERT INTO xbt_config (name,value) VALUES (listen_port, 2710);
  15. INSERT INTO xbt_config (name,value) VALUES (log_access, 0);
  16. INSERT INTO xbt_config (name,value) VALUES (log_announce, 0);
  17. INSERT INTO xbt_config (name,value) VALUES (log_scrape, 0);
  18. INSERT INTO xbt_config (name,value) VALUES (pid_file, xbt_config.pid);
  19. INSERT INTO xbt_config (name,value) VALUES (read_config_interval, 300);
  20. INSERT INTO xbt_config (name,value) VALUES (read_db_interval, 60);
  21. INSERT INTO xbt_config (name,value) VALUES (redirect_url, );
  22. INSERT INTO xbt_config (name,value) VALUES (scrape_interval, 0);
  23. INSERT INTO xbt_config (name,value) VALUES (table_announce_log, xbt_announce_log);
  24. INSERT INTO xbt_config (name,value) VALUES (table_files, xbt_files);
  25. INSERT INTO xbt_config (name,value) VALUES (table_files_updates, xbt_files_updates);
  26. INSERT INTO xbt_config (name,value) VALUES (table_files_users, xbt_files_users);
  27. INSERT INTO xbt_config (name,value) VALUES (table_ipas, xbt_ipas);
  28. INSERT INTO xbt_config (name,value) VALUES (table_scrape_log, xbt_scrape_log);
  29. INSERT INTO xbt_config (name,value) VALUES (table_users, xbt_users);
  30. INSERT INTO xbt_config (name,value) VALUES (update_files_method, 1);
  31. INSERT INTO xbt_config (name,value) VALUES (write_db_interval, 60);

–部分参数说明
auto_register
如果自动注册打开,tracker将会追踪任何的torrent,如果关闭,则只追踪 xbt_files 表里面的
insert into xbt_files (info_hash, ctime) values (”, null); // insert
update xbt_files set flags = 1 where info_hash = ”; // delete

anonymous_announce
如果anonymous_announce打开,tracker会提供给任何用户服务,如果关闭,tracker只提供给存在于xbt_users中的用户

torrent_pass 字段在xbt_users表中内容是32位长度的字符
announce URL内容看起来像这样的:torrent_pass: //announce

执行后,tracker的配置也就完成了

我不确定重新加载配置用不用重启服务
killall -TERM xbt_tracker
./xbt_tracker

启动后,会在当前的目录产生一个名为xbt_tracker.pid的文件,当服务器停止后,这个文件也会随之消失
通过这个文件,写一个脚本

  1. #!/bin/bash
  2.  
  3. xbt_tracker_path="/usr/local/xbt/XBT Tracker"
  4. file_name="xbt_tracker.pid"
  5.  
  6. if [ ! -f "$xbt_tracker_path/$file_name" ]; then
  7.  
  8. echo "Not found pid file $xbt_tracker_path/$file_name";
  9. echo "Starting xbt tracker server …";
  10. "$xbt_tracker_path/xbt_tracker";
  11. fi;

放到crontab表里面来定期执行这个脚本
在tracker down掉的情况下就可以自动的启动了 :)

over this.

差..好文!! (还没评价)
Loading ... Loading ...

Leave a Message

No Messages

No Messages

RSS feed for comments on this post. TrackBack URI

Leave a Message