以Windows服务方式运行aria2

开篇废话

因为firefox内置下载器不能多线程下载,我又有多线程下载的需求,于是我就想到了使用aria2代替firefox内置下载管理器。

中文网上Windows使用aria2的方法要么是直接在终端中运行aria2,要么是在终端运行aria2后隐藏终端窗口,前者不优雅,后者不便于管理,而且我对windows不太熟悉,跑不起来。不过windows本身就有一个还算好用的【服务】功能,依靠这个功能来运行aria2即优雅又便于管理。

正式流程

以windows服务方式运行aria2

先不着急下载aria2,先下载easy-servicehttps://github.com/pandolia/easy-service/releases/

这是一个开源轻量的将常规程序注册为系统服务的工具

下载完成后解压,将文件夹放到自己喜欢的位置,以管理员身份运行 register-this-path.win10.bat,将当前路径添加到环境变量中

此时打开windows终端,输入 svc -v ,如果正常输出版本信息,则表明安装成功

之后下载aria2(https://github.com/aria2/aria2/releases),将其解压,将存放有aria2c.exe的文件夹放置到easy-service文件夹中(注意easy-service文件夹内放置的是aria2的文件夹。而不是aria2c.exe)

easy-service文件夹

aria2文件夹

文件夹结构如上(文件夹名字不一定要相同)

进入aria2文件夹中,新建aria2.conf文件,添加如下内容,并适当进行修改 (E:\easy-service\aria2记得替换成你自己的路径)

路径要写绝对文件,相对路径在easy-service中会报错

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
## '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 ##
## 被注释的选项填写的是默认值, 建议在需要修改时再取消注释 ##

# 日志
log=E:\easy-service\aria2\aria2.log
log-level=error

## 文件保存相关 ##

# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=D:\Downloads
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=falloc
# 断点续传
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=25
# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
max-overall-upload-limit=1M
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
# 禁用IPv6, 默认:false
disable-ipv6=false

## 进度保存相关 ##

# 从会话文件中读取下载任务
input-file=E:\easy-service\aria2\aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=E:\easy-service\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=false
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
#rpc-secret=<TOKEN>
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=<USER>
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-passwd=<PASSWD>

## BT/PT下载相关 ##

# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51413-52333
# 单个种子最大连接数,0表示不限制,默认:55
bt-max-peers=0
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=true
# 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=50M
# 客户端伪装, PT需要
peer-id-prefix=-UT3500-
user-agent=uTorrent/3500(43580)
# 最小分享率。当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=0
# 最小做种时间。此选项设置为0时,将在BT任务下载完成后不进行做种。
seed-time=0
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
force-save=false
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
#bt-save-metadata=false
# 删除未选择文件
bt-remove-unselected-file=true

## BT 服务器地址 ##
bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.opentrackr.org:1337/announce,udp://9.rarbg.to:2710/announce,http://tracker.internetwarriors.net:1337/announce,udp://exodus.desync.com:6969/announce,udp://explodie.org:6969/announce,http://explodie.org:6969/announce,http://tracker1.itzmx.com:8080/announce,udp://tracker1.itzmx.com:8080/announce,udp://ipv4.tracker.harry.lu:80/announce,udp://denis.stalker.upeer.me:6969/announce,udp://tracker.port443.xyz:6969/announce,udp://open.demonii.si:1337/announce,http://tracker.port443.xyz:6969/announce,udp://tracker.torrent.eu.org:451/announce,udp://tracker.tiny-vps.com:6969/announce,udp://tracker.iamhansen.xyz:2000/announce,udp://thetracker.org:80/announce,udp://retracker.lanta-net.ru:2710/announce,udp://open.stealth.si:80/announce,udp://bt.xxx-tracker.com:2710/announce,http://private.minimafia.nl:443/announce,http://prestige.minimafia.nl:443/announce,http://open.acgnxtracker.com:80/announce,udp://tracker.vanitycore.co:6969/announce,udp://zephir.monocul.us:6969/announce,udp://tracker.cyberia.is:6969/announce,https://tracker.fastdownload.xyz:443/announce,https://opentracker.xyz:443/announce,http://tracker3.itzmx.com:6961/announce,http://opentracker.xyz:80/announce,http://open.trackerlist.xyz:80/announce,http://torrent.nwps.ws:80/announce,udp://tracker2.itzmx.com:6961/announce,udp://tracker1.wasabii.com.tw:6969/announce,udp://tracker.gbitt.info:80/announce,udp://tracker.filepit.to:6969/announce,udp://tracker.dyn.im:6969/announce,udp://tracker.dler.org:6969/announce,udp://torrentclub.tech:6969/announce,udp://pubt.in:2710/announce,udp://bittracker.ru:6969/announce,https://tracker.gbitt.info:443/announce,http://tracker2.itzmx.com:6961/announce,http://tracker1.wasabii.com.tw:6969/announce,http://tracker.torrentyorg.pl:80/announce,http://tracker.gbitt.info:80/announce,http://tracker.city9x.com:2710/announce,http://tracker.btsync.gq:233/announce,http://torrentclub.tech:6969/announce,http://t.nyaatracker.com:80/announce,http://retracker.mgts.by:80/announce,http://open.acgtracker.com:1096/announce,http://fxtt.ru:80/announce,http://0d.kebhana.mx:443/announce,wss://tracker.openwebtorrent.com:443/announce,wss://tracker.fastcast.nz:443/announce,wss://tracker.btorrent.xyz:443/announce,udp://tracker4.itzmx.com:2710/announce,udp://tracker.justseed.it:1337/announce,udp://packages.crunchbangplusplus.org:6969/announce,https://1337.abcvg.info:443/announce,http://tracker4.itzmx.com:2710/announce,http://tracker.tfile.me:80/announce.php,http://tracker.tfile.me:80/announce,http://tracker.tfile.co:80/announce,http://share.camoe.cn:8080/announce,http://peersteers.org:80/announce,http://omg.wtftrackr.pw:1337/announce

在当前文件夹下新建svc.conf文件,填入以下内容(E:\easy-service\aria2记得换成你自己的路径)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Windows 系统服务名称、不能与系统中已有服务重名
ServiceName: aria2

# 需要运行的可执行程序及命令行参数
Worker: aria2c.exe --conf=E:\easy-service\aria2\aria2.conf

# 程序运行的工作目录,请确保该目录已存在
WorkingDir: /

# 输出目录,程序运行过程的输出将会写到这个目录下面,请确保该目录已存在
# 如果不想保存 Worker 的输出,请设为 $NULL
OutFileDir: $NULL

# 程序输出的编码,如果不确定,请设为空
WorkerEncoding: utf8`

在当前目录以管理员身份打开终端

运行 svc check 命令检查配置是否合法

运行 svc test-worker 命令测试 Worker 程序是否能正常运行

以上两步没有报错的话使用 svc install 将aria2安装为服务

没有问题的话就能在任务管理器中看到了

运行中的aria2服务

安装后会自动开机运行,完全无感操作,不想用的时候直接关闭服务就行,需要重启的话直接重启服务就行

空闲的aria2

空闲时只占用3M,非常轻量,不使用的时候也不需要担心内存占用

通过网页进行管理

aria2启动后我们还需要其他工具进行管理,这里我推荐ariang,一个网页端管理aria2的工具

只需要在浏览器打开http://ariang.mayswind.net/latest/即可,ariang完全基于网页端,本地不需要下载。

ariang界面

打开ariang设置,点击RPC,将RPC地址更换为127.0.0.1,其他不用动

修改ariang设置

回到主界面,应该可以看到显示已连接

后续拓展

替代firefox内置下载器

这里我推荐使用【Aria2下载器集成组件】(https://addons.mozilla.org/zh-CN/firefox/addon/aria2-integration/),开箱即用。

同时,该插件也集成了ariang,可以非常方便地管理aria2的下载内容,只需要在firefox工具栏中点击插件图标,然后点击【详情】即可

插件集成的ariang界面


以Windows服务方式运行aria2
https://zhmoegirl.com/posts/006184d07a09/
作者
InternetBugs
发布于
2023年7月16日
许可协议