甲骨文ARM配置Aria2+Cloudreve离线下载

前置设置:

1.首先确保甲骨文是Ubuntu 20 系统。

2.甲骨文开启BBR设置:

Debian 9/10一键开启Google BBR (Ubuntu20适用)

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

3.甲骨文每次重启后都需要修改防火墙设置:

#处理预设规则
iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited
/etc/init.d/netfilter-persistent save
/etc/init.d/netfilter-persistent reload

4.甲骨文以root账号登录,此时才能获得系统全部权限。

ubuntu 服务器默认的root账号是没有激活的,需要用初装的用户账号给root设置管理密码:

sudo passwd root   //用sudo修改root帐户
Password:   //输入密码
Enter new UNIX password:   //提示输入新的root帐户密码
Retype new UNIX password: //再输入一次确认密码

修改成功之后你就可以使用root账号了,可以使用 su root 命令切换到root。

但是碰到过一次情况,就是修改之后,直接用root账号无法登陆远程终端,这是还需要修改ssh配置文件:

vim /etc/ssh/sshd_config

按下键盘上的Insert键修改:

找到PermitRootLogin without-password 修改为 PermitRootLogin yes

找到PasswordAuthentication no 修改为PasswordAuthentication yes

按下键盘的Esc键,接着输入   :wq 保存并退出。

然后重启,设置以root账号和密码的方式登录。

 

1.Aria2安装配置

先安装基础组件wget、curl、ca-certificates

apt install wget curl ca-certificates

下载脚本

wget -N git.io/aria2.sh && chmod +x aria2.sh

运行脚本

./aria2.sh

安装完成后,Aria2 一键安装管理脚本会显示你的配置信息,把这些信息记下来。

Aria2 基本操作

启动:
/etc/init.d/aria2 start | service aria2 start
停止:
/etc/init.d/aria2 stop | service aria2 stop
重启:
/etc/init.d/aria2 restart | service aria2 restart
查看状态:
/etc/init.d/aria2 status | service aria2 status

配置文件路径:
/root/.aria2c/aria2.conf (配置文件有中文注释,若语言设置有问题会导致中文乱码)
默认下载目录:/root/downloads
RPC 密钥:随机生成,可使用选项7. 修改 配置文件自定义

Aria2 离线下载默认的保存路径是/root/download,你可以通过SFTP或者FTP进入目录文件夹查看,当然我们需要Cloudreve Aria2离线下载功能,稍后会演示如何在Cloudreve中对接Aria2。

2.MySQL数据库安装与配置

安装MySQL所需依赖

apt install lsb-release

下载最新的发行包

wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb

下载完成后,通过以下命令安装

dpkg -i mysql-apt-config_0.8.13-1_all.deb

你将会看到MySQL配置安装菜单,选择你要安装的版本。

默认选择了 MySQL 8.0,请选择 MySQL Server & Cluster(当前选择:mysql-8.0),然后选择对应的 MySQL 版本,通过按 Tab 键选择 “确定”,然后按 Enter 键。

更新软件包,并安装MySQL

apt update
apt install mysql-server

安装完成后,MySQL 服务会默认自动运行,我们可以通过以下命令查看服务运行状态:

systemctl status mysql

连接到MySQL服务器

mysql -uroot -p

这时输入设定的MySQL root 帐号密码(下文)连接成功后你将会看到类似如下内容:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.17 MySQL Community Server - GPL ... mysql>

Ubuntu的Mysql设置密码登录

登录 MySQL:

sudo mysql -u root

注意到这里没有使用密码。

下面运行以下命令,开启 mysql_native_password:

USE mysql;
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;
exit;

重启 MySQL:

sudo systemctl restart mysql.service

重置 root 密码:

sudo mysql_secure_installation

建议配置如下,其中会有一个设置密码强度的选项,选择 Low:

Enter current password for root (enter for none): 
Would you like to setup VALIDATE PASSWORD plugin?: Y
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Set root password?: Y
New password: Enter password
Re-enter new password: Repeat password
Remove anonymous users?: Y
Disallow root login remotely?: Y
Remove test database and access to it?:  Y
Reload privilege tables now?:  Y

现在无密码登录已经不允许了。

3.Nginx安装配置

一些依赖库

apt-get install gcc make
apt-get install gcc g++ make pcel
apt-get install libpcre3 libpcre3-dev 
apt-get install openssl libssl-dev
apt-get install zlib1g-dev

