自己搭建的Cloudreve的离线服务一直都没有用,最近群里的带飞大佬说打算在服务器搞了下载工具搭配filebrowser使用下载动画在线看,突然灵感一发,想起了我Cloudreve里面的离线服务,所以就搞了起来了,搞了两天,熬过夜,累死累活,终于搞定了。不过还是有很多遇到的问题不知道原因,不过“六字真言”驱使我重新安装Cloudreve,现在能正常用了。现在首推安装方法是直接用解压包安装Cloudreve,真的舒服【最后再提一下怎么直接解压安装】。Cloudreve的离线是接入Aria2下载工具,所以还是蛮复杂的。

本文涉及vi/vim的使用,不懂得请去先学习有关vi/vim的使用,这里不说了。
也可以用nano,先安装然后把命令的vi改成nano即可。


第一步:下载aria2

我这里下载aria2是直接用centos的自带aria2源安装,还有一种方法是编译安装,比较复杂,就不说编译安装了,可以直接看这里——————>centos安装aria2,下面都是基于我用自带源的安装方法去配置。

自带源安装命令:

yum install aria2

第二步:配置aria2

建立aria2的配置文件目录

aria2的配置文件目录是可以任意地方建立的,我个人选/etc/aria2作为目录,以下是建立目录命令

mkdir 目录路径

例子:

mkdir /etc/aria2

建立配置文件

在刚刚建立的配置文件目录下建立配置文件:

建立session文件:

touch /配置文件目录/aria2.session

建立conf文件:

vi /配置文件目录/aria2.conf

输入配置信息,此处不提供配置信息,配置信息请到百度上找,这里要注意一下的是:

#启用RPC服务的开关,必须设置为true
enable-rpc=true
#RPC服务的端口,默认为6800,可以随意安排一个非特殊端口
rpc-listen-port=
#设置PRC服务的密钥,随你喜欢填写
rpc-secret=

这三条东西一定要填写好,关系到后面的连接。

这里要提一下的是:
如果是阿里云服务器搭建的话,必须要在控制台开放你自定的RPC端口,也就是上面的rpc-listen-port,开放TCP即可,同时还要在服务器防火墙内设置端口开放,否则就无法使用,而其他服务器直接在防火墙开放端口即可。

第三步:添加服务控制

建立systemctl服务文件

vi /usr/lib/systemd/system/aria2.service

在里面插入以下内容,并修改相关点:

[Unit]
Description=aria2c

[Service]
User=此处输入php-fpm所在的用户组,我这里是www
ExecStart=/aria2c的文件路径/aria2c --conf-path=/配置文件路径/aria2.conf
Restart=on-abort

[Install]
WantedBy=multi-user.target

重新加载deamon,让新的服务文件生效

systemctl daemon-reload
systemctl enable aria2

第四步:添加定时任务

添加定时任务使用Crontab,需要用到Crontab服务。
打开Crontab编辑命令:

crontab -e

进入之后输入以下命令

* * * * * curl http://你的域名/Cron

注意:如果网盘站点有SSL证书,也就是443端口,以https开头的话,相应的要把http改成https

第五步:修改相关权限

进入aria2c的文件路径,修改aria2c文件和aria2.conf的用户组

chown -R www:www aria2c文件路径
chown -R www:www aria2.conf文件路径
//www:www是根据我自己的情况而定,有些使用Caddy的,这里修改的是caddy:caddy

确保网盘的public/downloads和public/upload的权限是777,虽然一般在安装的时候已经设置好了,但是如果没有,就要运行以下命令:

chmod 777 网盘文件夹路径/public/downloads 网盘文件夹路径/public/upload

第六步:开启相关端口

上面提到了,这里就说一下,阿里云服务器搭建的,必须要先在控制台开放你自定的RPC端口,然后再去防火墙开放RPC端口,其他服务器直接防火墙即可。防火墙命令如下:

firewall-cmd --zone=public --add-port=自定的RPC端口号/tcp --permanent
//默认:firewall-cmd --zone=public --add-port=6800/tcp --permanent
firewall-cmd --reload //防火墙规则重载

部分机子可能装完LNMP之后会锁定防火墙,可以用以下命令先解锁并且启动http和https服务

