Centos离线下载Aria2 AriaNG bt-tracker自动更新

aria2是一个基于命令行的开源下载工具,支持多协议、多来源(HTTP/HTTPS、FTP、BT种子、磁力链接、Metalink协议等)、多线程的下载。

本篇介绍Centos7下

  • aria2的安装、配置
  • aria2设为系统服务,自启动
  • 自动更新bt-tracker
  • 搭配前端UI AriaNG 离线下载

安装aria2

两种方式 yum 安装以及源码安装

yum安装2

#安装epel源
yum -y install epel-release
yum -y install aria2
#查看aria2版本
aria2c -v

源码安装

yum install gcc*
wget  https://github.com/aria2/aria2/releases/download/release-1.33.1/aria2-1.33.1.tar.gz
tar -zxvf aria2-1.33.1.tar.gz
mv aria2-1.33.1 aria2
cd aria2
./configure
make
make install

配置aria2

通过配置文件

#目录设计/root/.aria2/aria2.conf
mkdir ~/.aria2
#创建session文件
touch ~/.aria2/aria2.session
#创建配置文件
vi ~/.aria2/aria2.conf

粘贴修改如下字段,注意 RPC端口 RPC授权令牌

# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/root/downloads
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=none
# 断点续传
continue=true

## 下载连接相关 ##

# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=5
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=5
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
split=20
# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
# 禁用IPv6, 默认:false
disable-ipv6=true

## 进度保存相关 ##

# 从会话文件中读取下载任务
input-file=/root/.aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/root/.aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
#save-session-interval=60

## RPC相关设置 ##

# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=pan.test.com
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-passwd=

## BT/PT下载相关 ##

# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=6881-6999
# 单个种子最大连接数, 默认:55
bt-max-peers=55
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=false
# DHT网络监听端口, 默认:6881-6999
#dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
#bt-enable-lpd=false
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true
# 每个种子限速, 对少种的PT很有用, 默认:50K
#bt-request-peer-speed-limit=50K
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=0.1
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true    

aria2使用

两种模式:作为命令直接调用,RPC Server模式(推荐)

命令直接调用

常用命令

#直接下载
$ aria2c http://example.org/mylinux.iso    
#从两个地址下载:
$ aria2c http://a/f.iso ftp://b/f.iso
#双线程下载
$ aria2c -x2 http://a/f.iso
#用种子下载
$ aria2c http://example.org/mylinux.torrent
#磁力链接
$ aria2c 'magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C'
#Metalink
$ aria2c http://example.org/mylinux.metalink
#下载文本中所有链接
$ aria2c -i uris.txt

RPC Server模式(推荐)

启动RPC Server模式

#-D参数指Daemon模式,后台执行
aria2c --enable-rpc --rpc-listen-all --rpc-allow-origin-all -c  --dir /root/download -D

加载配置文件启动(推荐)

aria2c --conf-path=/root/.aria2/aria2.conf -D

将aria2设置为系统服务

vi /etc/init.d/aria2c

内容如下,
需要注意的就是路径,此例为yum安装,路径为/usr/bin/aria2c

#!/bin/sh
### BEGIN INIT INFO
# Provides: aria2
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO
case "$1" in
start)
  echo -n "Starting aria2c"
  /usr/bin/aria2c --conf-path=/root/.aria2/aria2.conf -D
  ;;
stop)
  echo -n "Shutting down aria2c "
  killall aria2c
  ;;
restart)
  killall aria2c
  /usr/bin/aria2c --conf-path=/root/.aria2/aria2.conf -D
  ;;
esac
exit

可执行权限

chmod 7777 /etc/init.d/aria2c

控制命令

#重新加载一下
systemctl daemon-reload
#启动
systemctl start aria2c
#停止
systemctl stop aria2c
#重启
#systemctl restart aria2c
#开启自启动
systemctl enable aria2c

防火墙开启RPC,BT端口

如果你嫌BT监听端口开的太多,可以更改配置文件aria2.conf改为51413

firewall-cmd --zone=public --add-port=6800/tcp --permanent
firewall-cmd --zone=public --add-port=6881-6999/tcp --permanent
firewall-cmd --zone=public --add-port=6881-6999/udp --permanent
firewall-cmd --reload

aria2 bt-tracker更新脚本

实际使用中aria2对种子,磁力链接的下载速度非常令人不满意,经常0 Kb/s需要手动添加tracker才会有速度,但手动添加太麻烦。

这样问题便解决了。

手动添加tracker的方法(不推荐哦)

#编辑aria2的配置文件
vi ~/.aria2/aria2.conf
#在末尾添加字段,tracker之间用,隔开
bt-tracker=udp://9.rarbg.com:2710/announce,udp://tracker.skyts.net:6969/announce

脚本更新bt-tracker(推荐哦)

创建bt-tracker更新脚本

vi /root/trackers-list-aria2.sh

填写如下字段

#!/bin/bash
killall aria2c
list=`wget -qO- https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt|awk NF|sed ":a;N;s/\n/,/g;ta"`
if [ -z "`grep "bt-tracker" /root/.aria2/aria2.conf`" ]; then
    sed -i '$a bt-tracker='${list} /root/.aria2/aria2.conf
    echo add......
else
    sed -i "s@bt-tracker.*@bt-tracker=$list@g" /root/.aria2/aria2.conf
    echo update......
fi

可执行权限

chmod +x /root/trackers-list-aria2.sh

执行脚本

/root/trackers-list-aria2.sh

更新过程会先关闭aria2c进程,更新完成再需要手动开启aria2c

systemctl start aria2c

当然也可以使用任务计划程序自动完成

使用crontab任务计划程序 实现自动更新

crontab -e

添加如下字段

*/30 * * * * /root/trackers-list-aria2.sh
*/5 * * * * /usr/bin/aria2c --conf-path=/root/.aria2/aria2.conf -D

字段解释

  • 每30分钟更新一次tracker列表(实际不需要这么频繁 这个更新频率请自己掌握)
  • 每5分钟启动一次aria2,防止aria2崩

AriaNg下载与使用

aria2不带GUI界面,搭配前端UI工具更方便一些。

AriaNg是一个前端(HTML+JS静态)控制面板,不需要和 aria2(后端/服务端)放在一个服务器或者设备中,你可以直接下载到你的本地电脑上使用,或者放在服务器访问,服务器只要有Nginx或者Apache就可以。(类似的还有WebUI,这里不介绍了。)

本地使用

  • 下载最新版aria-ng-0.3.0.zip
  • 解压缩
  • 打开index.html
  • 点击AriaNg 设置

设置的内容就是上面修改的配置文件/root/.aria2/aria2.conf

Aria2 RPC Alias #RPC别名随便起一个
Aria2 RPC Address   #服务器的ip及端口
Aria2 RPC Protocol  #协议 默认Http
Request Method  #请求方法 默认POST
Secret Token #密钥 上面设置的pan.test.com

填写完毕,别忘了点击Reload Page,重加载完后状态变为Conncted

配置完毕,现在添加下载任务进行下载了。

AriaNg

放在服务器使用

  • 下载最新版aria-ng-0.3.0.zip
  • 上传至网站根目录
  • 解压缩
  • 访问网站

设置的内容同本地使用(汗,本地用是英文界面,放在服务器是中文)

AriaNg