添加用户 用户组

groupadd -f www
useradd -g www www

下载源码、解压

wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -xzvf nginx-1.16.1.tar.gz

配置、编译、安装

cd nginx-1.16.1
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-http_gzip_static_module --with-http_sub_module --with-http_v2_module
make && make install

上传SSL证书,用于下一步开启https方式访问cloudreve站点
本示例存放SSL证书的路径为/usr/local/server (新建个文件夹就好,可自定义目录)

文件名:server.cert.pem 和server.key.pem ,直接修改SSL证书的.pem和.key文件,重命名。
上传证书笔者使用的是WinSCP,大家可根据自己的喜好方式上传证书。文件权限默认的0755即可。

适用于Cloudreve的nginx.conf(/usr/local/nginx/conf/nginx.conf)关键段代码,替换原文件server{}段的内容,并修改域名部分为你的域名:

#user  nobody;
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;
server {  
    listen 80;  
    server_name langui.fun;  
   
    rewrite ^(.*)$  https://$host$1 permanent;  
}
    server {

listen 443 ssl;
server_name www.langui.fun;
#charset koi8-r;
#access_log logs/host.access.log main;
ssl_certificate /usr/local/server/server.cert.pem;
ssl_certificate_key /usr/local/server/server.key.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:5212;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
root html;
index index.html index.htm;
client_max_body_size 4G;
keepalive_timeout 600;
}



        # 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;
    #    }
    #}

}

宝塔面板的网站配置文件如下:

server {  
    listen 80;  
    server_name 你的域名;  
   
    rewrite ^(.*)$  https://$host$1 permanent;  
}
    
    server {

listen 443 ssl;
server_name 你的域名;
#charset koi8-r;
#access_log logs/host.access.log main;
ssl_certificate /www/server/panel/vhost/cert/你的域名/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/你的域名/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:5212;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
root html;
index index.html index.htm;
client_max_body_size 4G;
keepalive_timeout 600;
}



        # 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;
        #}
    }    


    
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-00.conf;
    #PHP-INFO-END
    
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/你的域名.conf;
    #REWRITE-END

 

如果之后出现nginx 404页面,一定要重启nginx!!!!!!!!!!!!

重启nginx:

首先验证nginx配置文件是否正确,进入nginx安装目录sbin下,cd /usr/local/nginx/sbin/输入命令./nginx -t

看到如下显示nginx.conf syntax is ok

nginx.conf test is successful

说明配置文件正确!

查看进程号重启

ps -ef|grep nginx 查找当前nginx进程号,然后输入命令:kill -HUP 1403  (进程号,第一个数字!!!) 实现关闭nginx服务

在nginx.conf中对应处替换完后,别忘了在你的域名解析网站中把你的域名解析到VPS的IP地址。

之后输入启动命令:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

4.Cloudreve部署

获取 Cloudreve
你可以在 GitHub Release 页面获取已经构建打包完成的主程序。其中每个版本都提供了常见系统架构下可用的主程序,命名规则为cloudreve_版本号_操作系统_CPU架构.tar.gz 。比如,普通64位Linux系统上部署3.4.1版本,则应该下载cloudreve_3.4.1_linux_arm64.tar.gz。捐赠版直接上传到根目录。

到根目录
cd /
 
下载Cloudreve
wget https://github.com/cloudreve/Cloudreve/releases/download/3.4.1/cloudreve_3.4.1_linux_arm64.tar.gz
 
解压获取到的主程序
tar -zxvf cloudreve_3.4.1_linux_arm64.tar.gz
 
赋予执行权限
chmod +x ./cloudreve 

 

进程守护
编辑配置文件:要在winscp目录里新建system文件夹!!

vim /usr/lib/systemd/system/cloudreve.service

将下面的内容保存到cloudreve.service

