VPS搭建Aria2下载环境

月底快到了,刚买的VPS流量才用了2G多,还剩497G没用。索性想想办法,除了翻墙之外,让VPS干点别的事情。刚巧最近一直在研究安装Arch Linux,看到了Aria2这款下载工具,于是产生了在VPS上搭建Aria2下载环境的想法。因为我的VPS系统是CentOS 6,相对较老,所以这只是一篇针对CentOS 6上的教程,并不完全适用于CentOS 7,但是可以用来参考。

要说在Arch上安装Aria2那是分分钟的事情,一条命令搞定

1
pacman -S Aria2

问题是现在的环境变成了CentOS 6。我是参考了这篇教程来做的。一上来就遇到了无法安装Aria2的问题。要么CentOS 6上的epel-release源,删除了Aria2,无法通过yum命令来安装,要么就是无法访问 http://pkgs.repoforge.org 网址,不能安装rpmforge源。再就是安装gcc来编译源代码,问题是,网上下载的repo,安装失败,涉及安装gcc的某个链接失效了。

1
2
3
wget https://copr.fedoraproject.org/coprs/rhscl/devtoolset-3/repo/epel-6/rhscl-devtoolset-3-epel-6.repo   -O /etc/yum.repos.d/rhscl-devtoolset-3-epel-6.repo

yum install devtoolset-3-gcc devtoolset-3-gcc-c++ devtoolset-3-binutils devtoolset-3-gcc-gfortran

以上yum install命令失败。无奈之下,我自己找到了一个可以下载aria2.rpm网站。在安装的时候我走了一些弯路。我总结了一下心得。

首先先别急着下载rpm文件,在CentOS里,执行命令

1
yum info glibc

查看一下你的VPS安装的glibc是32位的还是64位的。为什么要查看glibc,因为它是aria2最基础的依赖。我一开始以为环境是64位的,所以得下载安装64位的aria2。其实我的VPS预装的glibc是32位的,所以我只需要下载32位的aria2就OK了。

i686代表32位,x86_64代表64位。打开aria2.rpm下载网址,可以看到CentOS 6可以下载的aria2版本都是相对较低的,最高也只有1.16.4,最新的aria2的功能都用不了,不过也不打紧,能用就行。

执行命令,下载aria2-1.16.4-1.el6.rf.i686.rpm文件,如果你的glibc是64位,那就安装aria2-1.16.4-1.el6.rf.x86_64.rpm文件。

1
wget http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el6/en/i386/rpmforge/RPMS/aria2-1.16.4-1.el6.rf.i686.rpm

下载rpm文件完成后,执行命令来安装rpm源

1
rpm -Uvh aria2-1.16.4-1.el6.rf.i686.rpm

发现报错,根据错误提示再去下载关联的rpm源,主要是因为缺少关联项,这里就不写了。自己到Requires里去找链接地址。

最后,如果相关依赖项都安装成功,执行命令

1
rpm -Uvh aria2-1.16.4-1.el6.rf.i686.rpm

通过的话,再执行

1
yum install aria2

aria2就安装成功了。注意aria2的命令是aria2c,使用的时候要注意。接下来需要创建并配置一下aria2.conf文件。

1
2
mkdir /etc/aria2/
vim /etc/aria2/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=/home/user/downloads
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc
dht-file-path=~/.aria2/dht.dat

注意,将配置中的dir=/home/user/download替换成你的保存路径,建议使用绝对路径。同样dht-file-path=~/.aria2/dht.dat建议换成绝对路径。接下来就可以使用aria2啦。

aria2的用法

aria2下载文件
1
aria2c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.6.tar.bz2

使用aria2下载文件,只需在命令后附加地址即可。

aria2 分段下载
1
aria2c -s 2 http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.6.tar.bz2

利用aria2的分段下载功能可以加快文件的下载速度,对于下载大文件时特别有用。为了使用aria2的分段下载功能,你需要在命令中指定-s选项。

断点续传
1
aria2c -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.6.tar.bz2

在命令中使用-c选项可以断点续传文件。

下载torrent文件
1
2
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

既可以通过本地torrent文件进行下载,也支持联网下载torrent文件后下载。

列出种子内容
1
aria2c -S .torrent
下载种子内特定编号的文件
1
aria2c --select-file=1,4-7 .torrent

此处下载编号为1,4,5,6,7的文件

后台下载
1
2
aria2c -D url
aria2c --deamon=true url

这里只列出了一部分的用法,更多更详细的用法,可以去aria2官网查看。

RPC Server模式

虽然更多时候,直接使用命令行来下载很方便,但是我更推荐使用RPC Server模式,使aria2作为后台进程运行,哪怕ssh断开连接后,依然不影响下载。而且还能够结合webui-aria2界面,通过网页来实时查看下载情况,网页还能够用来驱动aria2后台进程的运行,简直不能更赞。

首先需要创建一个管理脚本

1
vi /etc/init.d/aria2

将下面的内容复制进去

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
#!/bin/bash
#
# aria2 - this script starts and stops the aria2 daemon
#
# chkconfig: - 85 15
# description: Aria2 - Download Manager
# processname: aria2c
# config: /etc/aria2/aria2.conf
# pidfile:

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

aria2c="/usr/bin/aria2c"
ARIA2C_CONF_FILE="/etc/aria2/aria2.conf"
options=" --conf-path=$ARIA2C_CONF_FILE -D "

RETVAL=0

start() {
# code here to start the program
echo -n "Starting aria2c daemon."
${aria2c} ${options}
RETVAL=$?
echo
}

stop() {
echo -n "Shutting down aria2c daemon."
/usr/bin/killall aria2c
RETVAL=$?
echo
}

status() {
ID=$(/bin/ps -ef | grep 'aria2c' | grep -v 'grep' | awk '{print $2}')
if [[ "x$ID" != "x" ]]; then
echo "Aria2 is running."
else
echo "Aria2 is not running."
fi
}

restart() {
stop
sleep 3
start
}

case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
*)
echo "Usage: service aria2c {start|stop|restart}"
RETVAL=1
esac

exit $RETVAL

然后,添加可执行权限

1
chmod +x /etc/init.d/aria2

启动aria2脚本

1
/etc/init.d/aria2 start

查看aria2是否运行

1
/etc/init.d/aria2 status

到这一步aria2后台进程算是开启了。接下来需要使用Nginx服务器,当然你也可以用你自己的服务器。如果还没搭过Nginx,建议看一下CentOS 6安装NginxNginx搭建文件下载服务器

首先需要安装git,执行命令

1
yum install git

安装完成后,下载webui-aria2

1
git clone https://github.com/ziahamza/webui-aria2

接下来就是把下载好的webui-aria2文件夹放到Nginx展示目录下。我的目录地址为/usr/share/nginx/html/,把当前webui-aria2移动到该目录下就行。

1
mv webui-aria2 /usr/share/nginx/html/

移动完成后,用浏览器打开网址http(s)://yourvpsdomainname/webui-aria2/#,将yourvpsdomainname替换成你的域名即可浏览。

我用aria2,下载了一部电影感觉还是蛮快的,最高可以达到2M/s。虽然不如迅雷,但是有些迅雷下载速度为0的资源,aria2下载的速度依然可以达到1M~2M。而且它还支持用户以及密码的安全设置,防止他人直接操控你的vps。我的1.16.4这个版本不支持token,最新版本推荐使用token来取代用户名和密码。不过能用就行,要是结合OwnCloud网盘的话,就能实现下载的视频在线看了,爽~

avatar

chilihotpot

You Are The JavaScript In My HTML