一.介绍
rTorrent是一款简洁但是功能强大的轻量级BT/PT客户端,使用ncurses库以C++编写,所以资源占用来说相对于Python的Deluge会小不少,之所以把这两个拿来比较是因为它们都依靠libtorrent,不过,rTorrent不带WebGUI,它的Web界面是第三方的,一般使用的是ruTorrent。
二.安装
这部分的安装包含了rTorrent以及ruTorrent,前面说到后者并非内置的,所以总体来说就比较麻烦了,因为还得额外安装Web 服务器并配置。所以我建议,除非比较折腾,不然还是用其他的吧,当然你也可以去GitHub上翻翻一键脚本,挺多的。
不过嘛,折腾啥乐趣,也算是积累吧,我还是选择自己手动搞了。
①安装libtorrent
和Deluge不同的是,rTorrent不需要它的python binding,也用不着rasterbar版本,所以也就没了一堆boost库的问题,当然,因为不是rasterbar版本,所以速度特别快(不要奇怪,libtorrent有两个分支,一个侧重全平台,一个侧重速度)
cd /opt/ wget http://rtorrent.net/downloads/libtorrent-0.13.6.tar.gz tar xzf libtorrent-0.13.6.tar.gz cd libtorrent-0.13.6 ./configure make && make install
基本上只要你装齐了编译程序,就没啥问题了,没装 ? 运行下面命令吧
yum groupinstall "Development tools" -y
②安装rTorrent
最开始说到rTorrent是使用了ncurses库的,所以先得装这个
yum install ncurses-devel xmlrpc-c-devel -y echo -e "/usr/local/lib/\n/usr/local/lib64/" >> /etc/ld.so.conf.d/local.conf ldconfig export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig cd /opt/ wget http://rtorrent.net/downloads/rtorrent-0.9.6.tar.gz tar -zxf rtorrent-0.9.6.tar.gz cd rtorrent-0.9.6 ./configure --with-xmlrpc-c make && make install
上面的修改加载动态库和修改自动寻找pkgconfig都是预防rTorrent编译过程中找不到依赖,不出意外的话应该是一路顺风的。这样rTorrent应该就装好了(当然,现在还不能完美使用,因为缺配置文件,请继续看下去)
③安装ruTorrent
安装Nginx以及PHP的过程我就不说了,无论是OneInStack亦或者是LNMP啥的都行。
先为Nginx添加RPC反代监听,这是因为按照rTorrent建议,最好不要让rTorrent直接RPC监听端口,而是配置为Socket文件,然后用Web服务器反代。
vi /usr/local/nginx/conf/nginx.conf #在下方的default部分的server段添加如下内容 location /RPC2 { include scgi_params; scgi_pass unix:/tmp/rpc.socket; }
然后创建一个vhost (当然也可以用默认的IP访问的vhost),将ruTorrent的文件下载解压到根目录并修改配置
cd /path/to/web/root wget http://dl.bintray.com/novik65/generic/rutorrent-3.6.tar.gz tar xzf rutorrent-3.6.tar.gz rm -rf rutorrent-3.6.tar.gz #安装插件 wget http://dl.bintray.com/novik65/generic/plugins-3.6.tar.gz tar xzf plugins-3.6.tar.gz rm -rf plugins-3.6.tar.gz #请确认覆盖 mv plugins rutorrent/ chown -R www:www rutorrent cd rutorrent cp conf/config.php{,.bak} sed -i 's/\/\/ $scgi/$scgi/g' conf/config.php sed -i 's/$scgi_port = 5000/\/\/ $scgi_port = 5000/g' conf/config.php sed -i 's/$scgi_host = "127/\/\/ $scgi_host = "127/g' conf/config.php sed -i "s/\"php\"\t=> ''/\"php\"\t=> '\/usr\/local\/php\/bin\/php'/g" conf/config.php sed -i "s/\"curl\"\t=> ''/\"curl\"\t=> '\/usr\/bin\/curl'/g" conf/config.php sed -i "s/\"gzip\"\t=> ''/\"gzip\"\t=> '\/usr\/bin\/gzip'/g" conf/config.php sed -i "s/\"id\"\t=> ''/\"id\"\t=> '\/usr\/bin\/id'/g" conf/config.php sed -i "s/\"stat\"\t=> ''/\"stat\"\t=> '\/usr\/bin\/stat'/g" conf/config.php
这儿的PHP路径看你自己需要修改,只需要注意"/"符号前需要加"\"进行转义
如果需要ruTorrent的插件功能,请参照如下命令
yum install mediainfo unrar xz -y cd /opt/ wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz tar xJf ffmpeg-release-64bit-static.tar.xz cd ffmpeg-3.3.4-64bit-static mv ffmpeg-10bit ffserver qt-faststart ffmpeg ffprobe /usr/bin/
然后刷新页面,可能会有个插件报错无权限,这个我纠结了半天没搞定,然后删了
另外,因为ruTorrent不自带密码功能,所以需要借助Web服务器的加密访问
yum install httpd-tools -y htpasswd -c /usr/local/nginx/rtorrent.pass 用户名 #然后输入两次密码 chmod 400 /usr/local/nginx/rtorrent.pass chown www:www /usr/local/nginx/rtorrent.pass #然后在vhost配置文件中加入如下内容 location /rutorrent { auth_basic "ruTorrentlogin"; auth_basic_user_file /usr/local/nginx/rtorrent.pass }
三.配置
首先需要创建个单独的用户,为了安全
/usr/sbin/groupadd rtorrent useradd rtorrent -g rtorrent
然后准备下需要的几个目录
#下载文件存放目录 mkdir /home/rtorrent/download #种子存储目录以及中间文件目录 mkdir /home/rtorrent/.session #监控目录 mkdir /home/rtorrent/.watch
然后来个启动管理脚本(依赖screen,请务必安装)
cat >/etc/init.d/rtorrent<<'EOF' #!/bin/sh case "$1" in start) echo -n "Starting rTorrent" su - rtorrent -c "screen -A -m -d -S rtorrent /usr/local/bin/rtorrent" & echo "." ;; status) ppid=`ps ax | grep "/usr/local/bin/rtorrent" | grep -v grep | grep -v screen | awk '{ print $1 }'` if [ "${ppid}" = "" ]; then echo "rTorrent is stopped !" else echo "rTorrent is running !" fi ;; 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 - rtorrent -c "screen -A -m -d -S rtorrent /usr/local/bin/rtorrent" & echo "." ;; *) echo "Usage: {start|stop|restart}" >&2 exit 1 ;; esac exit 0 EOF chmod +x /etc/init.d/rtorrent
我这边只翻译了基础配置,还有些高级配置默认没写在官方配置文件样例中,请自行查看-->传送门
将下面的内容自行修改(也可以参照下方优化说明以及上面的高级配置修改,然后保存到/home/rtorrent/.rtorrent.rc)
# 本文件为rTorrent配置文件,请复制本文件到 ~/.rtorrent.rc 并启用 # 或是修改你所需要的部分,需要启用的部分请取消最前面的注释符号 # 连接到每个种子的最大和最小节点(用户/Peer)数 # #throttle.min_peers.normal.set = 40 #throttle.max_peers.normal.set = 100 # 同上,但仅针对已完成的种子(-1 表示与下载中的种子一致) # #throttle.min_peers.seed.set = 10 #throttle.max_peers.seed.set = 50 # 每个种子最大同时上传数 # #throttle.max_uploads.set = 15 # 全局最大上传和下载速率(单位:KiB),"0"表示无限制 # #throttle.global_down.max_rate.set_kb = 0 #throttle.global_up.max_rate.set_kb = 0 # 设定默认保存 torrents 的目录 # directory.default.set = /home/rtorrent/download/ # 默认会话目录. 确保你没有同时运行使用相同会话目录的 rTorrent 程序. # 或者是否使用了一个相对路径? # session.path.set = /home/rtorrent/.session # 设置种子监控目录,新种子自动下载,移除种子自动停止下载 # #schedule2 = watch_directory,5,5,load_start=/home/rtorrent/.watch/*.torrent #schedule2 = untied_directory,5,5,stop_untied= # 当磁盘空间不足时停止下载 # #schedule2 = low_diskspace,5,60,close_low_diskspace=100M # 上报给Tracker的本地IP地址 # #network.local_address.set = 127.0.0.1 #network.local_address.set = rakshasa.no # 用于监听Socket以及对外连接的IP地址 # #network.bind_address.set = 127.0.0.1 #network.bind_address.set = rakshasa.no # 用于监听的端口范围 # #network.port_range.set = 6890-6999 # 从上方的监听端口范围中随机选择开放端口 # #network.port_random.set = no # 对完成的种子进行hash校验。在直到导致磁盘空间不足的BUG被上报修复之前 # 都可能是很有用的 # #pieces.hash.on_completion.set = no # 设置客户端是否尝试连接 UDP trackers # #trackers.use_udp.set = yes # 额外尝试绑定以便解决动态IP问题 # #schedule2 = ip_tick,0,1800,ip=rakshasa #schedule2 = bind_tick,0,1800,bind=rakshasa # 加密选项,设为 none(默认情况)或下面的任何一个: # allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext # # 如下例中的值表示允许入站连接加密,出站连接开始时以非加密方式进行, # 如行不通则以加密方式进行重试,在加密握手后,优先选择将纯文本RC4方式加密 # #protocol.encryption.set = allow_incoming,enable_retry,prefer_plaintext # 当所有trackers失效情况下,为trackerless torrents开启DHT支持 # 可选值 "disable"(完全禁止),"off"(不启动),"auto"(按需要启动或停止),"on"(开启) # 默认值为 "off",若要使DHT工作,会话(Session)目录必须被定义 # #dht.mode.set = auto # DHT网络所使用的UDP端口 # #dht.port.set = 6881 # 启用peer交换 (用于那些没有被标记为私有的torrent,一般指PT) # #protocol.pex.set = yes # 设置下载列表输出样式 ("full", "compact") # #ui.torrent_list.layout.set = "full" # RPC配置,这个在高级配置里,这儿是官方推荐的用法,也能直接监听端口,但是不推荐 # execute_nothrow=rm,/tmp/rpc.socket scgi_local = /tmp/rpc.socket schedule = chmod,0,0,"execute=chmod,777,/tmp/rpc.socket"
看了下我这个版本的配置文件貌似是最新的,所以和网上老的那些参数名字不太一样,也不知道老的能不能用...
全部配置完后就能正常工作了
四.优化
全面的请参考各大BT/PT论坛社区教程以及官方wiki -->传送门
下面的参数大部分在ruTorrent上都能直接修改,所以你可以自己选是否要通过配置文件修改
首先你得搞清楚你是要在本地运行还是服务器运行,如果是本地,请做好限速,以确保你基本上网正常,可以通过如下的全局限速参数进行
throttle.global_down.max_rate.set = 0 throttle.global_up.max_rate.set = 0
如果机器内存或者带宽比较缺,请适当减少同时做种数,因为理论上每个连接都会占用一部分内存,而且读写文件都是会通过内存中转的,下面的事同时上传下载参数以及每个种子可连接的最小最大节点参数
hrottle.max_downloads.global.set = 150 throttle.max_uploads.global.set = 150 throttle.min_peers.normal.set = 30 throttle.max_peers.normal.set = 150
针对家庭用户可以尝试修改端口范围以及开启随机端口以便穿透NAT
network.port_range.set = 51001-51250 network.port_random.set = yes
PT用户必须知道要关掉DHT以及节点交换吧,不然你就GG了
dht.mode.set = disable protocol.pex.set = no
部分tracker是UDP的,启用这个能连接更多的tracker
trackers.use_udp.set = yes
这儿需要注意,请按你需求配,我下面用的是别人的配置,最下面三会影响内存占用和速度,前两个可能导致你出现open too many files错误
network.max_open_files.set = 4096 network.max_open_sockets.set = 1536 network.http.max_open.set = 48 network.send_buffer.size.set = 4M network.receive_buffer.size.set = 4M
下面的严重影响内存占用,务必慎重,详细请参考高级配置
pieces.hash.on_completion.set = no pieces.preload.type.set = 1 pieces.memory.max.set = 500M
文章评论
请问你这些命令是用什么软件运行的?
@Kingson 可以通过SSH或者VNC连接Linux服务器运行命令
你好,此教程是可以在所有linux发行版上搭建的吗?比如说centos
@一条咸鱼 我就是用的CentOS,只要会替换命令理论上其他Linux发行版也是可以的
大佬,你好( ^_^)/能不能出个兼容bt面板的安装教程,因为我习惯用bt面板管理网站了,考虑以后有可能还要在服务器上搭建其它网站
rTorrent 基于 libtorrent-rakshasa (https://github.com/rakshasa/libtorrent)
Deluge 基于 libtorrent-ratserbar (https://github.com/arvidn/libtorrent)
这两个 libtorrent 是不一样的
@Aniverse 这个我知道,安装起来麻烦程度也不一样。。。
大佬 报错。Torrent list not yet available, connection to rTorrent not established.能帮忙排查一下么?
rtorrent很好很清凉。但是 不能下载meget链接
完全看不懂没有直接安装直接能用的rTorrent吗求教了