云服务器使用 aria2 并启用 RPC 举行下载服务

打印 上一主题 下一主题

主题 917|帖子 917|积分 2751

在云端服务器上利用 aria2 实现高速下载、断点续传与自动使命管理是一种常见方案。aria2 支持多协议下载,并通过内置的 JSON-RPC 接口提供远程调用能力,从而可以结合 Python 脚本自动解析网盘分享链接并生成下载使命。
本文将以 CentOS 7 系统为例,具体讲解如何安装并配置 aria2,确保 RPC 服务可用,以及如何验证并调试相关功能。

  
环境准备与安装

必要在 CentOS 7 上安装 aria2。在 CentOS 7 中 aria2 包通常存在于 EPEL 仓库中,因此必要先启用 EPEL 仓库。
启用 EPEL 仓库并安装 aria2 ,实行以下下令启用 EPEL 仓库并安装 aria2。
  1. sudo yum install epel-release -y
  2. sudo yum install aria2 -y
复制代码
安装完成后,可以通过下令 aria2c --version 查抄 aria2 版本,确认程序已安装。
aria2 配置文件编写

aria2 默认不会启用 RPC 服务,必要通过配置文件开启。
下面提供一个示例配置文件,建议存放在 /etc/aria2/aria2.conf 中。

  1. # 启用 RPC 服务,并允许所有来源访问
  2. enable-rpc=true
  3. rpc-listen-all=true
  4. rpc-allow-origin-all=true
  5. # 如需安全验证,则设置访问密钥(远程调用时须携带 token:your_secret_here)
  6. rpc-secret=your_secret_here
  7. # 下载相关配置
  8. max-concurrent-downloads=5
  9. continue=true
  10. max-connection-per-server=16
  11. split=16
  12. # 指定下载目录与会话文件
  13. dir=/data/downloads
  14. input-file=/etc/aria2/aria2.session
  15. save-session=/etc/aria2/aria2.session
  16. save-session-interval=60
  17. # 日志文件(便于排查问题)
  18. log=/var/log/aria2.log
复制代码
确保 /data/downloads 目录已存在,并赋予合适权限;此中/etc/aria2/aria2.session 文件如果不存在,必要手动创建;如果不必要 token 验证,可删除或解释掉 rpc-secret 项,但建议使用以包管安全。

创建 aria2 systemd 服务单位

为确保 aria2 后台自动启动并实现开机自启,建议利用 systemd 管理 aria2 服务。
在 /etc/systemd/system/aria2.service 中创建服务文件。
  1. [Unit]
  2. Description=Aria2c Download Manager
  3. After=network.target
  4. [Service]
  5. # 根据实际情况选择运行用户,推荐使用专用用户 aria2,若不存在需创建
  6. User=aria2
  7. Group=aria2
  8. WorkingDirectory=/data/downloads
  9. ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf
  10. Restart=on-failure
  11. RestartSec=5s
  12. [Install]
  13. WantedBy=multi-user.target
复制代码

如果系统中尚无 aria2 用户,则创建专用账户。
  1. sudo useradd -r -s /sbin/nologin aria2
复制代码
调解相关目录权限,确保 aria2 用户对 /data/downloads、/etc/aria2 有读写权限。
  1. sudo mkdir -p /data/downloads
  2. sudo chown -R aria2:aria2 /data/downloads
  3. sudo chown -R aria2:aria2 /etc/aria2
复制代码
最后重新加载 systemd 并启动 aria2 服务:
  1. sudo systemctl daemon-reload
  2. sudo systemctl start aria2
  3. sudo systemctl enable aria2
复制代码
在服务启动后,可以实行 sudo systemctl status aria2 查抄状态,确认显示类似如下信息。
  1. ● aria2.service - Aria2c Download Manager
  2.    Loaded: loaded (/etc/systemd/system/aria2.service; enabled; vendor preset: disabled)
  3.    Active: active (running) since Mon 2025-03-10 10:11:56 CST; ... ago
  4. Main PID: 9374 (aria2c)
  5.    CGroup: /system.slice/aria2.service
  6.            └─9374 /usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf
  7. Mar 10 10:11:56 VM-0-11-centos aria2c[9374]: 03/10 10:11:56 [NOTICE] IPv4 RPC: listening on TCP port 6800
  8. 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 端口访问。
  1. sudo firewall-cmd --add-port=6800/tcp --permanent
  2. sudo firewall-cmd --reload
复制代码
若返回“Warning: ALREADY_ENABLED: 6800:tcp”,分析该端口已开放。
可通过下令查抄。
  1. sudo firewall-cmd --list-ports
复制代码
应在列表中看到 6800/tcp。
同时如果服务器处于云平台(如阿里云、腾讯云等),还需查抄云安全组规则,确保 6800 端口对外开放。最后通过 sudo netstat -tulnp | grep 6800 查抄 aria2 是否监听在 0.0.0.0:6800,确保所有 IP 均可访问。

RPC 服务测试

使用 curl 下令测试 aria2 RPC 服务是否可用。在远程或本机上实行以下下令(注意 JSON 格式必要转义双引号):
  1. 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 信息:
  1. {
  2.   "id": "test",
  3.   "jsonrpc": "2.0",
  4.   "result": {
  5.     "enabledFeatures": ["Async DNS", "BitTorrent", "Firefox3 Cookie", "GZip", "HTTPS", "Message Digest", "Metalink", "XML-RPC"],
  6.     "version": "1.34.0"
  7.   }
  8. }
复制代码
则表示 RPC 服务已乐成启用,版本号为 1.34.0,并且各项功能均正常工作。
当 RPC 服务验证乐成后,可以通过远程调用添加下载使命。下面提供两种方式举行分析。
使用 curl 添加下载使命

实行以下下令,添加一个下载使命(以下载示例文件为例):
  1. 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
复制代码
返回结果类似:
  1. {
  2.   "id": "test",
  3.   "jsonrpc": "2.0",
  4.   "result": "2089b05ecca3d829"
  5. }
复制代码
使命 ID 表示使命已乐成加入下载队列。
使用 Python 脚本添加下载使命

利用 Python 的 requests 库实现自动添加下载使命,示例代码如下:
  1. import requests
  2. import json
  3. # 远程 aria2 RPC 地址(公网 IP 或域名)
  4. ARIA2_RPC_URL = "http://110.140.221.86:6800/jsonrpc"
  5. ARIA2_SECRET = "token:your_secret_here"
  6. def add_download(url):
  7.     payload = {
  8.         "jsonrpc": "2.0",
  9.         "method": "aria2.addUri",
  10.         "id": "test",
  11.         "params": [ARIA2_SECRET, [url]]
  12.     }
  13.     headers = {"Content-Type": "application/json"}
  14.     response = requests.post(ARIA2_RPC_URL, data=json.dumps(payload), headers=headers)
  15.     return response.json()
  16. # 测试添加下载任务
  17. download_link = "https://example.com/file.zip"
  18. result = add_download(download_link)
  19. 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 服务即可在云端服务器上正常工作,为自动解析网盘分享链接并添加下载使命提供可靠支持。希望本文能为相关项目提供清晰的技术指导和实践参考。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表