Total Pageviews

Thursday, 7 July 2016

Aria2——Unix 系统中的下载神器

拥有了 Aria2 的默默扶持,再也不用忍受 OSX 下的国内那些半死不活的下载工具了。

关于 Aria2

Aria2 是一个基于命令行的开源下载工具,支持多协议、多来源(Http/https、FTP、Magnet、BitTorrent 等)、多线程的下载。
主要优势如下:
  • 高速,自动多线程下载;
  • 断点续传;
  • 轻量。占用内存非常少,通常情况平均 4~9MB 内存占用(官方介绍);
  • 多平台。支援 Win/Linux/OSX/Android 等操作系统下的部署;
  • 模块化。分段下载引擎,文件整合速度快;
  • 支持 RPC 界面远程;
  • 全面支持 BitTorrent 协议;

Install Aria2

安装 Aria2 依赖于 Mac 下的包管理工具 Homebrew(Linux 用户可使用 apt-get 命令直接安装)。而 Homebrew 的使用依赖于 OSX 的 XCode 命令行工具部分。所以,这些都得有…(Linux 用户直接看第 2 小节)。
  1. 先安装 Homebrew:
    • 打开终端(Terminal or iTerm)
    • 安装 XCode(已安装可跳过,选装 XCode 的 CLI 工具):$ xcode-select --install
    • 复制并运行 Homebrew 安装命令:$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    • 查看版本(确认安装是否完成):$ brew --version
  2. Homebrew 管理工具加入系统后,安装 Aria2:
    • OSX 运行:$ brew install aria2
    • Linux 运行: $ sudo apt-get install aria2
  3. 查看命令安装情况:
    • $ aria2c --version 提示版本及说明则表示已安装完成。

配置 Aria2

命令安装完,进入 Aria2 的配置部分。
  1. 在系统主目录下新建 .aria2 文件夹。
    • $ mkdir .aria2
  2. 在 .aria2 文件夹下新建 aria2.conf 配置文件。
    • 进入文件夹:$ cd .aria2
    • 创建配置文件:$ touch aria2.conf
  3. 在 Finder 里查看并对文件进行编辑。
    • a. iTerm/Terminal 当前路径下(~/.aria2/)输入命令 $ open . 进入 Finder 界面下 .aria2 文件夹;
    • b. Finder 界面,快捷键 Command + Shift + G 在弹出的路径跳转小窗口,填入 ~/.aria2/aria2.conf 后 Return。
  4. 使用 TextMate/Sublime Text/TextEdit 等编辑器打开 aria2.conf 文档,填入内容。
#用户名
#rpc-user=user
#密码
#rpc-passwd=passwd
#上面的认证方式不建议使用,建议使用下面的token方式
#设置加密的密钥
#rpc-secret=token
#允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许外部访问,false的话只监听本地端口
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
rpc-listen-port=6800
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
#断点续传
continue=true
#同服务器连接数
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=*
#文件保存路径, 默认为当前启动位置
dir=/Users/YourID/Downloads
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc
注意将配置表中保存路径一项「YourMacID」替换为个人的 Mac OSX 用户名(不知道可以用 $ pwd 命令查看)。
保存并退出。

Aria2 的使用

配置完成后,就可以开始使用了。
Aria2 有两种模式:
  • 命令直接调用。调用命令 $ aria2c "download.url" 下载完成后退出
  • 后台常驻触发,也就是 rpc server 模式。Aria2 作为后台常驻程序,监测 rpc 端口的活动情况,添加并下载文件。完成后继续在后台运行。
涉及到命令输入,力求简化,第二种模式明显更省事。
启动 Aria2 rpc 模式的命令:
$ aria2c --conf-path=<Path>
<Path> 是指配置文件所在的绝对路径。依照上述配置一路下来,具体是:
$ aria2c --conf-path="/Users/YourMacID/.aria2/aria2.conf" -D
使用时注意将其中的「YourMacID」替换为个人的 Mac OSX 用户名。
这时,正确无误的话,Aria2 就启动了。
安装扩展程序,方便浏览器中查看和下载资源时的 rpc 端口调用。
BaiduExporter - Chrome 网上应用店 主要用于 Mac 下下载百度云的资源。
在网站内可见一个「导出下载」的按钮。点击可见 RPC 导出下载和设置三个选项。下载点击 RPC 选项即可。
界面:
如果点击后发现下载没执行或报错,注意检查:
  1. aria2.conf 文件配置是否出错;
  2. 代理工具是否切换到全局穿越模式,如有,则退出全局模式再重试;
从后台关闭 Aria2。在终端执行 kill 命令来关闭 Aria2。
  • 输入 $ kill aria2c 点 Tab 键,显示 aria2 的进程号,然后 Return。Aria2 的进程将被关闭。
  • 直接 $ killalll aria2c 关闭进程。
再次使用时需重新运行。

搭配 Aria2 Web UI

Aria2 不带 GUI 界面。了解下载进度会有不便,日常使用需搭配 Web UI 工具方便查看。
进入网址查看:Aria2 Web 控制台(可保存为书签使用。)
界面效果:

优化启动

利用命令行工具的 alias 进行命令优化,简化 Aria2 命令的输入。
  1. VIM 编辑全局配置文件:
    • 命令行工具默认:$ vi ~/.bashrc
    • 配置 zsh 的命令行工具:$ vi ~/.zshrc
  2. 在末尾添加一条新的 alias:
    • alias aria="aria2c --conf-path="/Users/YourID/.aria2/aria2.conf" -D"
  3. 使之全局生效:
    • 命令行工具默认:$ source ~/.bashrc
    • 配置 zsh 的命令行工具:$ source ~/.zshrc
  4. 以后每次开机或重新启用终端后,键入以下命令直接启用 Aria2,使它常驻后台:
    • $ aria
-----------------


一个支持 离线下载/BT/磁力链接 的在线管理工具 —— Aria2 WebUI


Aria2是一个命令行下运行、多协议、多来源下载工具,支持迅雷磁力链接、BT种子、HTTP、FTP等下载协议,当然了它是命令行下载工具我们想下载一个东西还需要去敲命令自然是不方便,但是现在有人开发了一个WebUI,可以直接在网页上面添加管理任务

配置环境

教程测试环境是:Debian 7

这个Aria2 WebUI是一个 Web面板 + Aria2c后端 组成的。

而这个 Web面板并没有用到PHP,所以不需要PHP环境,只要能运行HTML就可以了。

我这里提供三个方法:Nginx、Apache、LNMP一键包。

因为不需要PHP,不需要数据库,所以单独安装Nginx或者apache都是可以的,也是属于最简安装。当然LNMP一键包我写教程都会带上这个的。

Nginx

apt-get install nginx -y
这时候你的 虚拟主机文件夹就是这个,进入这个文件夹,并删除默认的首页:

cd /usr/share/nginx/www
rm -rf index.html
Apache

注意这个,一些openvz框架的系统可能会自带apache,不要重复安装。

apt-get install apache -y
这时候你的 虚拟主机文件夹就是这个,进入这个文件夹,并删除默认的首页:

cd /var/www
rm -rf index.html

安装步骤

一下安装步骤,我以 LNMP一键包 的虚拟主机目录 为例!

首先是安装 aria2c 后端和git。

apt-get install aria2c
apt-get install git -y
然后通过上面的配置环境步骤 进入你的虚拟主机文件夹,执行以下命令安装前端面板:

git clone https://github.com/ziahamza/webui-aria2.git
# github地址:https://github.com/ziahamza/webui-aria2