systemctl unmask firewalld
firewall-cmd --permanent --add-service=http --add-service=https

无论设置了多少,设置了什么,都要记得重载一下防火墙:firewall-cmd --reload
防火墙的部分命令参考:关于建站时候的相关端口(80和443等)和相关服务(selinux)

第七步:测试是否使用

检测是否成功安装

aria2c –v //aria2的版本信息

检测是否能启动

/aria2c的文件路径/aria2c --conf-path=/配置文件路径/aria2.conf
//没有[ERROR]即为启动成功

检测是否能下载

aria2c https://pan.gxiaorz.top/Share/Download/3tq8rjbn
//没有not complete字样就证明可以下载

检测外网是否能连接

下载AriaNg,解压到D:\ProgramFiles\aria2(路径不能有错,多了个空格也会影响)
然后打开AriaNg.lnk
进入AriaNg 设置,选择第一个RPC
Aria2 RPC地址:输入你的服务器IP
RPC密钥:输入上面填在aria2.conf里面的rpc-secret=后面的内容

这时候右上角就会出现 配置已经修改,请重新加载页面使其生效 ,下面有个重启加载页面的按钮,重启过后,如果连接成功,就会在软件左侧的Aria2状态那里显示已连接,否则就是服务器的aria2.conf配置不对或者端口没打开。

第八步:配置Cloudreve后台

打开Cloudreve后台:域名/admin,找到离线下载进入

RPC Server:http://127.0.0.1:RPC端口
//RPC端口输入你自定义那个,我自己是默认6800

RPC Token:输入RPC密钥
//RPC密钥就是上面填在aria2.conf里面的`rpc-secret=`后面的内容

下载临时目录:站点文件夹/public/downloads
//这个就没什么解释的了,如果没有修改777权限一定要修改

其他下载参数:没什么必要添加
//其实就是在这里加入原写在aria2.conf配置文件里面内容,有需要最好直接在aria2.conf里面改

第九步:测试Cloudreve是否能用

在网盘页面点击有上的+号,选择离线下载,然后把一些下载链接放上去,点击新建下载任务
疑问排除:
Q1. 能成功建立下载,离线下载任务列表显示下载完成,但是找不到文件
A1. 原因在aria2c的用户组没有设置为和php-fpm的用户组一样,导致文件不能从下载目录移动到指定储存位置,先检查php-fpm的用户组是属于谁的,然后修改aria2c的用户组

Q2. 能建立下载链接,但是离线下载任务列表和完成列表都没有,也找不到文件
A2. 先检查Log,如果log没有什么实质的报错,那么就备份网盘内文件先重新安装一下Cloudreve,不要还原原来的数据库,也不要替换原来上传文件的文件夹,重新安装重新上传

Q3. 提示500报错,登录过期,请重新登录
A3. 这个暂时还没找到原因,还是先想Q2的解决方法那样做吧

Q4. 提示undefined
A4. 后台设置的配置信息错了,检查端口号和Token

Q5. 能建立连接,但是下载失败
A5. 后台信息的临时下载目录错了,临时下载目录是绝对路径,一定要完完整整的填写路径,不要缺斤少两,也不要多了字母。

我暂时就遇到那么多问题,剩下的有出现问题解决了再补充。
参考资料里面查阅论坛里面一些大神的讨论和官方解决方法吧。虽然有很多解决方法我试了最后都没弄好(除了改所有组这里)。说不定是我做的不对,有兴趣的可以根据他们的方法尝试一次。
特别鸣谢(虽然可能他看不到)在论坛上面回复我的大佬:Snowail

参考资料

  1. centos安装aria2
  2. 对接Aria2使用离线下载的方法
  3. Aria2离线下载 Error 500 - 请求失败,登录可能已过期,请重新登陆.
  4. 关于aria2下载文件的权限问题
  5. 关于aria2离线下载设置个人思路教程
  6. 关于“离线下载完成后,文件列表里不显示”的解决方案
  7. aria2(命令行下载器)使用
  8. Linux crontab定时执行任务 命令格式与详细例子
  9. 在linux环境下测试和使用aria2c