在 FreeBSD 5.4/OpenBSD 3.8 上安裝 BT Server

注:本文已經增加了一小部分內容,但因爲論壇上修改帖子的排版比較不方便,所以製作成了PDF文檔,大家可以下載了再看。該頁文檔不再更新,只更新附件中的PDF文檔(如果還有內容要增刪的話)。

http://bbs.chinaunix.net/viewthread.php?tid=670780&extra=page%3D1

也可直接從www.bsdchina.org上下載:

http://www.bsdchina.org/articles/openbsd/bibby/bt_server_bibby-2005.12.17.pdf

 

    Author : MichaelBibby ( michaelbibby # gmail.com )
    Date   : 2005.12.17

歡迎轉載,但請保留以上作者信息。該文的PDF文檔可在論壇下載:

http://bbs.chinaunix.net/viewthread.php?tid=670780&extra=page%3D1

軟件BitTorrent同時提供了tracker和downloader工具,本文要講述的就是使用它來做爲BT Server。
關於BitTorrent,請訪問它的官方主頁:

http://www.bittorrent.com/

另:在閱讀本文前,強烈建議看完官方的文檔 -- ‘File Server's Guide':

http://www.bittorrent.com/guide.html

內容:
    1:安裝BitTorrent;
    2:使用bttrack.py、btdownload*.py、btmaketorrent.py ;
    3:修改bttrack.py,獲取PID並將其寫入'/var/run/bttrack.pid';
    4:添加'/usr/local/etc/rc.d/bttrack.sh'腳本;
    5:修改/etc/rc.conf,爲bttrack.sh添加entry;

詳細步驟:

1:安裝BitTorrent;

BitTorrent已經包含在FB的ports/目錄樹中,建議通過ports安裝。具體位置是:

/usr/ports/net/py-bittorrent

如果不修改Makefile的話,默認會裝上很多東西,比如cario、pygtk等等,有些可能是
你不需要的,那就自動動手吧。

OpenBSD中安裝的BitTorrent比較乾淨,只安裝幾個基本的依賴包。
安裝好後,bttrack.py等工具都放在'/usr/local/bin/'下了。

2:使用bttrack.py、btdownload*.py、btmaketorrent.py ;

①:使用'/usr/local/bin/bttrack.py'做爲Tracker;

一般的用法是:

    # bttrack.py --port 6969
        --dfile /var/log/bttrack/dlinfo
        --allowed_dir /home/torrents
        --show_infopage 0
        --logfile /var/log/bttrack/bttrack.log

這裏只是加入了幾個常用的參數,更多的參數可以通過不帶參數的'bttrack.py'命令執行得到。

簡單解釋一下幾個參數的含義:

    --port 6969
        表示bttrack運行在6969端口。所以在做防火牆規則的時候要注意打開它。
    --dfile /var/log/bttrack/dlinfo
        表示將當前下載信息存儲在'/var/log/bttrack/dlinfo'文件中。
    --allowed_dir /home/torrents
        表示在服務器上只允許該目錄下的'torrent'文件連接BT Tracker。在非該目錄
        下載時會報錯。
    --show_infopage 0
        表示是否打開info頁面。也就是在訪問服務器的6969端口時能否看到Tracker的當前信息。
    --logfile /var/log/bttrack/bttrack.log
        表示將Tracker的日誌信息寫入 '/var/log/bttrack/bttrack.log'中。

②:使用'btdownload*.py'上傳/下載;

btdownload*.py實際上指的是兩個下載工具:

    /usr/local/bin/btdownloadheadless.py
    /usr/local/bin/btdownloadcurses.py

這兩個工具的參數都是一樣的,只是界面不一樣而已(具體的細節,大家一用便知):

    $ btdownloadcurses.py --max_upload_rate 0 file.torrent

這是btdownloadheadless.py下載時的截圖:

 


btdownloadheadless.py 默認是每隔0.5秒便滾動一則信息,圖片中內容就表示完整的一則信息。
可以通過'--display_interval '來指定間隔的時間。如果通過SSH連接上遠程服務器使用這個
命令,間隔的時間越短,就需要傳送越多的數據信息,從服務器傳到你機器上的網絡流量就越大。

btdownloadcurses.py下載時的截圖:


btdownloadcurses.py在下載時不會象btdownloadheadless.py一樣每隔一段時間就滾動顯示一則
信息,它只是動態地顯示進度 'progress'。所以在使用上,個人覺得更舒服些。

這兩個下載工具有一個比較重要的參數:'--max_upload_rate'。
做爲BT Server,上傳給別人的數據當然要控制一下,太小了不行,太大了也需要考慮。默認的
上傳速率是20K/S。顯然,做爲服務器,這個數值是不合適的。
設置爲'0',則表示不限制上傳速率。

③:使用'btmaketorrent.py'製作torrent文件;

實際上,BitTorrent也提供了'btmaketorrentgui.py'工具,這是一個btmaketorrent.py的GUI
實現,使製作torrent文件更爲直觀。但是考慮到服務器上沒有安裝X-Window,所以這裏將它
略去不提。

最簡單和常用的使用是:

$ btmaketorrent.py http://btfans.3322.org:8080/announce file

這裏的'http://btfans.3322.org:8080/announce'表示BT服務器的Tracker地址,也就是通常所
說的'announce url'。強烈建議在製作torrent時,使用域名做爲'announce url',而不是IP。

這裏的'file',可以是一個文件,也可以是以空格隔開的幾個文件,還可以是一個目錄。

另外,btmaketorrent.py還提供了四個選項。其中這兩個最常用到:

    --target
        是指生成的torrent文件的名稱。
    --filesystem_encoding
        指的是文件的字符編碼。如果爲空的話,會進行自動檢測。但是如果使用的是
        2.3版本以下的python則無法進行自動檢測。

3:修改bttrack.py,獲取PID並將其寫入'/var/run/bttrack.pid';

爲了使bttrack.py能象apache、mysql一樣,在系統啓動時做爲一個daemon程序自動執行,我修改了'/usr/local/bin/bttrack.py'文件,並寫了'/usr/local/etc/rc.d/bttrack.sh'文件來實現這
一功能。修改'/usr/local/bin/bttrack.py'文件是爲了獲得bttrack.py啓動之後的PID,並將PID
寫入'/var/run/bttrack.pid'文件中,這樣便於停止bttrack。

原始的'/usr/local/bin/bttrack.py'文件後半部分是這樣的:

    from sys import argv
    from BitTorrent.track import track

    if __name__ == '__main__':
        track(argv[1:])

修改後是這樣的:

    from sys import argv
    from BitTorrent.track import track

    import os

    if __name__ == '__main__':
        file('/var/run/bttrack.pid', 'w').write(str(os.getpid()))
        track(argv[1:])

在此要特別感謝CU Python版的'limodou'大哥,是他幫忙搞定了獲取PID並將其寫入到某個文件的。

4:添加'/usr/local/etc/rc.d/bttrack.sh'腳本;

該腳本使用'bash’作爲語法解釋shell。
在不傳遞參數的情況下,默認行爲是啓動bttrack。另外,象大多數rc腳本一樣,可以向該腳本傳遞
兩個參數:

start | stop

----------- Script : /usr/local/etc/rc.d/bttrack.sh ------------

#!/usr/local/bin/bash

# Author  : MichaelBibby ( michaelbibby # gmail.com )
# Date    : 2005/12/15
# Purpose : To start '/usr/local/bin/bttrack.py' at system startup.

BTTRACK='/usr/local/bin/bttrack.py'
BTTRACK_ARGS='--port 6969 --dfile /var/log/bttrack/dlinfo --allowed_dir /home/torrents --show_infopage 0 --logfile /var/log/bttrack/bttrack.log'
BTTRACK_PID_FILE='/var/run/bttrack.pid'
BTTRACK_PID=$(cat $BTTRACK_PID_FILE)

function USAGE()
{
        echo -e " Usage : $0 [start|stop]"
}

# ---- Main ------

if [ X$# == X0 ]
then
        $BTTRACK $BTTRACK_ARGS &
elif [ X$# == X1 ]
then
        case $1 in
                start) echo -ne "Starting BT tracker ..."
                $BTTRACK $BTTRACK_ARGS &
                echo -ne " Done."
                ;;
                stop) echo -ne "Stop BT tracker ..."
                kill $BTTRACK_PID
                echo -ne " Done."
                ;;
                *) USAGE
                ;;
        esac
else
        USAGE
fi

# ----- Done ----

-------------- End Script : /usr/local/etc/rc.d/bttrack.sh -------------

5:修改/etc/rc.conf,爲bttrack.sh添加entry;

爲了在系統啓動時執行bttrack,在添加了'/usr/local/etc/rc.d/bttrack.sh'腳本後,還
需要在'/etc/rc.conf'中爲它添加一個entry:

    bttrack_enable=”YES”

這樣就OK了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章