在服务器上搭建 Aria2 rpc 服务

以前写爬虫,都是自己傻 fufu 写下载器下载静态资源。最近写一个爬虫将资源路径写数据库后,想使用 aria2c 来下载,于是就有了下面这些操作。

哦,之前的 Nas 搭建我已经弄完了,一直没写文章分享,那天心情好把之前的系列补全。下面这些都是在我自建的 Nas 环境操作的。

安装 Aria2

1
yay -S aria2

启动 RPC

创建config文件

1
2
3
4
sudo mkdir  /etc/aria2c
cd /etc/aria2c
sudo touch /etc/aria2c/aria2.session
sudo vim aria2c.conf

编辑aria2c.conf

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
# /etc/aria2c/aria2c.conf
# 文件保存路径,默认为当前启动位置,自行修改
# dir="./"
dir=/home/bubao/disk/aria2_download
# 禁止 ipv6
disable-ipv6=true
# 打开 rpc 的目的是为了给 web 管理端用
enable-rpc=true
rpc-allow-origin-all=true
#允许非外部访问
rpc-listen-all=true
# RPC 端口,仅当默认端口被占用时修改
rpc-listen-port=16800

input-file=/etc/aria2c/aria2.session
save-session=/etc/aria2c/aria2.session

# 最大同时下载数(任务数), 路由建议值:3
max-concurrent-downloads=32
# 断点续传
continue=true
# 同服务器连接数
max-connection-per-server=16
# 最小文件分片大小,下载线程数上限取决于能分出多少片,对于小文件重要
min-split-size=10M
# 单文件最大线程数,路由建议值:5
split=256
# 下载速度限制
max-overall-download-limit=0
# 单文件速度限制
max-download-limit=0
# 上传速度限制
max-overall-upload-limit=0
# 单文件速度限制
max-upload-limit=0

# 使用代理
# all-proxy=localhost:20172

创建/etc/aria2c/aria2c.service

1
sudo vim /etc/aria2c/aria2c.service
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=aria2c Service
After=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2c/aria2c.conf
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

/etc/aria2c/aria2c.service文件拷贝到/usr/lib/systemd/system/aria2c.session

1
sudo cp /etc/aria2c/aria2c.service /usr/lib/systemd/system/aria2c.session

重载systemctl并启动aria2c开机启动

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable aria2c.service
sudo systemctl restart aria2c.service

至此,aria2c rpc 就启动成功了。

安装 Aria2Ng

为了更方便使用 aria2c rpc,需要一个界面,这里我们选用了 Aria2Ng。

1
yay -S aria-ng-deploy

当时安装后我就那么这东西怎么用,去看看 yay 缓存目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cat ~/.cache/yay/aria-ng-deploy/aria-ng-deploy.install
# color
all_off="$(tput sgr0)"
bold="${all_off}$(tput bold)"
blue="${bold}$(tput setaf 4)"
yellow="${bold}$(tput setaf 3)"

note() {
printf "${blue}==>${yellow} NOTE:${bold} $1${all_off}\n"
}

post_install(){
note "you should copy /usr/share/aria-ng-deploy to your web directory"
}

post_upgrade(){
post_install
}

you should copy /usr/share/aria-ng-deploy to your web directory

emmmmm??????

web directory,也就是说我需要 Nginx 才能启动。那就安装咯。

安装 Nginx 并配置

1
yay -S nginx

安装就这么简单,查看nginx服务的状态,如果未启动,就启动一下

1
2
3
4
5
sudo systemctl status nginx
# 启动命令
# sudo systemctl start nginx
# 开机启动
# sudo systemctl enable nginx

配置一下 nginx

1
sudo mkdir 

修改/etc/nginx/nginx.conf如下

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
113
#user html;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

include /etc/nginx/sites-enabled/*; # 开启的 Server 服务配置

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;
# index index.html index.htm;
# }
#}

# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;

# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}

}

编辑/etc/nginx/sites-enabled/aria2-ng.conf

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
server {
listen 10081;
listen [::]:10081;

# 定义服务器的默认网站根目录位置
root /usr/share/aria-ng-deploy;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

# access log file 访问日志
# access_log logs/nginx.access.log main;

# 禁止访问隐藏文件
# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}

# 默认请求
location / {
# 首先尝试将请求作为文件提供,然后作为目录,然后回退到显示 404。
# try_files 指令将会按照给定它的参数列出顺序进行尝试,第一个被匹配的将会被使用。
# try_files $uri $uri/ =404;
index index.html index.htm; # 给定 URL 文件
#try_files $uri $uri/ /index.php?path_info=$uri&$args =404;
access_log off;
expires max;
}
}

nginx 的配置我也是抄的。….. 所有大神看见有什么不妥的地方自己改改。

重载 Nginx

1
nginx -s reload

最后在浏览器上访问服务器的18600端口,把 rpc 绑定过来即可。


在服务器上搭建 Aria2 rpc 服务
https://bubao.github.io/posts/311d2e0a.html
作者
一念
发布于
2020年8月1日
许可协议