mv webui-aria2/* .
rm -rf webui-aria2

chmod -R 755 你的虚拟主机文件夹
# 例如chmod -R 755 /home/wwwroot/233.com
然后这时候通过你的 域名或者IP 就可以访问你的 前端面板了。

当然这个时候还没有启动 后端,所以前端面板在无法连接到后端的时候会一直提示出错。

配置后端

因为 aria2c 后端启动后就不能关闭SSH,所以需要设置一下后台运行。

apt-get install screen -y
# 安装screen

screen -S aria2c
# 创建aria2c活动(名称随意)

screen -r aria2c
# 如果你关闭SSH后想重新进入这个活动就输入这个。
然后就是启动 aria2c 后端了,下面这个代码是直接启动。

aria2c --enable-rpc --rpc-listen-all
下面这个代码是设置了下载文件目录、登录用户名和密码(强烈建议使用这个代码来进行加密,避免暴露你的IP或域名)

aria2c --enable-rpc=true --rpc-listen-all --rpc-allow-origin-all=true --rpc-listen-all=true --dir=/home/wwwroot/你的域名/download --rpc-user=用户名 --rpc-passwd=用户密码
运行完后,访问你的 IP 或者 域名 进入前端面板配置。

配置前端

首先,如果你设置了登录用户名和密码,那你打开网站后就会提示输入用户名和密码。

没有设置这个或者登录进去后,需要设置 连接设置。

点击顶部菜单栏 设置——连接设置。

主机选项,如果你用的是IP或者域名就填写上去,也可以留空,留空代表默认本机。

端口选项,后端启动的时候没有指定端口的话就是默认的6800.

用户名和密码选项是可选的,根据上面启动后端时候设置的填写。

最后的直接下载选项,就是填写相对路径。

比如你的 虚拟主机文件夹 是 /home/wwwroot/你的域名

然后你的 下载文件目录 是 /home/wwwroot/你的域名/download

那么你就填写 /download/ 。

最后点击下面的 保存连接设置 按钮,不出意外就会提示连接成功,当然有时候还是会提示失败,多刷新几次就好了。

这时候你就可以添加下载任务了。

以 使用链接下载 为例,下载我的 逗比 · 云 中的一个视频文件。

pause 选项是,提交下载任务后,是暂停还是直接下载,默认false就是提交后直接下载了。

dir 选项就是下载目录了。

然后点击 开始 提交下载任务。

下载完成后,如果你在 连接设置 中设置的直接下载的相对路径正确,那你直接点击下面的文件名就可以下载到本地了。

当然因为 html5的支持,一些视频文件可以在线播放。

所以就实现了,离线下载视频,并在线观看!

注意事项

这个前端面板并不会保存任何设置,所有设置都是 从后端的启动参数中获取的。

大部分IDC都是对版权文件敏感,特别是美国的VPS,当你下载BT和磁力链接文件的时候,很有可能会被封VPS。


所以请自行选择 版权文件不敏感的 瑞典 乌克兰 俄罗斯 罗马尼亚 地区的IDC的VPS.
--------------------------













aria2配置示例


其实面对man的存在,写什么总结完全没有必要,一切宝藏都在manual。不过反正不会有人会读就是了。那我就写一下吧
##基础
首先,aria2或者叫做aria2c,它是一个下载器,嗯。
常用的两种模式是直接下载,比如 aria2c "http://host/file.zip" 这样,当它完成后就退出了,就像wget(估计你们也不知道吧)那样。
另一种就是rpc server模式,特点就是,它启动之后什么都不干,然后等着从rpc接口添加任务,下载完也不退出,而是一直等着。对,就像迅雷干的那样,当然,它不会上传你硬盘上的数据。
因为第一种方式要每次都敲命令,除非像我是原生nix,没有命令行就没法用电脑,估计也没什么用,于是常用的就是第二种。一般启动命令是 aria2c --enable-rpc --rpc-listen-all=true --rpc-allow-origin-all -c -D 。但是,其实*这个命令是不好的!不要使用这种启动方式。
首先,用命令方式导致配置不方便修改保存,-D导致无法看到出错信息。
推荐启动方式是使用配置文件 $HOME/.aria2/aria2.conf 。嗯,我知道路由上这个地址是无法修改或者重启后会丢失的,那么你可以放到别的地方,然后 aria2c --conf-path=<PATH> 注意 <PATH> 填完整路径,因为鬼知道这个程序是从那个路径启动的。-D (用于后台执行, 这样ssh断开连接后程序不会退出) 只有在确认OK之后在启动脚本中使用。
以下方案都基于配置文件方式
##图形界面
aria2是没有图形界面的,已知相对好用的图形界面有:
请使用chrome,firefox等现代浏览器访问。这两个东西都可以直接使用,除了看英文不爽以外,有什么必要下载回来使用?(吐槽:难道你们就不觉得webui-aria2的title总是被压成好几行,诡异的配色(对,说的就是那个蓝色背景,深蓝颜色的 Use custom IP and port settings 按钮)不难看吗?)
这两个东西上的配置在重启后都会失效! 使用配置文件保存您的设置
图形界面基本都基于RPC模式,所以一定确定开启了RPC,IP端口可访问,并且在管理器中填写了正确的地址
##配置
请将所有配置置于配置文件中
只有在确认配置无误后再加上 -D 选项
请阅读出错信息!












1
2
3
4
5
6
7
8
#允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许非外部访问
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
#rpc-listen-port=6800

如果启动时出现 Initializing EpollEventPoll failed. 或相似错误, 在配置中加上 event-poll=select
使用token验证(建议使用,需要1.18.4以上版本,帐号密码方式将在后续版本中停用!)












1
2
# token验证
rpc-secret=secret

在YAAW中使用 http://token:secret@hostname:port/jsonrpc 的地址格式设置secret.
如果需要使用密码验证(需要1.15.2以上,1.18.6以下版本)












1
2
3
4
#用户名
rpc-user=username
#密码
rpc-passwd=passwd

在YAAW中使用 http://username:passwd@hostname:port/jsonrpc 的地址格式设置密码.
对于RPC模式来说, 界面和后端是分离的, 只要给后端设置密码即可. 前端认证什么的是毫无意义的.
如果你比较新潮, 在YAAW中也可以用 ws:// 为前缀,只用websocket连接aria2c, 如果你不知道websocket是什么. 那就算了.
###速度相关












1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
#断点续传
continue=true
#同服务器连接数
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=*

###进度保存相关
aria2c只有在正常退出时(ctrl-c), 突然断电是无法保存进度的. 在第一次使用的时候会出现会话文件不存在的错误, 手动创建一个空文件即可. 如果您编写的是自动启动脚本, 在启动aria2前加上 touch aria2.session 这句命令.












1
2
3
4
input-file=/some/where/aria2.session
save-session=/some/where/aria2.session
#定时保存会话,需要1.16.1之后的release版
#save-session-interval=60

###磁盘相关












1
2
3
4
5
6
7
8
9
#文件保存路径, 默认为当前启动位置
dir=/some/where
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc













1
2
3
4
5
6
7
8
9
10
11
12
#启用本地节点查找
bt-enable-lpd=true
#添加额外的tracker
#bt-tracker=<URI>,…
#单种子最大连接数
#bt-max-peers=55
#强制加密, 防迅雷必备
#bt-require-crypto=true
#当下载的文件是一个种子(以.torrent结尾)时, 自动下载BT
follow-torrent=true
#BT监听端口, 当端口屏蔽时使用
#listen-port=6881-6999

aria2亦可以用于PT下载, 下载的关键在于伪装












1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#不确定是否需要,为保险起见,need more test
enable-dht=false
bt-enable-lpd=false
enable-peer-exchange=false
#修改特征
user-agent=uTorrent/2210(25130)
peer-id-prefix=-UT2210-
#修改做种设置, 允许做种
seed-ratio=0
#保存会话
force-save=true
bt-hash-check-seed=true
bt-seed-unverified=true
bt-save-metadata=true
#定时保存会话,需要1.16.1之后的某个release版本(比如1.16.2)
#save-session-interval=60

##常见问题
###Internal server error
手动访问你的JSON-RPC地址 http://hostname:port/jsonrpc?jsoncallback=1 如果没有返回, 请确认aria2是否启动以及连通性. 如果aria2在路由器后或没有公网IP, 请做好端口映射。
------------
linux下的高速下载工具aria2 的用法

aria2下载工具特点:
1、支持http/https/ftp/bt协议
2、支持metalink3.0,metalink是一种可以将不同协议下载的同一文件集合到一起以达到最大下载稳定性和速度的东东。个人感觉这个似乎比迅雷支持不同网址下载同一文件似乎更高级些
3、支持分段下载和续传
4、支持通过http代理的ftp下载
5、可以作为守候进程运行
注:aria有gtk界面,但aria2只有命令行版本。
arch下安装:
pacman -S aria2
典型用法:
aria2c http://AAA.BBB.CCC/file.zip  普通下载
aria2c -s 2http://AAA.BBB.CCC/file.zip 开2个线程下载
aria2c http://AAA.BBB.CCC/file.zipftp://DDD.EEE.FFF/GGG/file.zip 从不同的地址下载同一文件
aria2c http://AAA.BBB.CCC/file.zipftp://DDD.EEE.FFF/GGG/file.zip  支持不同的协议下载同一文件
aria2c -otest.torrent http://AAA.BBB.CCC/file.torrent 下载BT种子
aria2c –max-upload-limit 40K -Tfile.torrent 设定BT最大上传速度
aria2chttp://AAA.BBB.CCC/file.metalink  从metalink下载文件
注:https下载依赖于安装gnutls或openssl
   bt下载依赖于安装gnutls+libgcrypt或openssl
   metalink下载依赖于安装libxml2
官方地址:http://aria2.sourceforge.net/
命令行下多线程下载工具:axel (prozilla下载工具因安全问题不推荐使用)
图形界面下载工具:d4x wxdownload
转自:http://floss.zoomquiet.org/data/20100901090942/

相关文档:
http://aria2.sourceforge.net/
http://aria2.sourceforge.net/manual/en/html/
http://aria2.sourceforge.net/manual/en/html/aria2c.html#rpc-interface
http://www.openboy.net/ubuntu-linux-download-tool-aria2.html
http://wiki.ubuntu.org.cn/Aria2
http://www.debugfs.com/?p=412

aria2是一款轻量型命令行下载工具,它提供了对多协议和多源地址的支持,目前支持的协议包括HTTP(S), FTP, BitTorrent (DHT, PEX, MSE/PE), and Metalink。
aria2可以从多个源地址,并使用多种协议进行下载,并尝试将下载带宽利用率最大化。它可以同时从HTTP(S)/FTP 和 BitTorrent下载一份数据,并且将其上传到bt集群中。通过Metalink的分块检查,aria2可以在下载过程中自动的进行数据校验。
虽然现在有诸如wget和curl等其他类似产品,但aria2具有两个独特的功能:(1)aria2可以从多个源下载文件(HTTP(S)/FTP/BitTorrent),(2)aria2可以并发的进行多个源地址的下载。这样用户将不必等待单个文件的下载完成,而且aria2会尽可能快的下载。
除aria2外,也有一些其他可以进行分片下载的工具,它们往往按照线程数分割文件,并行下载,换言之,它们不会对未完成的部分进行自适应性重新分片,当整个流程工作正常时,这个策略是可以的,但一旦存在一个线程运行非常慢,这样整个进程就需要等待该线程的执行。而aria2可以很好的处理这个情况,它可以将文件分割成1M大小的分片,当某个线程运行特别缓慢时,aria2可以使用更快的线程来替换。总之,根据作者的说法,aria2是非常智能和可靠的。
和最初的aria工具具有一个GTK+界面不同,aria2只提供了命令行接口,从而使得对资源的要求更小。通常它的物理内存消耗为4M(HTTP/FTP)到9M(BitTorrent),当进行bt下载且速度为2.8M/s时的cpu消耗约为6%

aria2使用举例
本篇描述的是aria2的使用示例,更详尽的描述请见:man page
当源地址存在诸如’&’或’*'等其他shell特殊字符时,请使用单引号或者双引号将uri包含起来。
在aria2的1.10.0版中,aria2对每台主机默认使用1个连接和20MB的分块大小,所以不论在-s参数中指定任何值,他都对一台主机只会建立一个连接,需要注意的一点是这个限制是针对单个主机的,当指定了多台主机时,它会对每台主机建立一个连接。如果要使用1.9.x版中的行为,则要使用-x16 -k1M。另见man页面的 –max-connection-per-server 和 –min-split-size。
aria2默认会在开始下载前预先分配文件空间以避免可能的文件碎片,但这会在部分PC上带来50%-90%的cpu消耗。当使用环境为比较新的文件系统,例如ext4,btrfs,xfs或者NTFS时,作者推荐使用–file-allocation=falloc,这种方式会在瞬间完成大文件(数G)的空间分配并且不会带来额外的性能下降。
如果你既没有使用cutting-edge文件系统,也没有使用linux,并且很在意系统性能,那么可以使用–file-allocation=none来关闭文件的预分配。

如果你忘记了这些参数的全名或者含义,把-h放在选项或者词的前面,比如aria2c -hcrypt,这样aria2就会搜索crypt相关的选项并把他的帮助打印出来,如果aria2发现使用了-h,它会在打印出帮助信息后停止运行。
基本用法
  • 下载一个文件
aria2c http://host/image.iso
在1.10.0版中,aria2对每个host使用一个连接,你可以使用–max-connection-per-server 或 -x来修改
  • 使用两个连接从一个源下载文件
    aria2c -x2 http://host/image.iso
    Ctrl+c可以中止当前的下载,在同样的目录运行同样的命令可以继续原来的下载,你设置可以修改uri,如果他们指向的是同一个文件的话。
  • 使用两个连接下载文件:
    aria2c -s2 http://host/image.iso http://mirror1/image.iso http://mirror2/image.iso
    注:如果命令中uri的数量多于-s的值,如本例所示,aria2将会首先使用前两个uri,将第3个uri作为候补,如果前两个有一个下载失败,就会启用第3个
  • 从http或ftp服务器下载:
    aria2c http://host1/file.zip ftp://host2/file.zip
  • 从任意源进行并行下载:
    aria2c -Z http://host/file1 file2.torrent file3.metalink
    如果仅仅指定本地磁盘上的torrent文件或者metalink,是不需要-Z选项的,如:
    aria2c file1.torrent file2.torrent
  • 从文件中读取目的文件,并行下载
    aria2c -ifiles.txt -j5
    注:-j参数指定了并发下载的数量,在输入文件中可以包含torrent文件和metelink
    注:输入文件中支持添加参数,详见后续的“输入文件”章节
  • 退出时保存出错/未完成的下载
    aria2c -ifiles.txt --save-session=out.txt
    当ctrl+c或者aria2自己退出时,所有的错误,未完成的下载信息会保存到out.txt中,但通过aria2.addTorrent 和 aria2.addMetalink XML-RPC方式增加的下载不会保存。
    后续可以使用该文件继续未完成的下载:
    aria2c -iout.txt

aria2对续传有很好的支持,只需要重新运行同样的命令即可,假如通过如下命令进行文件下载:
aria2c -d /tmp http://localhost/file.gz
当在aria2的下载过程中按下ctrl+c中止了服务运行后,会在/tmp目录下发现file.gz和file.gz.aria2两个文件
$ ls /tmp file.gz file.gz.aria2
其中file.gz.aria2保存这下载的进度信息,当aria2使用同样的命令重新运行时,它会读取这个文件并继续原来的下载。当然,aria2并不要求一定要是使用完全一直的参数:用户需要指定那些可以找到*.aria2文件的参数,所有-d选项是很重要的,而URI却不一定与上次相同,只要保证他们指向了同样的文件即可。这意味着你可以用某个URI开始下载,然后使用torrent文件进行续传。当然如果只存在*.aria2文件,续传就会被忽略掉。
为了能够成功进行续传,需要考虑到如下的一些情况
HTTP(S)/FTP/Metalink(without BitTorrent)协议下的续传
file size knownDDDOX
file existsOXOOO
ctrl existsOXOXX
file size matchO-X--
ACTIONRSABC

  • “size known” 表示文件大小在开始下载前是已知的,如metalink可以提供文件大小
  • “file size match”表示控制文件中的大小与远端(或metalink)的大小相同
  • ‘D’表示不关心
  • ACTION表示在上面的各种情况下aria2会采取的动作:
R
续传,但如果给定的URI不支持续传则会失败
S
重新开始下载
A
取消下载
B
如果–allow-overwrite=true则重新下载,否则取消
C
如果–allow-overwrite=true,则重新下载;如果本地文件大小与远程文件大小一致,则不再下载;如果–auto-file-renaming=true则重命名文件;其他情况取消下载

BitTorrent下的续传规则

file existsOOOX
ctrl existsOOXX
file size matchOX--
ACTIONRABS

R, A, B, S与刚才介绍的定义一致

BitTorrent相关下载
  • 通过远程BitTorrent文件下载
    aria2c http://site/file.torrent
  • 通过远程BitTorrent文件下载,但在内存中处理
    aria2c --follow-torrent=mem http://site/file.torrent
  • 通过本地torrent文件下载:
    aria2c -u40K /path/to/file.torrent
    注:-u, –max-upload-limit用来指定最大上传速度
    可以同时处理多个torrent文件
    aria2c /path/to/file1.torrent /path/to/file2.torrent
  • 通过BitTorrent Magnet URI下载:
    aria2c "magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C&dn=aria2"
    注:需要将magnet的地址用单引号或者双引号引起来,因为里面包含’&'字符。当使用magnet时,强烈建议打开dht选项,–enable-dht
    将metadata保存成.torrent文件
    aria2c --bt-save-metadata "magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C&dn=aria2"
    这个命令会将metadata信息保存在248d0a1cd08284299de78d5c1ed359bb46717d8c.torrent文件中
  • 自动调整peer节点数量
    当所有节点的整体下载速度低于某个值时,aria2可以临时增加节点数量来获取更快的下载速率
    aria2c --bt-request-peer-speed-limit=200K file.torrent
  • 开启DHT
    aria2c --enable-dht http://site/file.torrent
    注:在1.7.2版本后,dht选项是被默认打开的。当aria2只处理http/ftp下载时,不会打开dht选项。当第一个torrent开始下载时,aria2进行DHT功能的初始化,然后一直运行到aria2退出。
  • 开启ipv6的DHT
    aria2c --enable-dht6 --dht-listen-port=6881 --dht-listen-addr6=YOUR_GLOBAL_UNICAST_IPV6_ADDR --enable-async-dns6
    注:如果aria2在build时没有使用c-ares,则不需要–enable-async-dns6。aria2在ipv4和ipv6的dht中共享一些端口
  • 增加和删除tracker URI:
    下面这个例子将从file.torrent中移除所有的tracker的uri,然后使用”http://tracker1/announce” 和 “http://tracker2/announce”
    aria2c --bt-exclude-tracker="*" --bt-tracker="http://tracker1/announce,http://tracker2/announce" file.torrent
  • 加密
    在默认情况下,aria2可以接收加密/非加密的连接,并且会首先尝试加密握手,如果失败才会去使用传统的BitTorrent握手
    下面这个例子中,aria2将只通过加密的握手接受与建立连接。
    aria2c --bt-require-crypto=true http://site/file.torrent
    存在两种加密方式,头加密和全连接加密。如果两种都可以被peer提供,aria2将默认使用头加密方式。如果要使用全连接加密,可以使用:
    aria2c --bt-min-crypto-level=arc4 http://site/file.torrent
  • 打印torrent文件内容
    aria2c -S file.torrent
  • 通过序号选择指定文件下载:
    aria2c --select-file=1-4,8 -Tfile.torrent
    注:index信息可以通过-S来获得
  • 修改监听端口
    aria2c --listen-port=6881-6883 file.torrent
    注:请确保指定端口可以进行tcp的上行和下行通信
  • 指定aria2完成下载后的停止条件
    aria2c --seed-time=120 --seed-ratio=1.0 file.torrent
    注:本例中,aria2会在下载完成后120分钟,或seed ratio达到1.0时退出程序
  • 设置上传速度
    aria2c --max-upload-limit=100K file.torrent
  • Seeding已经下载完成的文件
    可以使用-V选择来播种下载完成的文件,它会首先对文件进行分片的hash校验
    Seeding already downloaded file
    如果可以确定下载文件的正确性,可以使用–bt-seed-unverified选项来跳过文件的校验环节
    aria2c --bt-seed-unverified -d/path/to/dir file.torrent
    还可以同时播种多个torrent文件
    aria2c --bt-seed-unverified -d/path/to/dir file1.torrent file2.torrent
  • 通过index指定文件名
    为了指定bt下载的文件名称,需要使用-S选线来查看torrent文件中的index信息,例如:
    idx|path/length
  • ===+======================
  •   1|dist/base-2.6.18.iso 
  •   |99.9MiB
  • ---+----------------------
  •   2|dist/driver-2.6.18.iso
  •    |169.0MiB
  • ---+----------------------
    下面的命令可以将dist/base-2.6.18.iso 保存为 /tmp/mydir/base.iso,同时将dist/driver-2.6.18.iso 保存成 /tmp/dir/driver.iso
    aria2c --dir=/tmp --index-out=1=mydir/base.iso --index-out=2=dir/driver.iso file.torrent
    注:当对http uri中的torrent文件使用–index-out是不成功,它只对本地的torrent文件有效。aria2也不会去记忆–index-out选项内容,在每次的继续下载或播种时都需要手工指明,而且如果没有该选项,它也不会给用户任何提醒,所以需要注意。
  • 为进行文件预览进行分片优先下载
    优先下载torrent中所有文件的前1MB
    aria2c --bt-prioritize-piece=head file.torrent
Metalink相关下载示例
  • 从远程metalink下载文件:
    aria2c http://host/file.metalink
  • 从远程metalink下载文件,但在内存中处理metalink:
    aria2c --follow-metalink=mem http://host/file.metalink
  • 通过本地metalink下载:
    aria2c -t10 --lowest-speed-limit=4000 file.metalink
  • 使用5个server下载
    aria2c -C5 file.metalink
    注:当使用metalink时,-s参数不再起作用,需要使用-C选项
  • 通过多个本地metalink文件进行下载:
    aria2c file1.metalink file2.metalink
  • 打印metalink的内容
    aria2c -S file.metalink
  • 通过序号下载指定文件
    aria2c --select-file=1-4,8 -Mfile.metalink
    注:可以通过-S选择来打印metalink文件的内容
  • 指定用户偏好从本地metalink下载文件
    aria2c --metalink-location=JP,US --metalink-version=1.1 --metalink-language=en-US file.metalink

使用代理服务器
  • 为所有协议(HTTP(S)/FTP)设定代理服务器
    aria2c --all-proxy='http://proxy:8080' http://host/file
    注:–all-proxy选项可以被特定的协议选项覆盖,如–http-proxy, –https-proxy 和 –ftp-proxy
  • 设置http代理
    aria2c --http-proxy='http://proxy:8080' http://host/file
  • 使用需要认证的代理
    aria2c --http-proxy='http://proxy:8080' --http-proxy-user='username' --http-proxy-passwd='password' http://host/file aria2c --http-proxy='http://username:password@proxy:8080' http://host/file
    注:username and password 需要进行%转码,如过username是’myid@domain’,则转码后的结果为:’myid@domain’。
    高级的http特性
  • 导入cookie
    导入Mozilla/Firefox(1.x/2.x) 和 Netscape格式的cookie
    aria2c --load-cookies=cookies.txt http://host/file
  • 导入Firefox3格式的cookie
    aria2c --load-cookies=cookies.sqlite http://host/file
  • 被浏览器或其他程序继续下载
    aria2c -c -s2 http://host/partiallydownloadedfile.zip
    其他高级特性
  • 下载速度限制
    aria2c --max-download-limit=100K http://host/file
  • 使用-V修复受损的下载
    aria2c -V file.metalink
    注:这个选项只适用于BitTorrent或者带有校验的metalink
  • 当下载速度下于某个特定值时放弃下载
    aria2c --lowest-speed-limit=10K file.metalink
    URI的参数化支持
  • 可以使用大括号来表达一组列表
    aria2c -P http://{host1,host2,host3}/file.iso
  • 可以使用[]来表示一个数字序列
    aria2c -Z -P http://host/image[000-100].png
    注:当所有的URI指向不同的文件时,需要使用-Z选项
  • 甚至可以指定步长
    aria2c -Z -P http://host/image[A-Z:2].png
  • 时间戳
    保留源文件时间戳
    aria2c -R http://host/file.iso
  • 下载完成后执行特定命令
    aria2c --on-download-complete=COMMAND http://example.org/file.iso
    另见:–on-download-error, –on-download-start 和 –on-download-stop,或者执行aria2c -h#hook
  • 写入/dev/null
    aria2c -d /dev -o null --allow-overwrite=true http://example.org/file
    –allow-overwrite=true是为了避免aria2重命名已有的/dev/null
    输入文件
    输入文件中可以包括一系列的URI地址,也可以针对同一个资源设置多个URI:不同的URI写在一行并使用tab分割。
    输入文件的每一行都被当作aria2的命令行参数,因此可以受到-Z和-P选项影响
    另外,选项也可以在每行URI的后面设置,更详尽的描述可以在man page的输入文件部分得到。这种选择的含义与命令行选项的含义一致,不过只适用在他们跟随的那个URI上。
    如下,一个uri文件名为uri.txt,其内容如下:
    http://server/file.iso http://mirror/file.iso dir=/iso_images out=file.img http://foo/bar
    如果aria2使用 -i uri.txt -d /tmp, 那么file.iso就会被保存为/iso_images/file.img,它的下载源为http://server/file.iso 和 http://mirror/file.iso ;而bar文件则是从http://foo/bar 下载并且保存为 /tmp/bar。
------------------------

Firefox 使用aria2作为下载工具 [本地/远程RPC版]


Firefox配合扩展Flashgot可以利用Aria2作为下载工具,只不过并不会跟Linux版一样打开xterm来运行aria2并显示下载进度,于是我实现来自动打开iTerm来显示进度。 
但是,可不可以以更“图形界面”的方式来查看/管理Aria2呢?当然 
aria2除了作为命令行下载工具,还可以以后台服务方式运行,并监听6800(默认),接收使用JSON或XML数据格式的POST请求来管理Aria2,你可以添加,删除,暂停任务,查看下载进度等种种功能,同全功能的下载工具无异。 

于是我们可以用这样的 Aria2 下载组合方式: 
Aria2服务 + 图形管理界面 + Firefox + Flashgot + 一个程序作为Flashgot的自定义下载工具可通过RPC给aria2添加任务 

1 Aria2服务: 
aria2可以通过homebrew安装: 
brew install aria2
或者去官网下载osx 的编译版本 
根据自己需要对~/.aria2/aria2.conf文件做配置(非必须) 
然后要让其以后台方式运行:
复制代码
aria2c --enable-rpc --rpc-listen-all -D
或者利用Launch Control(可免费无限试用)工具建立自动启动服务项(推荐): 
 
Linux下根据相应的发行版,也可以写一个服务启动项。 

2 图形管理界面 
 
我们可以利用webui-aria2项目来管理aria2,就像其说明介绍的一样,若过你的aria2已经启动后台服务了,那么下载webui-aria2后,直接打开里面的index.html, 就可以跟一个下载工具一样进行管理了。(可以保存个书签,方便打开) 
但是,如果到此为止的话,尽管在webui-aria2界面已经可以添加下载任务了,但是每次还要复制粘贴显然不方便,于是我们要继续接下来的配置 

3 使用工具通过Aria2 的RPC接口快速添加下载任务 
我分别用Python和Go写了这个工具,源码见帖子最后。 
 - Python版直接把代码保存成文件(例如aria2rpc),添加执行权,放到任意位置(例如$HOME/bin/aria2rpc) 
 - Go版可以把代码保存成文件自行编译,或者下载我编译的版本(密:cmom),也是添加执行权放到任意位置 

4 使用Firefox的Flashgot扩展实现添加任务 
我们为Flashgot添加一个自定义的下载工具,配置如下 
 
这样以后点击下载链接时,在下载保存提示窗口中,我们选择用aria2rpc下载,就会将任务添加给aria2, 
同时在webui-aria2界面立刻看到添加的下载任务 
 

5 后记 
使用这种组合的好处是更加“图形界面”化,其次可以方便的对任务进行管理, 
同时,对aria2 的RPC调用支持也由原来的 特定网盘(离线)+userscript的固定组合扩展到任意下载链接 
(当然,这个还没法自动添加磁力链接和BT文件,因为Flashgot不支持,所以也没有添加的意义,只能手动赋值粘贴了,不过貌似xThunder扩展支持,等以后再研究一下) 
而且,使用该方法,aria2并不一定要运行在本地机器, 你可以将aria2 服务运行在NAS,路由器,android电视盒,服务器上,然后远程添加任务(flashgot里需要多添加一个选项指定远程的IP地址, 
例如“ [--cookie COOKIE] [--dir FOLDER] [--output FNAME] --rpc http://123.123.101.101:6800/jsonrpc [URL]"这样配置, 
webui-aria2也要在Settings -> Connection Settings里设置一下地址) 

以上内容也同样适用于Linux系统 

6 代码 
Python 

复制代码
#!/usr/bin/env python2
  
import json, urllib2, sys
from argparse import ArgumentParser
  
parser = ArgumentParser()
parser.add_argument('-c', '--cookie', help='use cookies', type=str, 
                    default='', metavar='COOKIES', dest='cookies')
parser.add_argument('-o', '--output', help='output name', type=str, 
                    default='', metavar='NAME', dest='output')
parser.add_argument('-d', '--dir', help='dest dir', type=str, 
                    default='', metavar='DIR', dest='dir')
parser.add_argument('-r', '--rpc', help='aria2 rpc (http://localhost:6800/jsonroc)',
                    type=str, default='http://127.0.0.1:6800/jsonrpc',
                    metavar='URL', dest='rpc')
parser.add_argument('URIs', nargs='+', help='URIs', type=str, 
                    default='', metavar='URI')
opts = parser.parse_args()
  
jsondict = {'jsonrpc':'2.0', 'id':'qwer',
        'method':'aria2.addUri','params':[opts.URIs]}
  
aria2optsDefault={
        'continue'                  :'true',
        'max-connection-per-server' :'15',
        'split'                     :'15',
        'min-split-size'            :'10M'}
  
aria2opts = {}
aria2opts.update(aria2optsDefault)
  
if opts.output:
    aria2opts['out'] = opts.output
if opts.dir:
    aria2opts['dir'] = opts.dir
if opts.cookies:
    aria2opts['header'] = ['Cookie: {0}'.format(opts.cookies)]
  
jsondict['params'].append(aria2opts)
  
jsonreq = json.dumps(jsondict)
print jsonreq
urllib2.urlopen(opts.rpc, jsonreq)
Go: 

复制代码
package main
  
import "encoding/json"
import "fmt"
import "flag"
import "log"
import "os"
import "net/http"
import "bytes"
  
var rpc = flag.String("rpc", "http://127.0.0.1:6800/jsonrpc", "Aria2 rpc server address")
var cookie = flag.String("cookie", "", "Cookies")
var dir = flag.String("dir", "", "Saved dest directory")
var out = flag.String("out", "", "Saved output file name")
var split = flag.Int("split", 15, "One file N connections")
var server = flag.Int("server", 15, "One server N connections")
  
func main() {
    flag.Parse()
    URIs := flag.Args()
    if len(URIs) == 0 {
        flag.PrintDefaults()
        os.Exit(0)
    }
    params := makeParamsArry(URIs)
    jsonreq, err := makeJsonStruct(params)
    if err != nil {
        log.Fatal(err)
    }
    addTask(*rpc, jsonreq)
}
  
func makeParamsArry(uris []string) []interface{} {
    output := make([]interface{}, 0, 2)
    output = append(output, uris)
    opts := make(map[string]interface{}, 9)
    if *dir != "" {
        opts["dir"] = *dir
    }
    if *out != "" {
        opts["out"] = *out
    }
    if *cookie != "" {
        opts["header"] = []string{fmt.Sprintf("Cookie: %s", *cookie)}
    }
    opts["continue"] = "true"
    opts["max-connection-per-server"] = *server
    opts["split"] = *split
    opts["min-split-size"] = "5M"
    output = append(output, opts)
    return output
}
  
func makeJsonStruct(params []interface{}) ([]byte, error) {
    output := make(map[string]interface{}, 4)
    output["jsonrpc"] = "2.0"
    output["id"] = "qwer"
    output["method"] = "aria2.addUri"
    output["params"] = params
    return json.Marshal(output)
}
  
func addTask(url string, json []byte) {
    body := bytes.NewReader(json)
    resp, err := http.Post(*rpc, "text/plain", body)
    if err != nil {
        log.Fatal(err)
    }
    defer resp.Body.Close()
}

from  http://appwen.com/read.php?tid=3393
---------

aria2

aria2 是一个自由、开源、轻量级多协议和多源的命令行下载工具。它支持 HTTP/HTTPS、FTP、SFTP、 BitTorrent 和 Metalink 协议。
aria2 可以通过内建的 JSON-RPC 和 XML-RPC 接口来操纵。
aria2 下载文件的时候,自动验证数据块。它可以通过多个来源或者多个协议下载一个文件,并且会尝试利用你的最大下载带宽。
debian下安装
apt-get install aria2
下载多个文件,从列表中
aria2c -i down.txt
将要下载的URL,输入down.txt中,实现自动下载
-c      断点续传
-i      参数表示读取外部链接文件
-x      -x2表示增加的线程数
注意:当源地址存在诸如 &, * 等 shell 的特殊字符,请使用单引号或双引号把 URI 包含起来。
1、Download from WEB
# aria2c -c -s 5 http://example.org/mylinux.iso
-c : 断点续传
-s : 使用线程数

2、Download from 2 sources
# aria2c http://a/f.iso   ftp://b/f.iso

3、Download using 2 connections per host
 # aria2c -x2 http://a/f.iso

4、BitTorrent Magnet URI
# aria2c 'magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C'

5、Metalink
# aria2c http://example.org/mylinux.metalink

6、Download URIs found in text file
# aria2c -i uris.txt

7、BT
# aria2c /tmp/CentOS-6.3-i386-bin-DVD1to2.torrent
# aria2c http://mirrors.163.com/centos/6.6/isos/x86_64/CentOS-6.6-x86_64-minimal.torrent
-----------

Aria2整合KODExplorer,实现自建离线下载网盘


先安装宝塔
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

这里假设你的lnmp都已经安装好了

安装 Aria2
yum install wget -y&&wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh
启动:service aria2 start
停止:service aria2 stop
重启:service aria2 restart
查看状态:service aria2 status
配置文件:/root/.aria2/aria2.conf (配置文件包含中文注释,但是一些系统可能不支持显示中文)
默认密匙:doub.io
下载目录:/usr/local/caddy/www/aria2/Download

下载AriaNg前端面板
链接:https://github.com/mayswind/AriaNg/releases/download/0.2.0/aria-ng-0.2.0.zip

解压压缩包,将AriaNg面板的所有文件上传到你的网站根目录。

现在打开你的网站地址应该就能看到AriaNg的面板页面了。

这里要设置秘钥对接.

或者可以使用yaaw,这块相关的工具很多-
https://chrome.google.com/webstore/detail/yaaw-for-chrome/dennnbdlpgjgbcjfgaohdahloollfgoc

下载KODExplorer
链接:https://github.com/kalcaddle/KODExplorer/archive/master.zip
新建cloud文件夹,下载入其中.
--------

Aria2-全能型下载利器(上)Linux服务端安装


CloudTorrent下载种子和磁力链接都很不错,但是不支持其他协议有时候用起来就显得不是那么方便。特别是国内很多资源分享还是用的度盘,用度娘盘客户端拖,那个VIP,SVIP一套一套的,说白了就是限速恶心人。今天介绍的Aria2就能完美解决这些问题


Aria2官方的介绍:aria2 is a lightweight multi-protocol & multi-source command-line download utility. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.

简单来说就是:

轻量,资源占用小
多协议支持,常见的下载方式都支持了
支持通过面板远程管理
缺点也有不少:

安装麻烦,最新版只能编译安装,编译过程各种出问题-_-。我只会Ctrl+C+V,不会排错
只有下载功能,如果作为远程下载,还需要安装面板,以及HTTP服务器来提供下载功能
没找到一个有文件管理功能的面板,删文件什么的还得自己SSH进服务器删,或者再安装一个文件管理器
零、编译安装Aria2最新版(2017.08.17更新)
因为喜欢用锐速,所以我大多数系统都是Debian7。试着用Ubuntu16,Debian8编译安装Aria2,结果直接成功,看来编译失败是因为Debian7的原因。

root目录并下载解压aira2源码

cd && wget https://github.com/aria2/aria2/releases/download/release-1.32.0/aria2-1.32.0.tar.gz && tar xzvf aria2-1.32.0.tar.gz

安装依赖

apt-get install -y libcurl4-openssl-dev libevent-dev ca-certificates libssl-dev pkg-config build-essential intltool libgcrypt-dev libssl-dev libxml2-dev

依赖安装完后进入aria2源码目录开始编译

cd ~/aria2*
./configure
make

时间有点久,十分钟以上。如果编译失败又不想折腾的可以看下一章了

编译成功后,aria2c文件位于/root/aria2-1.32.0/src,将文件复制到/usr/local/bin就可以用命令启动了

cp /root/aria2-1.32.0/src/aria2c /usr/local/bin/

看一下版本

aria2c -v

显示如下,编译安装完成

aria2 version 1.32.0
Copyright (C) 2006, 2016 Tatsuhiro Tsujikawa
一、源安装Aria2
我的下载VPS安装的系统是Debian7,另外在Vultr的Debian8下通过。

大部分的系统源都提供了aria2的安装,除了Centos6。代码如下:

Centos7

yum install aria2

Debian/Ubuntu

apt-get install aria2

但是这种方法安装的aria2,大都版本比较老,像Debian7居然默认安装的是1.15,Debian8是1.18,而最新版已经是1.32。特别是1.18是个分水岭,采用token验证方式而不是用户名密码,据说是比较安全。

我试过按照官网教程编译安装1.32版,但是中间碰到无数问题,编译过程提示缺这个缺那个的,配置编译环境对我这种小白就太复杂了。

换个思路来想,Debian7的源里是1.15版,Debian8的版本是1.18,那Debian9默认是哪个版本呢?Vultr里装了个Debian9试了下,1.30版,可以接受了。

于是换回Debian7,把Debian7的默认源换成Debian9的,安装aria2后再切回来。

备份源文件
mv /etc/apt/sources.list /etc/apt/sources.list.bak

建立新的源文件
vi /etc/apt/sources.list

粘贴进
deb http://ftp.us.debian.org/debian/ stretch main non-free contrib
deb http://ftp.us.debian.org/debian/ stretch-proposed-updates main non-free contrib
deb-src http://ftp.us.debian.org/debian/ stretch main non-free contrib
deb-src http://ftp.us.debian.org/debian/ stretch-proposed-updates main non-free contrib
deb http://ftp.us.debian.org/debian/ stretch-backports main contrib non-free
deb-src http://ftp.us.debian.org/debian/ stretch-backports main contrib non-free
deb http://security.debian.org/ stretch/updates main
deb-src http://security.debian.org/ stretch/updates main

保存退出后更新源并安装aria2,安装过程中可能有选项提示,选同意(Yes,Accept之类)
apt-get update && apt-get install aria2 -y

安装好后切回原来的源
rm -rf /etc/apt/sources.list
mv /etc/apt/sources.list.bak /etc/apt/sources.list
apt-get update

这样就安装好1.30版的aria2了

刚开各种系统看了下。

aria2 v1.15  Debian7
aria2 v1.18  Debian8,Centos7,Ubuntu16
aria2 v1.30  Debian9,Ubuntu17
理论上Ubuntu也能用这种方法装1.30版的aria2。当然1.18版的已经支持token这个新特性,没有强迫症的朋友大部分系统其实直接apt/yum装就行了。
二、配置Aria2
Aria2默认是命令行模式,使用起来不是那么方便,推荐还是采用面板进行远程控制,所以需要对Aria2进行配置。

Aria2的默认目录是/root/.aria2/,创建该目录
mkdir /root/.aria2
创建进程记录文件
touch /root/.aria2/aria2.session
创建Log文件
touch /root/.aria2/aria2.log
创建并配置文件
vi /root/.aria2/aria2.conf

另外aria2下载BT会没有速度,需要把dht.dat文件放到/root/.aria2/目录并在配置里打开.

这样配置就完成了,运行命令
aria2c
aria2就会开始监听指定端口,可以用aria2配套的远程控制面板来进行下载.

三、开机启动
安装好后的Aria2默认是不会开机启动的,这里依旧是推荐用Supervisor管理进程.

在supervisor配置目录,新建并编辑配置文件
vi /etc/supervisor/conf.d/aria2.conf

粘贴入以下代码

[program:Aria2]
command=/usr/bin/aria2c
directory=/usr/bin/
autorestart=true
user=root

保存退出并重启supervisor:
service supervisor restart

写在最后
服务端的aria2就算安装完成了,使用的话需要用面板来完成操作,比较好用的面板有webui-aria2,AriaNG,YAAW,打开面板设置里设置好aria2服务器的地址以及Token,就能开始下载。目前主页提供了一个AriaNG的面板,在主菜单的梯子里。

Aria2后面计划写下面板安装,HyperApp的安装方法以及附带的文件管理程序的安装.
---------------

Aria2-全能型下载利器(下)AriaNG面板安装教程


Aria2本质上是一个命令行下载工具,使用起来非常不方便。所以需要用一个面板远程控制,转换成我们常用的图形化操作界面。

比较常用的面板有AriaNG,WebUI-Aria2,还有YAAW,安装好后用浏览器打开网址就能对Aria2进行操控。我挨着试了一遍之后选定了AriaNG,各方面都优于其他两种面板

 写在前面
AriaNG安装只需要有一个HTTP服务器,比如Nginx,Caddy,Apache等等,非常的小巧。不过我一直是采用LNMP,所以这里以LNMP为例。

官方项目地址:https://github.com/mayswind/AriaNg

当然其实懒癌患者完全可以不用自己安装面板。

官方提供了一个安装好的面板供大家使用,地址为http://ariang.mayswind.net/latest/#!/downloading

填入自己安装好的Aria2的Token信息就能使用,面板是基于cookie的,不用担心自己的连接信息被别人知道.

安装步骤
我们需要先创建一个虚拟机,LNMP下代码为
lnmp vhost add
跳出窗口输入域名(www.domain.com)和网站目录(/home/wwwroot/ariang),其他一路选n到结束。特别注意是面板队TLS支持好像不太好,推荐不使用https

进入刚创建的网站目录,下载软件包并解压

cd /home/wwwroot/ariang
wget https://github.com/mayswind/AriaNg/releases/download/0.2.0/aria-ng-0.2.0.zip
unzip aria-ng-0.2.0.zip

执行完代码后安装就算完成了,我们可以在浏览器中用网址www.domain.com打开。
AriaNG配置
打开后我们需要对AriaNG进行初步配置,要能正确连接VPS上的Aria2,需要在Aria2里面配置好下载目录(dir)、RPC监听端口(rpc-listen-port)、RPC令牌(rpc-secret)并启动。然后再设置里填入正确的配置信息。

配置信息填好后按提示重载页面,就能连接上Aria2进行下载。

另外在面板中还能对Aria2的一些参数按自己需求做临时修改,这不细说.
最后
AriaNG配合Aria2能够在VPS上很流畅的下载,但是缺点是不能对下载的文件进行管理。所以我们还需要一个目录列表或者私人网盘,对下载文件进行管理并提供Aria2离线下载好的文件的下载链接.
---------

使用aria2,自建离线下载服务器

百度云的离线下载也不总是好用,于是我就来我的服务器,采用 wget 或者 curl 下载,再使用 Nginx 给电脑提供下载,虽然速度受限于学校网速,只有百来 kb 甚至几十 kb,但至少是有速度了。。
以这个为思路,我就开始打算自己写一个类似 “百度云离线下载” 的功能给自己用。

寻找类似的项目及初步构思

第一步我是去网上寻找相关的项目,找到了:http://lyxz.gq/ 和 http://go.lyxz.gq/ 两个,输入链接后服务器进行缓存,然后我们再下载到本地。但是这服务器在境外,虽然可以翻墙获取资源,但取回本地的速度还是太慢。
鉴于 Linux 下 curl 太好用,我就没有必要自建轮子了。nodeJS 可以用 exec 执行系统命令,于是准备用 restify 模块做成一个 Restfull API,配合前端实现一个完整的可添加、暂停任务的完整离线下载服务。
等我把框架都搭好了,却发现有现成的。。。

Aria2 已经做好了我想做的一切

发现这东西是在我的路由器上,之前刷的 PandoraBox,内置了 Aria2,作为路由器的离线下载工具,之前没玩过,今天一玩,发现这东西竟然是前后端分离的,采用前端 web 界面作为客户端,这不正好满足我的需求吗。
aria2 is a utility for downloading files. The supported protocols are HTTP(S), FTP, SFTP, BitTorrent, and Metalink. aria2 can download a file from multiple sources/protocols and tries to utilize your maximum download bandwidth. It supports downloading a file from HTTP(S)/FTP/SFTP and BitTorrent at the same time, while the data downloaded from HTTP(S)/FTP/SFTP is uploaded to the BitTorrent swarm. Using Metalink’s chunk checksums, aria2 automatically validates chunks of data while downloading a file like BitTorrent.
The project page is located at https://aria2.github.io/.
Aria2 是一个类似于 curl 的命令行下载工具,更加强大,多线程、断点续传自然是支持,连 BT 下载也都可以。而这是 ziahamza 提供的 webUI 界面,也是非常的完善了。
----------------

一键安装Aria2+Yaaw+FileManager实现BT磁力下载,并在线观看

关于BT下载的教程已经很多了,特别是Aria2,看见小Z大佬写了个Aria2+Yaaw+FileManager一键包,比一般的Aria2面板配置要简单,挺方便的。

简介

Aria2是一个轻量级的多协议和多源命令行 下载工具。它支持HTTP/HTTPSFTPSFTPBitTorrentMetalinkaria2可以通过内置的JSON-RPCXML-RPC接口进行操作。
YAAW则是一个管理aria2WEB接口,两者结合轻松实现离线下载,在文章《CentOS安装aria2 + yaaw实现离线下载》分享过手动配置方法,为了简化流程,写了一个一键脚本,方便部署。
File Manager是一个基于GO的轻量级文件管理系统支持登录系统 角色系统、在线PDF、图片、视频浏览、上传下载、打包下载等功能。
Github地址:https://github.com/helloxz/aria2

功能

  • 支持多种Linux发行版
  • 一键安装Aria2+Caddy+YAAW+FileManager
  • 文件管理+离线下载+在线播放

安装

系统要求:CentOS 6/7 X64Debian 8+ X64Ubuntu 16+ X64,不支持32位系统。
运行以下命令:
#Centos系统
yum -y install wget unzip
#如果是Debian or Ubuntu系统
apt-get install -y wget unzip
#下面的命令通用,直接复制
wget https://github.com/helloxz/aria2/archive/master.zip
unzip master.zip && cd aria2-master && chmod u+x *.sh && ./install_aria2.sh
安装过程中,按要求输入用户名、密码及Aria2授权令牌。

配置YAAW

访问YAAW下载面板地址:http://IP:6080,,输入您刚刚设置的用户名、密码,就可以看到YAAW,再点击右上角Setting按钮,在JSON-RPC Path那里输入安装完后显示的RPC地址:http://token:abc123@IP:6800/jsonrpc,然后保存即可。

使用方法

点击YAAW面板的左上角Add添加任务并下载,再通过访问http://IP:6080/admin进入到FileManager文件管理器,进入Down文件夹,找到下载的东西,就可以在线查看或者观看了。注意,和Down同一个文件夹的文件请不要随意删除和修改,以免出现异常。

相关命令

#启动
/data/aria2/aria2.sh start
#停止
/data/aria2/aria2.sh stop
#重启
/data/aria2/aria2.sh restart
#Caddy server配置文件
/data/aria2/caddy.conf
#Aria2配置文件
/data/aria2/aria2.conf
#离线下载目录
/data/aria2/download
#日志目录
/data/aria2/aria2.log
/data/aria2/caddy.log

常见问题

#YAAW提示Error: Internal server error错误?
原因一:RPC地址错误,安装完成后会提示RPC地址,请确保填写正确。
原因二:输入netstat -apn|grep aria2c查看进程,如果没有任何信息,可以确定Aria2服务未启动,输入命令nohup aria2c --conf-path=/data/aria2/aria2.conf > /data/aria2/aria2.log 2>&1 &重新启动服务,如果依然不行,请查看错误日志/data/aria2/aria2.log
原因三:防火墙未放行6800端口,请自行放行下端口或关闭服务器防火墙。

#重启了服务器就打不开了?
脚本并未设置开机启动,重启服务器后请输入/data/aria2/aria2.sh start来运行服务。

#Debian/Ubuntu系统,提示安装成功,但是打不开?
Debian/Ubuntu并未自动放行端口,请放行6080/6800两个端口,或者直接关闭防火墙。
 
一键安装Aria2 + YAAW实现离线下载
 
 
aria2是一个轻量级的多协议和多源命令行 下载工具。它支持HTTP / HTTPS,FTP,SFTP, BitTorrent和Metalink。aria2可以通过内置的 JSON-RPC和XML-RPC接口进行操作。

YAAW则是一个管理aria2的WEB接口,两者结合轻松实现离线下载,在文章《CentOS安装aria2 + yaaw实现离线下载》分享过手动配置方法,为了简化流程,写了一个一键脚本,方便部署。
功能与特点

    支持多种不同Linux系统
    一键安装Aria2 + Caddy + YAAW
    使用FileFileManager作为文件管理器
    离线下载 + 视频在线播放

安装

直接复制下面的命令,一行一个,根据提示完成操作。


#Centos用户
yum -y install wget unzip
#如果是Debian or Ubuntu用户
apt-get install -y wget unzip
#下面的命令通用,直接复制
wget https://github.com/helloxz/aria2/archive/master.zip
unzip master.zip && cd aria2-master && chmod u+x *.sh && ./install_aria2.sh

请根据自己的系统输入选项进行安装,系统不要选错了,否则无法正常使用。比如我的系统是CentOS 7,选择1

根据提示进一步输入信息,注意:Aria2授权令牌建议用字母 + 数字组合,最好不要含有特殊符号,尤其是@之类的符号,以免出现不必要的问题。

安装完成后会看到如下信息,建议将信息保存到一个别人不易发现的地方,待会儿还需要使用。

开始使用

安装完成后输入http://IP:6080进行访问,输入您刚刚设置的用户名、密码,就可以看到YAAW啦。)

https://github.com/ziahamza/webui-aria2
-----------------
Aria2+AriaNg+Rclone+Google Drive离线下载安装教程。

目录

来源https://www.yuque.com/dubstep/gm3uwo/ghpddr

前言

随着Aria2的大火,Aria2+AriaNg+Rclone+Google Drive模式的离线下载更成为各大博主的主流下载方式,博主把优化过的教程发出来。本教程主要通过AriaNg+Nginx提供Web界面,Aria2下载资源,下载后通过Rclone把资源自动上传到GoogleDrive,以达到离线下载资源的目的。

注:网上的大部分教程有严重的BUG,下载到VPS的文件并不能自动删除,当下载到硬盘满了之后就无法再继续运行,而且会上传.Aria2后缀文件碎片,本教程经过二次修改后脚本采用移动方式上传到网盘。

环境要求

  • 系统支持:CentOS6+ / Debian6+ / Ubuntu14+
  • 一台KVM/OpenVZ架构的VPS
  • 谷歌网盘(其他网盘也可以,但需要Rclone支持)

推荐使用CentOS 7,本教程也以CentOS 7+谷歌无限团队盘来演示,若使用其他系统,以下某些命令会出现不兼容,请自行修改为对应系统的命令。

以下命令行建议一条一条输入

安装必要组件

首先更新系统并安装必要组件,此处为安装Nginx Web服务器

yum -y update
yum -y install epel-release
yum -y install wget git unzip gcc gcc-c++ openssl-devel nginx

安装Nginx

yum -y install nginx

启动nginx并设置开机自启动

systemctl start nginx #启动Nginx
systemctl enable nginx.service #设置开机启动Nginx

关闭防火墙并关闭开机启动

systemctl stop firewalld #关闭防火墙
systemctl disable firewalld.service #静止开机启动

安装Aria2

下载Aria2脚本并运行脚本。

cd ~ #回到根目录
wget -N https://git.io/aria2.sh && chmod +x aria2.sh && bash aria2.sh #下载Aria2脚本并运行脚本

sp200103_141148.png
运行脚本后会出现脚本操作菜单,选择并输入1回车开始安装
安装成功后得到以下Aria2配置信息,并用记事本记录
sp200103_142105.png

设置自动更新BT-Tracker,后台会定期更新trackerslist,一般情况下会加强BT下载效果(若不需要,请跳过次步骤)
再次执行菜单脚本

bash aria2.sh

输入12回车

安装AriaNg

AriaNg是一个前端(HTML+JS静态)控制面板,不需要和Aria2(后端/服务端)放在一个服务器或者设备中,你甚至可以只在服务器上面搭建Aria2后端,然后访问别人建好的AriaNg前端面板,也可以远程操作Aria2后端!
AriaNg官方演示页面:http://ariang.mayswind.net/latest

创建Ariang目录

mkdir -p /data/www/ariang #创建一个Ariang目录
cd /data/www/ariang #进入这个目录

下载并解压AriaNg文件,这段代码会自动检测并下载最新版本(代码较长,请复制完整)

Ver=$(wget --no-check-certificate -qO- https://api.github.com/repos/mayswind/AriaNg/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g;s/tag_name: //g') && echo ${Ver}

如果上面自动检测最新版本的代码返回空白或者错误,那么请访问下面网址来查看最新版本号
https://github.com/mayswind/AriaNg/releases/latest** **
例如手动获取的版本号是 1.1.4,那么手动执行命令: Ver=1.1.4,然后继续下面步骤即可
下载并解压AriaNg文件(代码较长,请复制完整)

wget -N --no-check-certificate "https://github.com/mayswind/AriaNg/releases/download/${Ver}/AriaNg-${Ver}.zip" && unzip AriaNg-${Ver}.zip && rm -rf AriaNg-${Ver}.zip

 

配置Nginx虚拟主机

创建虚拟主机配置文件

yum install vim #安装vim编辑器
cd /etc/nginx/conf.d 
touch ariang.conf #创建配置文件
vim ariang.conf #编辑配置文件

按键盘I键或Insert键进入修改模式,复制粘贴以下配置(复制粘贴时请仔细对照一下,有时候可能粘贴不全)

server {
    listen 80;
    server_name IP;
    location / {
        root   /data/www/ariang;
        index  index.html index.htm;
    }
}

把以上配置中server_name右边的IP改成你自己服务器的IP地址域名
保存并退出

:wq

现在可以使用nginx -t测试一下配置文件是否修改正确
更新nginx配置后,需要重启nginx

systemctl reload nginx

关闭SELINUX

vim /etc/selinux/config

按键盘I键或Insert键进入修改模式
找到SELINUX=enforcing这行,并用#注释掉,并在下一行加上SELINUX=disabled

#SELINUX=enforcing
SELINUX=disabled

保存并退出

:wq

重启系统

reboot

重启好后访问IP地址或域名即可看到AriaNg Web界面,并按照下图1-4步骤填写Aria2 RPC密钥(该密钥为前面安装Aria2时生成配置信息中的密码)sp200103_151356.png

安装Rclone并挂载GoogleDrive

安装Rclone

cd ~ #回到根目录

下载脚本并执行

curl https://rclone.org/install.sh | sudo bash

如果系统为OpenVZ系统,则使用以下脚本安装

curl https://rclone.org/install.sh | bash

配置Rclone

rclone config

[root@localhost ~]# rclone config
2020/01/03 02:41:17 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q>n
name> GD(该名称为Rclone挂载的名称可以随便填,但要记住,后面会用到)
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / 1Fichier
   \ "fichier"
2 / Alias for an existing remote
   \ "alias"
3 / Amazon Drive
   \ "amazon cloud drive"
4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
   \ "s3"
5 / Backblaze B2
   \ "b2"
6 / Box
   \ "box"
7 / Cache a remote
   \ "cache"
8 / Citrix Sharefile
   \ "sharefile"
9 / Dropbox
   \ "dropbox"
10 / Encrypt/Decrypt a remote
    \ "crypt"
11 / FTP Connection
    \ "ftp"
12 / Google Cloud Storage (this is not Google Drive)
    \ "google cloud storage"
13 / Google Drive
    \ "drive"

14 / Google Photos
    \ "google photos"
15 / Hubic
    \ "hubic"
16 / JottaCloud
    \ "jottacloud"
17 / Koofr
    \ "koofr"
18 / Local Disk
    \ "local"
19 / Mail.ru Cloud
    \ "mailru"
20 / Mega
    \ "mega"
21 / Microsoft Azure Blob Storage
    \ "azureblob"
22 / Microsoft OneDrive
    \ "onedrive"
23 / OpenDrive
    \ "opendrive"
24 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
    \ "swift"
25 / Pcloud
    \ "pcloud"
26 / Put.io
    \ "putio"
27 / QingCloud Object Storage
    \ "qingstor"
28 / SSH/SFTP Connection
    \ "sftp"
29 / Transparently chunk/split large files
    \ "chunker"
30 / Union merges the contents of several remotes
    \ "union"
31 / Webdav
    \ "webdav"
32 / Yandex Disk
    \ "yandex"
33 / http Connection
    \ "http"
34 / premiumize.me
    \ "premiumizeme"
Storage> 13(由于Rclone官方会更新,13并不一定是Google Drive,所以填入需要配置的网盘对应的序号即可)
See help for drive backend at: https://rclone.org/drive/

Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a string value. Press Enter for the default ("").
client_id>直接回车
Google Application Client Secret
Setting your own is recommended.
Enter a string value. Press Enter for the default ("").
client_secret>直接回车
Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / Full access all files, excluding Application Data Folder.
   \ "drive"
2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.
3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ "drive.file"
   / Allows read and write access to the Application Data folder.
4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"
scope>1
ID of the root folder
Leave blank normally.

Fill in to access "Computers" folders (see docs), or for rclone to use
a non root folder as its starting point.

Note that if this is blank, the first time rclone runs it will fill it
in with the ID of the root folder.

Enter a string value. Press Enter for the default ("").
root_folder_id>直接回车
Service Account Credentials JSON file path
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Enter a string value. Press Enter for the default ("").
service_account_file>直接回车
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n
Remote config
Use auto config?

Say Y if not sure
Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> n
If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=2024815644.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=eSMtROkBwv7nTw36Wg(****复制这段网址到浏览器中,最后会得到一段密钥并复制粘贴到下面****)
Log in and authorize rclone for access
Enter verification code> 4/vAGEnm1Vm2O7Ba************************
Configure this as a team drive?
y) Yes
n) No
y/n>y
Fetching team drive list...
Choose a number from below, or type in your own value
1 / dd
   \ "0AAk7UDUUk9PVA"
Enter a Team Drive ID> 1
----------------------------
[GD]
type = drive
scope = drive
token = {"access_token":"ya29.Il4B97vj2p_*****************","token_type":"Bearer","refresh_token":"1//0eINZ8S2xdmkPdzFk7-*","expiry":"2020-0103T03:44:19.994344966-05:00"} team_drive = 0AAk7UoZt
-----------------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:

Name                 Type
====                 ====
GD                     drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>q

修改上传脚本

修改我们的上传脚本中的Rclone名字和需要上传到网盘的文件夹

vim /root/.aria2/autoupload.sh #编辑上传脚本

按键盘I键或Insert键进入修改模式
修改上传脚本的内容,博主修改为Google Drive的文件夹Download,这个文件夹必须存在,如果不存在请先在Google Drive中自行创建,不然会出错

name='GD' #配置Rclone时的name
folder='/Download' #网盘里的文件夹,留空为网盘根目录

保存并退出

:wq

修改Aria2配置文件

打开配置文件

vim /root/.aria2/aria2.conf

按键盘I键或Insert键进入修改模式
修改为以下内容

  • 在on-download-complete=/root/.aria2/delete.aria2.sh前面加上#号
  • 把#on-download-complete=/root/.aria2/autoupload.sh前面#号去掉
# 下载完成后执行的命令
# 删除.aria2文件
#on-download-complete=/root/.aria2/delete.aria2.sh
# 调用 rclone 上传(move)到网盘
on-download-complete=/root/.aria2/autoupload.sh

保存并退出

:wq

然后重启Aria2

service aria2 restart

到此为止离线下载已经完美搞定,输入服务器网址或域名到AriaNg Web页面进行下载资源,下载完成后直接到Google Drive中进行查看。
QQ截图20200103231317.jpg

QQ截图20200104155732.jpg

总结

Aria2使用说明

  • 菜单:bash /root/aria2.sh
  • 启动:/etc/init.d/aria2 start
  • 停止:/etc/init.d/aria2 stop
  • 重启:/etc/init.d/aria2 restart
  • 查看状态:/etc/init.d/aria2 status
  • 配置文件:/root/.aria2/aria2.conf 
  • 下载目录:/root/Download

Nginx使用说明

  • 查看服务状态:systemctl status nginx
  • 启动服务:systemctl start nginx
  • 停止服务:systemctl stop nginx
  • 重新启动服务:systemctl restart nginx 或 systemctl reload nginx
  • 设置开机自动启动:systemctl enable nginx
  • 关闭开机自动启动:systemctl disable nginx
  • 查看所有已启动的服务:systemctl list-units --type=service
  • 默认配置文件:/etc/nginx/nginx.conf
  • AriaNg主机配置文件:/etc/nginx/conf.d/ariang.conf
  • 默认目录:/usr/share/nginx/html
  • 访问日志:/var/log/nginx/access.log
  • 错误日志:/var/log/nginx/error.log

from https://github.com/dubstep1212/Aria2Download 

------------------------------------------

下载工具aria2的Web客户端Glutton

Glutton是国人基于流行的开源下载工具aria2编写的Web 客户端,  使用了 Vue.js + webpack + vue-loader + ES2015 的架构。适配移动端浏览器,支持拖拽上传种子创建 BT 任务,任务按创建时间来排列。 此外还整合了相关字幕下载功能,先去伪射手网(http://assrt.net/usercp.php)注册,并获取免费 API 密钥, 然后在每一条下载后面,都可以看到一个 S 图标按钮,点击就能自动搜索对应字幕,并且还可以选择不同字幕,并且自动添加进 aria2 中进行下载。

试用:http://nemoalex.github.io/glutton/

github.com/NemoAlex/glutton

-----------


安装Aria2下载工具

因为aria2本身是一款命令行下载工具,安装搭建需要花费不少功夫,对于一些小白同学来说绝对是个麻烦事。所以小帮特意给大家找了一款一键搭建启动aria的小工具,让你轻松松在电脑端使用aria2。

直接利用”Aria2 Win通用启动器“这款工具来进行一键搭建启动Aria2。打开Aria2启动器,先更换自己的下载路径,然后给Aria2安装一个webUI界面(因为aria2本身是命令行下载工具如果不给打安装操作界面就只能用命令来操作)。
 
安装本地webUI之后,你的桌面会出现两个快捷图标,这是两个不同的操作控制台,本教程使用:AriaNgUI。然后点击启动按钮。(每次使用都需要启动这个工具,可以设置开机自启)

打开AriaNgUI这个图标(本身是一个HTML文件),会进入网页版的AriaNg控制台。
 
我们需要修改一些AriaNg的设置。点击AriaNg设置,选择RPC配置,然后按照下图的内容将以下信息填入:


 

修改好之后点击重新加载页面。
 
重新加载页面之后,Aria2的状态会显示”已连接“,这说明我们对Aria2的搭建启动就完成了。

点击”使用Aria2下载”,会直接进入Aria2 RPC 配置界面,将以下配置信息填写进去即可:



下载路径和密钥和自己最开始设置的保持一致即可。点击确定按钮,我们就能在AriaNg的下载控制台界面看到正在下载的信息了。

-----------------------------------

Aria2

破解百度网盘下载限速,不少工具内核其实是用的就是Aria2。

Aria2 是一个轻量级多协议和多源 命令行 下载实用工具。它支持 HTTP / HTTPS, FTP, SFTP, bt 和 Metalink。Aria2 没有 GUI 图形界面,只有粗糙的命令行界面。这也许是Aria2不受欢迎或者不被大多数知道的原因吧。

只有命令行,虽然有像YAAW / Aria2 WebUI 的网页版 Aria2 操作界面,但还是需要自己研究配置,对于新手来说有一些难度。我们当然最喜欢的还是方便快捷的gui软件版了,Persepolis Download Manager就是一款Aria2的图形gui程序

Aria2图形界面

Persepolis Download Manager封装了Aria2,无需你做任何配置,你就像用迅雷、IDM 等下载工具一样的使用即可,而不必再对着命令行发愁。

(简单介绍一下aria2

Aria2 是一个轻量级多协议和多源 命令行 下载实用工具。它支持 HTTP / HTTPS, FTP, SFTP, bt 和 Metalink。通过内置 Aria2 可以操作 json – rpc 和 xml – rpc。对,Aria2 没有 GUI 图形界面,只有粗糙的命令行界面!但这也正是 Aria2 之轻快好省所在。

轻:绿色便携,不写注册表,无 GUI,占用小,全速下载时占用大约为 10M。
快:下载速度蛮不错,很多时候都能达到满速。
好:多协议支持,多脚本/扩展,多平台,完全免费,可定制型极强
省:不仅占用小,存储空间也小,不到 5M。)

-------------------------------------
 免费 “神器级” 下载工具,直接接管浏览器下载:Aria2 Explorer   

轻量高效的开源下载工具 Aria2 因仅仅是一个内核(命令行),对于大多数用户来说直接使用比较困难,所以目前就有各种 GUI 界面版本。但是大多数基于 Aria2 的下载工具很多都没有浏览器扩展支持,也就是复制下载地址后,还得手动打开下载工具进行下载。

而今天推荐的这款「Aria2 Explorer」是基于 Aria2 的浏览器扩展插件,安装好可以搭配 Aria2 下载工具实现自动识别下载任务,方便用户对 Aria2 进行操作和管理。

使用说明

项目作者提供了 Aria2 下载工具的后台管理运行「Aria2 Manager」和浏览器的扩展「Aria2 Explorer」插件。

👉 1.首先下载你需要的「Aria2 Manager」版本,这里推荐用完全版,下载后解压即可直接使用。

版本说明:

对于重度用户:推荐下载增强版(付费),功能更多,体验更好,一键安装,自动更新,省时省力。
对于小白用户:如果你只安装了 Aria2 Explorer,请下载 Setup 安装包,完成安裝后即可使用所有 Aria2 下载功能。
对于初级用户:请下载完全版,其中已经包含 aria2c.exe 最新版和相关配置文件。只需解压并运行 Aria2Manager.exe,即可使用默认 RPC 设置通过扩展下载网络资源。
对于DIY用户:请下载独立版,将 Aria2Manager.exe 解压到 aria2c.exe 所在的目录,并将你的配置文件重命名为 aria2.conf。

👉 2.安装「Aria2 Explorer」浏览器扩展插件,目前支持 Chrome、Edge 和其它基于 Chromium 的浏览器。

安装好后可以进入扩展配置页面设置功能,包括右键菜单、下载拦截设置,可设置拦截设定的 ≥ 文件大小、拦截磁力链接、监测 Aria2 下载状态、扩展名白名单 / 黑名单;网址白名单 / 黑名单等。

设置完毕后,现在点击网页的下载链接就会自动识别到 Aria2 里面进行下载了。下载协议支持常见的 HTTP / FTP / BT / 磁力 / BT / Magnet link,你也可以对每个协议进行功能设置,例如可以给 BT 设置 Tracker 服务器地址。

功能特色

自动拦截浏览器下载任务
根据预设的 URL 模式 (Pattern) 自动选择不同的 Aria2 RPC 服务端和下载目录
内置 Aria2 前端:AriaNG 增强版,多种呈现方式:弹窗,新标签,新窗口
所有配置云端同步
中英双语支持
Aria2下载状态监测
右键菜单批量导出网页资源(图片·音频·视频·磁力链接)
接受来自其他扩展的下载请求
选项配置页面快捷键(保存:Alt+S 重置:Alt+R 下载:Alt+J 上传:Alt+U)
支持无法连接 Aria2 时,直接通过浏览器下载网络链接

下载地址
项目地址:
https://github.com/alexhua/Aria2-Manager
Aria2 Manager(管理):
https://www.123pan.com/s/c8zA-zTVN3.html
Aria2 Explorer(扩展):
https://microsoftedge.microsoft.com/addons/detail/jjfgljkjddpcpfapejfkelkbjbehagbh
----------- 

Aria2c web实现 基于WebSocket

Aria2是一个非常成熟的下载程序,基于命令行调用。它也提供上RPC、WebSocket的调用方式。下面我会通过前端WebSocket调用的方式实现一个简单的下载功能

1

  1. 首先下载对应的Aria2可执行文件,并且命令行启动。aria2c默认会监听本地6800端口
1
aria2c --enable-rpc --rpc-listen-all=true --rpc-allow-origin-all
  1. 前端建立WebSocket连接,地址是:ws://localhost:6800/jsonrpc,具体代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>aria2</title>
</head>
<body>
<div style="margin-bottom: 32px;">
<input type="text" id="ipt"> 下载进度:<span id="progress"></span> 下载速度:<span id="speed"></span>
</div>
<button id="start">开始下载</button>
<button id="pause">暂停下载</button>
<button id="unpause">恢复下载</button>
<script>
// Create WebSocket connection.
const socket = new WebSocket('ws://localhost:6800/jsonrpc');

// Connection opened
socket.addEventListener('open', function (event) {
socket.send('Hello Server!');
console.log(event)
});

let timer = {}
let gid = ''
// Listen for messages
socket.addEventListener('message', function (event) {
const data = JSON.parse(event.data)
console.log('Message from server ', event.data)
if (data.id === 'tellStatus') {
const progress = parseInt(Number(data.result.completedLength) / Number(data.result.totalLength) * 100) + '%'
const speed = parseInt(Number(data.result.downloadSpeed) / 1000) + ' kb/s'
document.querySelector('#progress').innerHTML = progress
document.querySelector('#speed').innerHTML = speed
}
if (data.method === 'aria2.onDownloadStart') {
gid = data.params[0].gid
const jsonData = {
'jsonrpc':'2.0',
'id':'tellStatus',
'method':'aria2.tellStatus',
'params': [gid]
}
if (!timer[gid]) {
timer[gid] = setInterval(() => {
socket.send(JSON.stringify(jsonData))
console.log('发送 tellStatus')
}, 1000)
}
}
if (data.method === 'aria2.onDownloadComplete') {
gid = data.params[0].gid
clearInterval(timer[gid])
delete timer[gid]
document.querySelector('#progress').innerHTML = '100%'
document.querySelector('#speed').innerHTML = '0 kb/s'
}
});
const startBtn = document.querySelector('#start')
startBtn.addEventListener('click', function () {
const jsonData = {
'jsonrpc':'2.0',
'id':'qwer',
'method':'aria2.addUri',
'params': [[ document.querySelector('#ipt').value ]]
}
socket.send(JSON.stringify(jsonData))
})
const pauseBtn = document.querySelector('#pause')
const unpauseBtn = document.querySelector('#unpause')
pauseBtn.addEventListener('click', function () {
const jsonData = {
'jsonrpc':'2.0',
'id':'qwer',
'method':'aria2.pause',
'params': [gid]
}
socket.send(JSON.stringify(jsonData))
})
unpauseBtn.addEventListener('click', function () {
const jsonData = {
'jsonrpc':'2.0',
'id':'qwer',
'method':'aria2.unpause',
'params': [gid]
}
socket.send(JSON.stringify(jsonData))
})
</script>
</body>
</html>
  1. Aria2官方文档:https://aria2.github.io/manual/en/html/index.html

------------------------

相关帖子:
http://briteming.blogspot.com/2017/11/aria2-ultra-fast-download-utility.html
http://briteming.blogspot.com/2016/07/yaaw.html
http://briteming.blogspot.com/2012/10/ubuntuaria2.html