星期三, 11月 25, 2009

Private Tracker Server 架設及安裝使用 Gazelle

紀錄下 Private Tracker Server 的架設及安裝過程,

使用 Ubuntu (Debian 的安裝應該也類似) 系統,搭配 Lighttpd

所使用的是和 What.CD這個著名的音樂 PT 所開發的 Gazelle 系統

1.先用 apt 安裝一堆相依套件

apt-get install build-essential php5 libmysqlclient15-dev php5-mysql memcached php5-memcache php5-gd php5-mcrypt subversion automake cmake g++ libboost-date-time-dev libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev libboost-serialization-dev make zlib1g-dev lighttpd mysql-server libtool

2.透過 SVN 下載 Gazelle,並解壓縮到 /var/www/site/ (實際SVN的下載地址請到 What.CD 的 IRC #gazelle 頻道查詢)

svn co http://svn.what.cd:81/repos/project_gazelle /var/www/

cd /var/www/

unrar x Gazelle1.0Rev.27.rar

mv Gazelle* /var/www/site/

3.設定 MYSQL 的 root 密碼

mysql -u root
use mysql
update user set password=PASSWORD(『New_Password') where User=』root';
flush privileges;
quit;

4.更改 lighttpd 設定將 url.access-deny 改成這樣(把 /site 下面比較敏感的資料夾禁止使用者存取)

url.access-deny = ( "~", ".inc",".db", ".tpl.php", ".cls.php",".sql", ".ini", ".inc", "/var/www/site/captcha", "/var/www/site/classes", "/var/www/site/sections", "/var/www/site/torrents" )

5.重新啟動 lighttpd

/etc/init.d/lighttpd.sh restart

6.設定 Gazelle

http://localhost/site/install/index.php

image

7.安裝 XBTT

cd /site/
tar zxfv xbtt.tar.gz
cd xbtt/build/xbtt
./autogen.sh
make
cd src

nano xbt_tracker.conf

8. 更新 MYSQL 設定

mysql -u root -p
use databasewhatever_you_defined_in_install_php
select * from xbt_config;

update xbt_config set value = 『Your_Servers_IP' where value = 『70.47.114.223』;
update xbt_config set value = 『Any_Port_You_Want' where value = 『34000』;

9.啟動 XBTT

./xbt_tracker xbt_tracker.conf

10.重新啟動 memcached 服務

/etc/init.d/memcached restart

11.開始使用 http://localhost/site/index.php

image

星期五, 11月 20, 2009

安裝 Wtorrent (Rtorrent 的 WebUI)

這篇文章的內容已經過時了,

很多套件都找不到或是更名了,

而且目前個人覺得比較好用的 web UI 是 Rutorrent 詳細的安裝過程可以參考這篇

http://filesharefreak.com/2010/02/13/how-to-install-rtorrent-rutorrent-using-socket-ssl-authentication-on-ubuntu-or-debian/

===============================

下面列出簡單的安裝步驟,適用在 Ubuntu,Debian 系列的 linux

rtorrent + wtorrent 的作用和 utorrent 的 webui 是類似的作用,只是讓你可以用網頁管理你的 rtorrent
(1)安裝 lighttpd 和 php5 以及 unzip
apt-get install lighttpd php5-common php5-sqlite php5-xmlrpc libxmlrpc-c3 sqlite unzip php-fastcgi php5-curl
(2) rtorrent 的設定檔(~/.rtorrent.rc)中加入下面這行
scgi_port = localhost:5000
(3) 修改 /etc/lighttpd/lighttpd.conf



server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_compress",
"mod_scgi",
"mod_fastcgi"
)
server.document-root = "/var/www/"
server.errorlog = "/var/log/lighttpd/error.log"
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm" )
accesslog.filename = "/var/log/lighttpd/access.log"
url.access-deny = ( "~", ".inc",".db", ".tpl.php", ".cls.php" )
server.pid-file = "/var/run/lighttpd.pid"
dir-listing.encoding = "utf-8"
server.dir-listing = "enable"
server.username = "www-data"
server.groupname = "www-data"
$HTTP["remoteip"] =~ "127.0.0.1" {
alias.url += (
"/doc/" => "/usr/share/doc/",
"/images/" => "/usr/share/images/"
)
$HTTP["url"] =~ "^/doc/|^/images/" {
dir-listing.activate = "enable"
}
}
$HTTP["host"] == "ks0000.kimsufi.com" {
server.document-root = "/var/www/"
server.errorlog = "/var/log/lighttpd/error.log"
accesslog.filename = "/var/log/lighttpd/access.log"
server.error-handler-404 = "/error-handler.php"
}
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

fastcgi.server = ( ".php" => ((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/tmp/php.socket"
)))


scgi.server = (
"/RPC2" => # RT_DIR
( "127.0.0.1" =>
(
"host" => "127.0.0.1", # Ip where rtorrent is listening
"port" => 5000, # Port specified in .rtorrent.rc
"check-local" => "disable"
)
)
)



(4) 將目錄切換到放置網頁的目錄 /var/www

cd /var/www


(5)下載 wtorrent


wget "http://www.wtorrent-project.org/trac/changeset/latest/trunk/?old_path=%2F&format=zip" -O wtorrent.zip



(6)把檔案解壓縮到 /var/www


unzip *.zip



(7)建立 Smarty 的樣板資料夾



mkdir /var/www/wtorrent/tpl_c/



(7)更改檔案的權限和擁有者



chown -R www-data:www-data /var/www/wtorrent

chmod -R 755 /var/www/wtorrent



(6) 在網頁中設定 wtorrent


http://127.0.0.1/wtorrent/install.php


這裡要設定 username 和 password


(7) 刪掉/更名 wtorrent 的 install.php 以免無聊人士偷改


mv /var/www/wtorrent/install.php /var/www/wtorrent/fool.php


(8) 開始使用


http://127.0.0.1/wtorrent/

Rtorrent的安裝步驟

這幾天剛幫朋友把 Seedbox 給設定好 rtorrent+wtorrent 的環境,下面列出簡單的安裝步驟,適用在 Ubuntu,Debian 系列的 linux
1. sudo apt-get install rtorrent screen vim

image
2. cd ~
3. vim .rtorrent.rc
依照下面的設定檔改成自己可以用的設定檔#開頭的那幾行是註解可以不用打, vim 有分編輯模式和命令模式,一開始進入是命令模式,按 i 或是 a 可以進入編輯模式打字,按 ESC 可以離開編輯模式回到命令模式,輸入 [:w](不包涵中括號,即冒號和w) 然後按下 Enter 可以寫入檔案,[:q!] 按下Enter 可以離開畫面, 其實檔案可以先打好命名成 .rtorrent.rc 利用 PPutty (不是putty)上傳到主機就可以了(上傳方法是開啟 pputty 並登入然後將檔案拖曳到 pputty,會詢問你帳號密碼傳完預設在家目錄下面)

主要需要修改的是

主機的 IP,DomainName,各個 rtorrent 的目錄

# 最大最小連接數
min_peers = 50
max_peers = 100
# 最大最小連接數(對於已經完成下載的種子)
min_peers_seed = 10
max_peers_seed = 100
# 最大同時上傳的連接數
max_uploads = 50
# 檔案名稱編碼
encoding_list = UTF-8
# 上下傳 ratio (0表示不限)
download_rate = 0
upload_rate = 0
# 存放下載檔案的路徑
directory = /home/snowwolf725/data
# rtorrent 的工作目錄
session = /home/snowwolf725/session
# 每五分鐘查看特定目錄並下載新的種子
schedule = watch_directory,5,5,load_start=/home/snowwolf725/watch/*.torrent
# Server 的 IP 和 Domain name
ip = 1.2.3.4
ip = ks00000.kimsufi.com
bind = 1.2.3.4
# rtoreent 所使用的 port
port_range = 49152-65535
# 是否使用 udp 的 Tracker
use_udp_trackers = yes
# 連線加密(允許加密連線連入,但預設使用未加密連線)
encryption = allow_incoming,enable_retry,prefer_plaintext
# 依照種子設定決定是否開啟 DHT
dht = auto
# DHT 的 port
dht_port = 19000
# 是否開啟 peer exchange 功能(開啟)
peer_exchange = yes

umask = 0000
on_erase = rm_complete,"execute=rm,-rf,$d.get_base_path="

schedule = low_diskspace,5,5,close_low_diskspace=100M

4. rtorrent
這樣就完成了, 按 Ctrl+q 可以離開 rtorrent

image

5. 接下來為了讓 rtorrent 能夠開機就自動執行需要作下面的動作

vim /etc/init.d/rtorrent.sh

將下面的文字寫到 /etc/init.d/rtorrent.sh 將 snowwolf725 改成你自己的使用者 ID

#!/bin/sh

case "$1" in
  start)
        echo -n "Starting rtorrent"
        su - snowwolf725 -c "screen -A -m -d -S rtorrent /usr/local/bin/rtorrent" &
        echo "."
        ;;
  stop)
        echo -n "Stopping rtorrent"
        ppid=`ps ax | grep "/usr/local/bin/rtorrent" | grep -v grep | grep -v screen | awk '{ print $1 }'`
        kill ${ppid}
        echo "."
        ;;
  restart)

        echo -n "Restarting rtorrent"
        ppid=`ps ax | grep "/usr/local/bin/rtorrent" | grep -v grep | grep -v screen | awk '{ print $1 }'`
        kill ${ppid}
        sleep 1
        su - snowwolf725 -c "screen -A -m -d -S rtorrent /usr/local/bin/rtorrent" &
        echo "."
        ;;
  *)
        echo "Usage: {start|stop|restart}" >&2
        exit 1
        ;;
esac

exit 0

6. chmod +x /etc/init.d/rtorrent.sh

讓該檔案變成可以執行

7. /etc/init.d/rtorrent.sh start

啟動 rtorrent , 啟動後預設是放到背景執行的所以看不到,可以下

ps aux|grep rtorrent

查看是否有啟動,有啟動應該類似這樣,如果只有 grep rtorrent 一行的話就是沒有啟動

=========================

1000     10348  0.0  0.0   3160   920 ?        Ss   16:14   0:00 SCREEN -A -m -d -S rtorrent /usr/bin/rtorrent
1000     10349  0.2  0.2  10520  4348 pts/3    Ss+  16:14   0:00 /usr/bin/rtorrent
root     10353  0.0  0.0   2060   692 pts/0    S+   16:14   0:00 grep rtorrent

=========================

有可能是 rtorrent 的路徑不對,可以下

updatedb;locate rtorrent;

查詢 rtorrent 的路徑

將上面的 /usr/local/bin/rtorrent 改成你的路徑例如

/usr/bin/rtorrent

================================================

1.session 是需要的 rtorrent 會拿該目錄來紀錄哪些 torrent 已經有下載過了,以及哪些 rtorrent 正在下載中,
沒有該目錄的話等於你每次重開 rtorrent 他的無法知道你之前有下過什麼檔案以及目前下載的進度
2.bind 是告訴 rtorrent 使用哪個 IP 來下載檔案(其他人也是透過該IP來和你的 Server 連接)
所以你的 IP 不應該是設定成 127.0.0.1 (這是本機 IP), 而應該是 114.xx.xx.xxx 這樣的 IP
3.
schedule 的格式是
schedule = id,start,interval,command
第一個是排成的名稱ID,第二個是開始的時間,第三個是多久作一次,第四個是要做什麼程式
schedule = untied_directory,10,10,stop_untied=
這表示 rtorrent 啟動 10 分鐘後開始執行,之後每十分鐘執行一次,所執行的動作是
當 *.torrent 的檔案被從 watch directory 或是 session 中移除的時候就會停止該種子的下載
schedule = low_diskspace,5,60,close_low_diskspace=100M
這表示 rtorrent 啟動 5 分鐘後開始執行,之後每 60 分鐘執行一次,所執行的動作是
當硬碟空間少於 100MB 時停止種子的下載