Win平台下Aria2的搭建实例
Aria是一款非常好的开源下载工具,有了它,linux上即使没有迅雷类工具可用也不可惜,虽然目前仅支持HTTP\SFTP\BT下载,还没有支持em下载,但其轻量级的架构深得我这种不喜欢臃肿下载软件的人。本次为了替代用了好久的迅雷极速版(已淘汰版本),为了不被各种广告侵袭,在Windows 10上也搭了一个Aria2的服务。本服务构建由Aria2官方编译的可执行程序以及国人便携的web端组成,在文末我会提供相关原文链接。文中的大部分下载链接均需要访问github站点,如没有梯子访问困难,可下载本文末本站提供的集成包,开箱即用。
首先,前往aria2官方发布站点下载最新版本的源码或已编译版本,在download菜单下找到Download version <当前版本号>,点击进入下载,按自己的电脑选择下载win-32bit或win-64bit的zip压缩包,如果你不确定你的windows版本,请下载win-32bit的zip压缩包。下载后打开压缩包,释放取出aria2c.exe,本例中为了方便理解,我们将它放在D盘下新建的文件夹aria2中。
D:\aria2
此时,我们需要先准备一份aria2的配置文件,程序启动后需要读取配置文件的内容,下面提供一个示例文件,可直接使用
# 更详细配置介绍请访问 https://aria2.github.io/manual/en/html/ # 全局代理 #all-proxy = http://127.0.0.1:1080/pac?auth= # 代理请求方式,可用值 get, tunnel ,HTTPS 下载时一直使用 tunnel #proxy-method = tunnel # 不代理的主机名,域名和IP #no-proxy = <DOMAINS> # rpc # 用户名 #rpc-user = user # 密码 #rpc-passwd = passwd # token 验证 #rpc-secret = secretpassword # 允许rpc ,默认 false enable-rpc = true # 允许所有来源, web 界面跨域权限需要,默认 false rpc-allow-origin-all = true # 外部访问,默认 false, false 时只监听本地端口 rpc-listen-all = true # https 加密,启用之后要设置公钥,私钥的文件路径 #rpc-secure = true # 加密设置公钥 #rpc-certificate = example.crt # 加密设置私钥 #rpc-private-key = example.key # rpc 端口,默认 6800 #rpc-listen-port = 6800 # 下载 dir=D:\download # 关闭 ipv6 ,默认 false #disable-ipv6 = true # 最大同时下载数, 默认 5 #max-concurrent-downloads = 3 # 断点续传,只在 HTTP(S) 和 FTP 中生效 continue = true # HTTP 返回 503 时重试下载的秒数,0 为不重试下载,默认为 0 retry-wait = 10 # 最大重试次数,0 为无限制,默认为 5 max-tries = 0 #服务器返回文件找不到最大重试次数, 0 为一直重试,默认为 0 max-file-not-found = 10 # 同服务器最大连接数,默认 1(好像不能使用过大的值,窝用20无法打开aria2) max-connection-per-server = 16 # 最小文件分段大小, 默认 20M # 如果文件大小 < (min-split-size * split)则不分段 min-split-size = 20M # 单文件最大线程数, 默认 5 split = 8 # 使用服务器文件时间,默认 false remote-time = true # 使用 UTF-8 编码,默认 false content-disposition-default-utf8 = true # 如果相同的文件已存在重命名文件,默认 true #auto-file-renaming = # 总是重命名文件,默认 true #always-resume = # 最大能重命名几个文件,和 always-resume 有关 # 下载多个度盘打包文件的时候会重命名为 pack.zip, pack.1.zip... 这样,默认 0 #max-resume-failure-tries = 5 # referer ,这里由下载管理器调用 #如果为 * ,下载 URI 也可以是 referer ,这在开启 parameterized-uri 时很有用 #referer = <REFERER> # 参数化 URI , balabala 不懂,默认 false #Enable parameterized URI support. You can specify set of parts: http://{sv1,sv2,sv3}/foo.iso. Also you can specify numeric sequences with step counter: http://host/image[000-100:2].img. A step counter can be omitted. If all URIs do not point to the same file, such as the second example above, -Z option is required. Default: false #parameterized-uri = true # 全局下载速度限制 # 0 为不受限制,默认为 0 ,大小为 bytes/sec ,也可以使用 K 或 M ,下同 #max-overall-download-limit = 0 # 单文件下载速度限制 #max-download-limit = 0 # 全局上传速度限制 #max-overall-upload-limit = 100K # 单文件上传速度限制 #max-upload-limit = 0 # 断开速度过慢的连接,在 BT 中不生效 #lowest-speed-limit = 0 # 文件保存路径,这里由下载管理器调用,默认为 Aria2 所在文件夹 #dir = # 文件缓存,缓存到内存里,大小使用 K 或 M ,为 0 时关闭,默认 16M #disk-cache = 64M # 将文件映射到内存,如果文件没有预分配不能工作,默认 false # mmap 需要系统和内核支持 #enable-mmap = true # 映射内存文件大小最大限制 # 文件大小由一次下载中的全部文件决定,如果总大小大于设定值则禁用mmap # 默认9223372036854775807 (单位有点迷) #max-mmap-limit = 1280M # 文件预分配 # 可用值 none, prealloc, trunc, falloc ,默认 prealloc # 当使用新型文件系统,如 ext4, btrfs, xfs 或者 NTFS 文件系统时,推荐使用 falloc ,这种方式会在瞬间完成大文件(数 GB )的空间分配 # 不要在传统文件系统,如 ext3, FAT32 上使用 falloc ,因为这和使用 prealloc 所需的时间大同 # falloc 和 trunc 需要文件系统和内核支持 # 警告:使用 trunc 灰常快,但它其实是在文件系统中设置文件长度元数据,并不是分配磁盘空间,所以无法避免磁盘碎片化 # 简单来说开启文件预分配后,如果支持使用 falloc 就使用 falloc ,不支持就用 prealloc ,固态硬盘可以使用 trunc # 开启后使用 32 位 aria2 下载大于 4G 的文件, aria2 会被系统杀掉 (骚年你还在用 32 位系统?) # 使用 falloc 时,如果有警告[WARN] Gaining privilege SeManageVolumePrivilege failed. ,需要使用管理员权限打开 file-allocation = falloc # 大小小于这个值的文件不进行文件预分配,默认 5M no-file-allocation-limit = 4096K # 证书校验,默认 true #check-certificate = false # 证书效验文件 #ca-certificate = <FILE> # 任务记录 input-file = aria2.session # 保存错误/未完成的任务记录 # 会在 dir 下生成同名 .aria2 文件,当 force-save = true 时不删除, force-save = false 时删除 save-session = aria2.session # 每隔几秒保存,默认 0 , 0 为 aria2 退出时保存,不管设置为多少 aria2 退出时都会保存 session save-session-interval = 60 # 即使任务被移除或完成了也保存 session (使用 save-session 值) ,对 BT 有用,默认 false # 会检查 session ,打开后如果按照本配置打开 aria2 下载下来的文件如果没有删除元数据会再给你下载下来 # 简单来说: false 不保存完成记录,true 保存完成记录 #force-save = true #强迫症专用, force-save = true 时删除 dir 下同名.aria2 # .bat windows 用, .sh linux 用,需要在 bat/sh 里自己修改 dir #on-download-complete = del.bat #on-bt-download-complete = del_bt.bat #on-download-complete = rm.sh #on-bt-download-complete = rm_bt.bat # 日志 # 级别,可用值 debug, info, notice, warn, error ,默认 debug log-level = warn # 位置 log = aria2.log # 轮询事件 # 可用值 epoll, kqueue, port, poll, select ,默认值与系统有关 # epoll, kqueue, port and poll 需要系统支持 # epoll 支持最新的 Linux , kqueue 支持最新的 BSD 系(包括 MAC OS X), port 支持 Open Solaris #event-poll = # BitTorrent # 启用本地节点查找,默认 false,如果种子设置为 private , aria2 不会使用此选项 bt-enable-lpd = true # 当值为 true| mem 时,如果下载的文件是一个种子(以.torrent结尾)时, 就自动下载 # 当值为 mem 时,种子不会写入磁盘,但会一直在内存中 # 当值为 false 时不自动下载 # 默认 true #follow-torrent = flase # 监听端口,默认6881-6999 # , 为分隔不同端口, - 为两个值中的所有端口,如:'6881-6889,6999', '6881,6885' #listen-port = <PORT>... # 强制加密,开启相当于 bt-require-crypto = true 和 bt-min-crypto-level = arc4 ,默认 false bt-force-encryption = true # 要求加密,默认 false #bt-require-crypto = true # 最低加密级别,可用值 plain, arc4 ,默认 plain #bt-min-crypto-level = arc4 # 最大打开文件数量,默认 100 #bt-max-open-files = 100 # 单种子最大连接数,默认 55 ,0 为不限制 #bt-max-peers = 55 # 如果单种子的速度低于此值, aria2 会暂时增加种子的连接数量来增加下载速度,默认 50K #bt-request-peer-speed-limit = 50K #添加额外的 tracker #bt-tracker = <URI>[,...] #要排除的 tracker,可以使用值 '*' (不要引号),当使用 * 时会移除所有通告的的 tracker #bt-exclude-tracker = <URI>[,...] # tracker 重连超时时间(单位为秒),默认 60 #bt-tracker-connect-timeout = 60 #tracker 超时时间(单位为秒),默认 60 #bt-tracker-timeout = 60 # DHT # 打开 ipv4 DHT, 默认 true # 当种子文件设置了 private ,即使为 true ,aria2也不会从 DHT 中下载, ipv6 也一样 #enable-dht = true # 打开 ipv6 DHT,默认 true #enable-dht6 = true # BT 和 DHT 使用的外部 IP ,可能会发送到BitTorrent tracker # 对于DHT,此选项应该被设置成要报告的本地节点,这对于在 private 网络中使用 DHT 很重要 # For DHT, this option should be set to report that local node is downloading a particular torrent. This is critical to use DHT in a private network #bt-external-ip = <IPADDRESS> # DHT和 UDP tracker监听端口,默认 6881-6999 #dht-listen-port = <PORT>... # 启用种子交换,默认 true ,如果种子设置为 private ,即使为 true 也不会启用这个特性 #enable-peer-exchange = true # 做种流量比例, 0.0 时一直做种,默认 1.0 #seed-ratio = 0.0 # 改变 IPv4 DHT 路由表保存路径,默认 $HOME/.aria2/dht.dat dht-file-path = dht.dat # 改变 IPv6 DHT 路由表保存路径,默认 $HOME/.aria2/dht6.dat dht-file-path6 = dht6.dat # 修改 UA,默认 aria2/$VERSION # 只在 HTTP(S) 中有效 #user-agent = <USER_AGENT> # peer-id,默认 A2-$MAJOR-$MINOR-$PATCH- ,比如在 aria2 version 1.18.8 里为 A2-1-18-8- # 在 BT 中只有前20个字符长度生效,超出的将被丢弃,不足则随机填充至20个字符 #peer-id-prefix = <PEER_ID_PREFIX> # 保存元数据至 .torrent 文件,默认 false #bt-save-metadata = true # 从以前的种子下载不用验证散列,默认 false # Seed previously downloaded files without verifying piece hashes #bt-seed-unverified = true # 种子哈希效验,开启时使用 check-integrity 选项和文件完成散列检查后才会继续,如果你想要下到损坏的文件那就关了吧。默认 true # If true is given, after hash check using --check-integrity option and file is complete, continue to seed file. If you want to check file and download it only when it is damaged or incomplete, set this option to false. This option has effect only on BitTorrent download. Default: true #bt-hash-check-seed = true # 通过验证散列或整个文件的哈希值来检查文件完整性,只在 BT 中生效,HTTP(S)/FTP 使用 checksum 选项,默认 false #check-integrity = false
其中,需要注意并了解的常规配置条目如下:
dir=D:\download 定义了默认下载目录,如需更改请自行按需求,也可以是\\smbserverip\down,也可以是aria2down(代表d:\aria2\aria2down) #rpc-secret = 这个条目用于定义RPC连接协商密钥,默认为注释状态即无密钥,如使用的web端可选填写,建议使用密钥已增加安全性 min-split-size = 20M 最小文件分块值,请按需调整,20M适合经常下载大于512m单个文件,如需下载小体积文件,但下载源需要多线连接时,建议将此参数改为1m甚至更小 file-allocation = falloc windows用户,NTFS磁盘分区请选择此项;MAC用户请注释该项
其他条目没有特别说明,请参考配置示例中的注释,请将配置文件保存为aria2.conf,放在程序目录下。
打开windows命令行程序,切换到aria2c.exe所在的目录,使用如下命令运行:
aria2c.exe --conf=aria2.conf
此时CMD窗口会出现aria2开始监听端口的信息,如你的系统有防火墙,请允许aria2建立与公网的连接
[NOTICE] IPv4 RPC: listening on TCP port 6800 [NOTICE] IPv6 RPC: listening on TCP port 6800 disable-ipv6 = true时,本条不出现
aria2会在其exe所在的根目录下创建文件aria2.session和aria2.log用于保存下载线程信息以及运行日志,如因文件夹权限文件导致未自动建立的,请手动建立文件.扩展名
打开浏览器,访问http://aria2c.com/ 这是一个aria2的web ui站点,如你的aria2配置正确,且防火墙允许aria2c.exe访问公网的话,在这个站点的右上角你会看到你的aria2版本号
到这一步为止,你已可使用aria2下载它所能支持的下载链接。当然,你也许认为公网上的这个aria2 web ui让你有隐私上的顾虑,那我们可以自建一个nginx web服务来搭建私有化的aria2 web ui。
首先,你需要一个nginx
http://nginx.org/download/nginx-1.15.0.zip
下载后解压,本例中将nginx放在D:\nginx-1.15.0目录下。打开windows命令行程序,切换到nginx目录下
d: cd "nginx-1.15.0" start nginx
即可已默认最小化配置运行nginx,若你的windows防火墙提示nginx需要网络权限,请允许。此时在浏览器地址栏输入localhost并回车,能看到nginx默认的欢迎页面。nginx默认最小化配置的站点目录在html子目录下,下载下面的aria2 web ui页面程序,解压后放到html网站根目录下
https://github.com/ziahamza/webui-aria2/archive/master.zip
刷新浏览器localhost站点,即可打开web ui界面
左上角速度信息都显示为0时,表示正常与aria2程序建立了rpc通信,也可通过页面上的菜单“设置-服务器信息”来查看是否识别aria2版本号。这个web ui支持rpc密钥,可以在aria2的配置文件里设置rpc-secret的值,然后在页面菜单“设置-连接设置”中输入密码令牌项来启用该安全设置,在局域网中,这个设置可以防止别人把下载挂在你的机器上,浪费你的带宽和资源。
附:
如需停止nginx,请使用命令
nginx -s quit
如无法访问github,请下载含有webui的集成包
如需集成百度网盘下载功能至浏览器,可下载BaiduExporter插件,支持firefox与chrome。firefox可去扩展中心搜索扩展名后安装,chrome需要手动安装
https://github.com/acgotaku/BaiduExporter/blob/master/BaiduExporter.crx
下载以上连接的crx扩展文件到本地电脑,将crx改名为rar,使用rar解压成一个目录BaiduExporter,打开chrome,打开“更多工具-扩展程序”,打开右上角开发者模式,然后选择“加载已解压的扩展程序”,找到刚才解压的目录,选中导入即可启用该扩展。在访问百度网盘下载页面时,会发现页面上多了一个“导出下载”按钮,在该按钮的设置中定义好文件下载目录后,选择ARIA2 RPC即可将下载自动传送到本机的aria2 web ui,方便快捷。
以上内容参考:
https://aria2.github.io/manual/en/html/aria2c.html
https://github.com/acgotaku/BaiduExporter
https://github.com/ziahamza/webui-aria2