wangbin
  • wangbin
  • 2018-03-04
  • IT

linux下载神器aria2

一. 简介

玩PT用的transmission只能下载种子文件,最近要下载个http链接的文件, 只能找找别的下载软件了。

还别说真让我找到个,它就是下载神器aria2,支持 HTTP、FTP、BitTorrent、Metalink等多协议、多来源的命令行下载工具。

这个工具的配置比较复杂,下面记录下centos7安装aria2的过程。

二. aria2

安装aria2

install_aria2.sh

yum -y install epel-release
yum -y install aria2 git

mkdir -p /etc/aria2
touch /etc/aria2/aria2.session  

配置aria2

/etc/aria2/aria2.conf

#允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许外部访问,false的话只监听本地端口
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
rpc-listen-port=6800
#断点续传
continue=true
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
#同服务器连接数
max-connection-per-server=5
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0
#验证用,需要1.16.1之后的release版本
#referer=*
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用
#disk-cache=0
#另一种Linux文件缓存方式
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
file-allocation=prealloc

#自己设置的参数
#用户名
#rpc-user=root
#密码
#rpc-passwd=your-passwd
#上面的认证方式不建议使用,建议使用下面的token方式
#设置加密的密钥
rpc-secret=your-secret
#下载历史保存路径
input-file=/etc/aria2/aria2.session  
save-session=/etc/aria2/aria2.session  
#文件保存路径, 默认为当前启动位置
dir=/vps/hosts/aria2/downloads

大家可以根据自己需要,修改"#自己设置的参数"下面的内容

  1. rpc-user和rpc-passwd是老的认证方式,已经不建议使用了,这里注释掉
  2. rpc-secret这个是新认证方式-token方式,这里使用这个,设置的是"your-secret"
  3. input-file和save-session是下载历史保存的路径
  4. dir配置的下载文件保存路径

命令

按照上面的配置应该没啥问题,我们可以先用下面的命令来测试是否可以启动aria2服务

/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf

如果可以正常启动,ctrl+c结束,执行下面命令后台运行

/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf -D

三. WebUI

现在aria2服务已经启动起来了,要想方便的使用它,还差个好的管理工具。

aria2不像transimission那样有自带的web管理界面,还好它支持JSON-RPC和XML-RPC接口远程调用,我们可以使用https://github.com/ziahamza/webui-aria2来作为它的WebUI。

cd /vps/hosts
git clone https://github.com/ziahamza/webui-aria2
mv webui-aria2 aria2

nginx配置

我们使用nginx来做它的web服务器,配置文件是

server {

    listen       80;
    listen       [::]:80;

    server_name  aria2.wangbin.io;

    location / {
        root   /vps/hosts/aria2;
        index  index.html index.htm;
    }

    location /jsonrpc {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://127.0.0.1:6800/jsonrpc;
        proxy_redirect off;
    }

}
  1. root对应的值为我们刚才git下来的工程路径/vps/hosts/aria2
  2. 这个工程会调用aria2的JSON-RPC接口,但aria2的rpc默认端口是6800,这里我们用nginx反代一下,这样我们就可以不开放6800端口,只开放80端口了。相应的,我们需要修改工程的默认配置,后面我们会说到。

修改后,执行nginx -t检查下配置是否有问题,没问题再执行nginx -s reload重新加载nginx配置。

webui-aria2配置

webui-aria2的配置文件为configuration.js

我们需要修改其中2个地方,连上之前启动的aria2服务。

  1. port: 80,使用nginx的服务,上面nginx配了反代aria2在6800端口提供的服务,这样我们请求nginx的80端口就可以了
  2. token: 'your-secret',上面aria2的配置文件中rpc-secret对应的值,工程会拿这个用于验证

配置文件详细解释可以看这里https://www.jianshu.com/p/7ba0e08e9946

结尾

按照上面的配置后,访问nginx配置的server_name aria2.wangbin.io,就可以愉快的使用aria2下载http链接的资源啦,赶紧试试吧。

参考:

  1. https://www.jianshu.com/p/7ba0e08e9946