☰
在云服务器上使用 aria2 并启用 RPC 下载服务
2026/9/29 5:26:52 网站建设 项目流程

在云端服务器上利用 aria2 实现高速下载、断点续传与自动任务管理是一种常见方案。aria2 支持多协议下载,并通过内置的 JSON-RPC 接口提供远程调用能力,从而可以结合 Python 脚本自动解析网盘分享链接并生成下载任务。

本文将以 CentOS 7 系统为例,详细讲解如何安装并配置 aria2,确保 RPC 服务可用,以及如何验证并调试相关功能。

文章目录

  • 环境准备与安装
    • aria2 配置文件编写
    • 创建 aria2 systemd 服务单元
    • 防火墙与端口开放
  • RPC 服务测试
    • 使用 curl 添加下载任务
    • 使用 Python 脚本添加下载任务
  • 常见问题与排查
  • 总结

环境准备与安装

需要在 CentOS 7 上安装 aria2。在 CentOS 7 中 aria2 包通常存在于 EPEL 仓库中,因此需要先启用 EPEL 仓库。

启用 EPEL 仓库并安装 aria2 ,执行以下命令启用 EPEL 仓库并安装 aria2。

sudoyuminstallepel-release-ysudoyuminstallaria2-y

安装完成后,可以通过命令aria2c --version检查 aria2 版本,确认程序已安装。

aria2 配置文件编写

aria2 默认不会启用 RPC 服务,需要通过配置文件开启。

下面提供一个示例配置文件,建议存放在/etc/aria2/aria2.conf中。

# 启用 RPC 服务,并允许所有来源访问 enable-rpc=true rpc-listen-all=true rpc-allow-origin-all=true # 如需安全验证,则设置访问密钥(远程调用时须携带 token:your_secret_here) rpc-secret=your_secret_here # 下载相关配置 max-concurrent-downloads=5 continue=true max-connection-per-server=16 split=16 # 指定下载目录与会话文件 dir=/data/downloads input-file=/etc/aria2/aria2.session save-session=/etc/aria2/aria2.session save-session-interval=60 # 日志文件(便于排查问题) log=/var/log/aria2.log

确保/data/downloads目录已存在,并赋予合适权限;其中/etc/aria2/aria2.session文件如果不存在,需要手动创建;如果不需要 token 验证,可删除或注释掉rpc-secret项,但建议使用以保证安全。

创建 aria2 systemd 服务单元

为确保 aria2 后台自动启动并实现开机自启,建议利用 systemd 管理 aria2 服务。

在/etc/systemd/system/aria2.service中创建服务文件。

[Unit] Description=Aria2c Download Manager After=network.target [Service] # 根据实际情况选择运行用户,推荐使用专用用户 aria2,若不存在需创建 User=aria2 Group=aria2 WorkingDirectory=/data/downloads ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target

如果系统中尚无aria2用户,则创建专用账户。

sudouseradd-r-s/sbin/nologin aria2

调整相关目录权限,确保aria2用户对/data/downloads、/etc/aria2有读写权限。

sudomkdir-p/data/downloadssudochown-Raria2:aria2 /data/downloadssudochown-Raria2:aria2 /etc/aria2

最后重新加载 systemd 并启动 aria2 服务:

sudosystemctl daemon-reloadsudosystemctl start aria2sudosystemctlenablearia2

在服务启动后,可以执行sudo systemctl status aria2检查状态,确认显示类似如下信息。