[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target
After=mysql.service
Wants=network.target
 
[Service]
WorkingDirectory=//
ExecStart=//cloudreve
Restart=on-abnormal
RestartSec=5s
KillMode=mixed
 
StandardOutput=null
StandardError=syslog
 
[Install]
WantedBy=multi-user.target

更新配置、开机自启

# 更新配置
systemctl daemon-reload
# 启动服务
systemctl start cloudreve
# 设置开机启动
systemctl enable cloudreve

一些管理命令(以后管理的时候会用到)

# 启动服务
systemctl start cloudreve
# 停止服务
systemctl stop cloudreve
# 重启服务
systemctl restart cloudreve
# 查看状态
systemctl status cloudreve

解决使用systemctl无法开机自启动问题

使用了mySQL数据库可能导致cloudreve无法自启动成功
(原因是赶在了mysql之前启动会导致启动失败)

使用以下指令

vim /usr/lib/systemd/system/cloudreve.service

(适用于CentOS:其它系统可能路径不同)

在【Unit】模块下加入字段(在mysql之后启动的意思)
After=mysqld.service

示例:

[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target
Wants=network.target

After=mysqld.service

[Service]
WorkingDirectory=/你的安装目录
ExecStart=/你的安装目录/cloudreve
Restart=on-abnormal
RestartSec=5s
KillMode=mixed

StandardOutput=null
StandardError=syslog

[Install]
WantedBy=multi-user.target

结束

先启动:

cd / 
./cloudreve

会在同级目录下创建名为conf.ini的配置文件,打开它,在代码后面加上(这里的Password要改成自己的mysql密码!!!):

[Database]
Type = mysql
Port = 3306
User = root
Password = 123456
Host = 127.0.0.1
Name = cloudreve
TablePrefix = cd_

然后新建数据库,输入:

sudo mysql -u root -p

输入密码登录。

创建Cloudreve数据库

create database cloudreve character set utf8mb4 collate utf8mb4_bin;

查看数据库

show databases;

刷新数据库设置:

FLUSH PRIVILEGES;

此时Cloudreve数据库已经创建完毕。

先停止cloudreve:

systemctl stop cloudreve

再启动:

cd /
./cloudreve

这次启动时,会重新创建初始管理员账号,请注意保管管理员密码,此密码只会在首次启动时出现。

然后就可以删除根目录自带的cloudreve.db

保存好初始密码之后,ctrl+c后,以后就需要使用后台启动的命令来启动:

systemctl start cloudreve

如果您忘记初始管理员密码,需要删除同级目录下的cloudreve.db和conf.ini,重新启动主程序,重新上述操作。

Cloudreve 默认会监听5212端口。
重新安装之后,便启用mysql数据库,cloudreve.db可以删除了。

以上步骤操作完后,最简单的部署就完成了。你可能需要一些更为具体的配置,才能让Cloudreve更好的工作,具体流程请参考下面的配置流程。

PS:如果出现数据库错误,应该先删除数据库!

sudo mysql -u root -p
DROP DATABASE cloudreve;

ps:删除数据库命令:DROP DATABASE IF EXISTS cloudreve

然后停止cloudreve,再启动。

Cloudreve对接Aria2
前往 Cloudreve 的 管理面板-参数设置-离线下载,根据指引填写信息并测试是否可以与aria2正常通信。
对于其中重要参数项的解释如下:

RPC 服务器地址
Aria2 RPC 服务器的地址,一般可填写为http://127.0.0.1:6800/ 。其中6800 为上文 Aria2 配置文件中指定的监听端口。您可以使用 WebSocket 通信,此处填写为ws://127.0.0.1:6800/ 。

RPC Secret
上文中您在 Aria2 配置文件中设定的 RPC 授权令牌

临时下载目录
Cloudreve 会指定 Aria2 将文件下载到此目录中,下载完成后 Cloudreve 会复制到指定的存储策略,并删除文件。此目录必须为绝对路径,否则 Cloudreve 在任务下载完成后会找不到文件,建议下载目录设定为/root/downloads

状态刷新间隔(秒)
指定针对每一个任务,Cloudreve 向 Aria2 轮询更新任务状态的间隔。用户再前台看到的任务进度不会实时更新,而是根据这里设定的间隔自动刷新。

至此Cloudreve对接Aria2完毕,大家还需要在Cloudreve面板里设置存储策略,这里就不再过多介绍。


常见问题:

1.上传目录文件过大,显示 entity too large:

在nginx.conf文件,location 括号里加入

client_max_body_size 4G;
keepalive_timeout 600;

保存后,进入nginx安装目录sbin下,输入命令./nginx -t  测试nginx.conf文件配置是否正确。

看到如下显示nginx.conf syntax is ok

nginx.conf test is successful

说明配置文件正确!

强制停止nginx

pkill -9 nginx

再启动nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

2.后台设置cloudreve存储策略时选重命名!!!

3.备份cloudreve数据库命令:

cd /
mysqldump -uroot -p数据库密码 -P3306 cloudreve > 数据库名.sql