manjaro 下初次部署Cloudreve全记录(非root用
什么是cloudreve
cloudreve是github上开源的网盘系统。
官网
源码
地址:https://github.com/cloudreve/Cloudreve
cloudreve部署
环境:manjaro cli ( archlinux)
由于我平时使用的都是非root用户,下面用户名都用'[username]'代替,使用前请替换成自己的用户名。
下载
下载对应平台的发行版:cloudreve_3.1.1_linux_amd64.tar.gz
安装mysql
1.安装
sudo pacman -S mysql
2.初始化
sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql
3.启用
sudo systemctl start mysqld
4.安全设置
sudo mysql_secure_installation
这里最后要设置root的密码,需要牢记,之后要使用,下面用'[mysql_db_root_passwd]'替代,使用前需替换成自己的密码。
5.创建数据库
先登录:
mysql -h localhost -P 3306 -u root -p[mysql_db_root_passwd]
再创建数据库:
CREATE DATABASE `cloudreve` CHARACTER SET utf8 COLLATE utf8_general_ci;
退出登录:
quit
安装aria2
1.安装
sudo pacman -S aria2
2.创建配置文件
sudo mkdir /etc/aria2
sudo chown [username] /etc/aria2 -R
touch /etc/aria2/aria2.conf
touch /etc/aria2/aria2.session
由于我平时使用的都是非root用户,上面用户名都用'[username]'代替,使用前请替换成自己的用户名
编辑配置文件
vim /etc/aria2/aria2.conf
内容如下:
#设置下载目录
dir=/home/[username]/cloudreve/Downloads
#关闭ipv6
disable-ipv6=true
#打开rpc的目的是为了给web管理端用
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
rpc-listen-port=6800
#断点续传
continue=true
input-file=/etc/aria2/aria2.session
save-session=/etc/aria2/aria2.session
#最大同时下载任务数
max-concurrent-downloads=20
save-session-interval=120
# Http/FTP 相关
connect-timeout=120
#lowest-speed-limit=10K
#同服务器连接数
max-connection-per-server=10
#max-file-not-found=2
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
check-certificate=false
#http-no-cache=true
3.配置服务
sudo vim /usr/lib/systemd/system/aria2.service
内容如下:
[Unit]
Description=Aria2 Service
After=syslog.target network.target
[Service]
Type=simple
User=[username]
ExecStart=/usr/bin/aria2c --enable-rpc --rpc-listen-all --rpc-allow-origin-all --save-session /etc/aria2/aria2.session --input-file /etc/aria2/aria2.session --conf-path=/etc/aria2/aria2.conf
Restart=always
[Install]
WantedBy=multi-user.target
由于我平时使用的都是非root用户,上面用户名都用'[username]'代替,使用前请替换成自己的用户名
安装nginx
1.安装
sudo pacman -S nginx
2.修改配置
sudo vi /etc/nginx/nginx.conf
主要修改3个地方:
1.运行用户: user [username];
2.进程数: worker_processes 4;
这个数量推荐与cpu线程数目相同。
3.服务:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
autoindex on;
proxy_pass http://localhost:5200;
client_max_body_size 102400m;
}
location = /static/ {
# 这里的root设置的目录是cloudreve的静态文件目录
root /home/[username]/cloudreve/statics/;
autoindex on;
}
}
由于我平时使用的都是非root用户,上面用户名都用'[username]'代替,使用前请替换成自己的用户名。
安装cloudreve
1.创建工作文件夹
mkdir /home/[username]/cloudreve
2.复制&解压
复制下载好的发行版压缩文件到文件夹
cp cloudreve_3.1.1_linux_amd64.tar.gz /home/[username]/cloudreve/
解压
cd /home/[username]/cloudreve
tar -xvf cloudreve_3.1.1_linux_amd64.tar.gz
由于我平时使用的都是非root用户,上面用户名都用'[username]'代替,使用前请替换成自己的用户名
3.首次运行测试
sudo chmod +x ./cloudreve
./cloudreve
首次运行会打印监听端口、用户名和密码,用浏览器登录测试,没问题进行下一步。
4.修改配置文件
vim ./conf.ini
主要修改两个位置:
1.修改监听 Listen = :5200
2.修改数据库,在后面添加:
[Database]
; 数据库类型,目前支持 sqlite | mysql
Type = mysql
; MySQL 端口
Port = 3306
; 用户名
User = root
; 密码
Password = [mysql_db_root_passwd]
; 数据库地址
Host = localhost
; 数据库名称
Name = cloudreve
; 数据表前缀
TablePrefix = cd
上面用'[mysql_db_root_passwd]'替代mysq的root用户的密码,使用前需替换成自己的密码。
完整实例如下:
[System]
Mode = master
Listen = :5200
Debug = false
SessionSecret = [SessionSecret]
HashIDSalt = [HashIDSalt]
[Database]
Type = mysql
Port = 3306
User = root
Password = [mysql_db_root_passwd]
Host = localhost
Name = cloudreve
TablePrefix = cd
上面的[SessionSecret]和[HashIDSalt]代替,在第一次启动生成的配置文件中已经自动生成,无需修改。
面用'[mysql_db_root_passwd]'替代mysq的root用户的密码,使用前需替换成自己的密码。
删除无用的sqlite生成的cloudreve.db
rm cloudreve.db
5.再次测试运行
./cloudreve
首次运行会打印监听端口、用户名和密码,如果监听端口已经修,说明配置文件已经生效,用浏览器登录测试,没问题进行下一步。
需要注意的是这次的用户名和密码要牢记
6.再次修改配置文件
修改 Listen = localhost:5200
7.导出静态文件
./cloudreve -eject
这个命令,会生成一个叫statics的文件夹,在我的服务器上绝对路径:/home/[username]/cloudreve/statics/也就是nginx配置文件中静态资源代理的root,这里需要注意对应修改好。
8.配置服务
sudo vim /usr/lib/systemd/system/cloudreve.service
内容如下:
[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target mysqld.service aria2.service
Wants=network.target aria2.service
[Service]
User=[username]
WorkingDirectory=/home/[username]/cloudreve
ExecStart=/home/[username]/cloudreve/cloudreve
Restart=on-abnormal
RestartSec=5s
KillMode=mixed
StandardOutput=null
StandardError=syslog
[Install]
WantedBy=multi-user.target
由于我平时使用的都是非root用户,上面用户名都用'[username]'代替,使用前请替换成自己的用户名
9.再次测试
systemctl daemon-reload
systemctl start aria2
systemctl start mysql
systemctl start cloudreve
systemctl start nginx
再次在浏览器中访问不带端口(默认80)的ip地址,输入上次记录的用户名、密码,测试功能。
10.设置开机启动
systemctl enable aria2
systemctl enable mysql
systemctl enable cloudreve
systemctl enable nginx
重启服务器,测试功能
后续
以上就是对我本次部署过程的总结,后续参考手册https://docs.cloudreve.org/,进行设置优化就好了。
设置需要注意以下几点:
1.站点信息-->url一定要设置准确
2.’离线下载-->临时下载目录’要与aria2配置文件中的dir相一致
3.在’用户‘中修改的密码,一定要记住! * _*
踩的一些坑
安装过程一开始也不是一帆风顺的,中间遇到了几个坑,记录如下:
1.权限问题
aria2 --- nginx --- cloudreve --- 用户文件
四者默认的启动用户是不同的,造成无权限访问文件或文件夹的问题。
为了方便我将所有的启动用户都设置成了我的登录用户:
1.aria2和cloudreve是在服务的脚本里添加
User=用户名
来控制启动的用户`
2.nginx在配置文件中可以设置
user [username];
3.而用户创建的文件原本的所有者就是用户自己不需要修改
4.用sudo创建的aria2的配置文件通过
sudo chown 用户名 /etc/aria2 -R
将所有者改为用户
2.上传文件一直卡在‘处理中’
经过分析这个问题是nginx导致的,nginx上传文件控制了大小,在配置中添加client_max_body_size 102400m;
即:最大上传大小100GB。这个可以根据实际需要进行设置。
3.手动启动没问题,但开机自启动失败
经过分析这个是启动顺序出错导致的。
首先服务脚本所在目录具有不同的优先级。aria2在通过用户启动时,如果放到/etc/systemd/system/目录优先级过高,往往由于一些关键服务没有加载或after没有完全声明,造成不能一次就启动成功。将aria2放到/usr/lib/systemd/system/目录中完全足够。
这几个模块之间也有启动顺序,cloudreve要在mysql和aria2之前启动,所以我添加了:
After=network.target mysqld.service aria2.service
Wants=network.target aria2.service
在cloudreve的服务脚本中。
4.邮件无法发送
网易126提示:554, b'DT:SPM 126 smtp6......
这个是网易邮箱检测到邮件是恶意/垃圾邮件内容,拒绝发送。
我尝试修改模板,就算发几个字都不行,所以我又注册了一个新浪邮箱,所有问题都解决了!
唯一美中不足的就是,发送的邮件要到垃圾箱中才能找到,果然是垃圾邮件啊。。。
新浪邮箱配置如下:
服务器:smtp.sina.com
端口:465
用户名:邮箱地址
密码:生成的授权吗
5.不能获取gravatar头像
‘参数设置-->图像处理’中的Gravatar服务器地址改成国内的:https://cn.gravatar.com/
并且在https://cn.gravatar.com/中注册帐号,并且邮箱对应有头像时,才能使用gravatar头像。