● aria2.service - Aria2c Download Manager Loaded: loaded (/etc/systemd/system/aria2.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2025-03-10 10:11:56 CST; ... ago Main PID: 9374 (aria2c) CGroup: /system.slice/aria2.service └─9374 /usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf Mar 10 10:11:56 VM-0-11-centos aria2c[9374]: 03/10 10:11:56 [NOTICE] IPv4 RPC: listening on TCP port 6800 Mar 10 10:11:56 VM-0-11-centos aria2c[9374]: 03/10 10:11:56 [NOTICE] IPv6 RPC: listening on TCP port 6800

显示状态为 active (running) 即表示服务已成功启动。

防火墙与端口开放

为确保远程设备能够通过 RPC 调用 aria2,需要开放 6800 端口。

检查防火墙是否允许 6800 端口访问。

sudofirewall-cmd --add-port=6800/tcp--permanentsudofirewall-cmd--reload

若返回“Warning: ALREADY_ENABLED: 6800:tcp”,说明该端口已开放。

可通过命令检查。

sudofirewall-cmd --list-ports

应在列表中看到6800/tcp。

同时如果服务器处于云平台(如阿里云、腾讯云等),还需检查云安全组规则,确保 6800 端口对外开放。最后通过sudo netstat -tulnp | grep 6800检查 aria2 是否监听在0.0.0.0:6800,确保所有 IP 均可访问。

RPC 服务测试

使用curl命令测试 aria2 RPC 服务是否可用。在远程或本机上执行以下命令(注意 JSON 格式需要转义双引号):

curl-d"{\"jsonrpc\":\"2.0\",\"id\":\"test\",\"method\":\"aria2.getVersion\",\"params\": [\"token:your_secret_here\"]}"-H"Content-Type: application/json"http://110.140.221.86:6800/jsonrpc

如果返回如下 JSON 信息:

{"id":"test","jsonrpc":"2.0","result":{"enabledFeatures":["Async DNS","BitTorrent","Firefox3 Cookie","GZip","HTTPS","Message Digest","Metalink","XML-RPC"],"version":"1.34.0"}}

则表示 RPC 服务已成功启用,版本号为 1.34.0,并且各项功能均正常工作。

当 RPC 服务验证成功后,可以通过远程调用添加下载任务。下面提供两种方式进行说明。

使用 curl 添加下载任务

执行以下命令,添加一个下载任务(以下载示例文件为例):

curl-d"{\"jsonrpc\":\"2.0\",\"id\":\"test\",\"method\":\"aria2.addUri\",\"params\": [\"token:your_secret_here\", [\"https://example.com/file.zip\"]]}"-H"Content-Type: application/json"http://110.140.221.86:6800/jsonrpc

返回结果类似:

{"id":"test","jsonrpc":"2.0","result":"2089b05ecca3d829"}

任务 ID 表示任务已成功加入下载队列。

使用 Python 脚本添加下载任务

利用 Python 的requests库实现自动添加下载任务,示例代码如下:

importrequestsimportjson# 远程 aria2 RPC 地址(公网 IP 或域名)ARIA2_RPC_URL="http://110.140.221.86:6800/jsonrpc"ARIA2_SECRET="token:your_secret_here"defadd_download(url):payload={"jsonrpc":"2.0","method":"aria2.addUri","id":"test","params":[ARIA2_SECRET,[url]]}headers={"Content-Type":"application/json"}response=requests.post(ARIA2_RPC_URL,data=json.dumps(payload),headers=headers)returnresponse.json()# 测试添加下载任务download_link="https://example.com/file.zip"result=add_download(download_link)print(result)

成功返回后,会显示任务 ID,说明任务已添加至 aria2 下载队列。

常见问题与排查

在部署使用aria2服务及RPC接口时,常见的问题通常集中在系统用户权限、文件目录访问权限、以及RPC配置请求格式等几个方面。为避免以上常见问题,应确保系统用户、工作目录、权限设置正确,RPC 请求的 JSON 格式符合规范并正确转义。

错误类型错误提示可能原因解决方法
用户权限错误(systemd)status=217/USER配置文件中指定的用户或用户组不存在检查并确保systemd配置文件中指定的User和Group存在,并具备正确权限
目录权限错误status=200/CHDIR指定的工作目录不存在或无权限访问确保WorkingDirectory路径存在,且运行用户有读写权限
RPC连接错误无法连接RPCaria2 RPC未正确启动或端口未监听检查RPC是否启用并监听正确端口,确保aria2.conf中的RPC配置正确并已开启
用户权限问题status=217/USER用户不存在或权限不够检查aria2运行用户,确保其存在且对下载目录有读写权限
RPC 请求错误JSONRPC解析错误JSON请求字符串未正确转义RPC请求中的JSON字符串必须正确转义,如:"{\"jsonrpc\": ...}"

总结

本文详细介绍了如何在 CentOS 7 环境下安装与配置 aria2,并通过 systemd 启动服务、配置防火墙、启用 RPC 服务以及通过 curl 和 Python 进行远程调用。按照本教程配置完成后,aria2 RPC 服务即可在云端服务器上正常工作,为自动解析网盘分享链接并添加下载任务提供可靠支持。希望本文能为相关项目提供清晰的技术指导和实践参考。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询