甲骨文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