Centos7下Cloudreve V3版安装及测试

关于V3

Cloudreve V3是一款支持通用云存储驱动的公有云文件系统网盘程序,以web形式管理,可在几分钟内帮助您构建自己的云。提供免费版及收费版本,目前很多网盘程序,均采用Cloudreve进行架构。
具有以下特色:
支持本机,从机,七牛,阿里云OSS,腾讯云COS,又拍云,OneDrive(包括世纪互联版)作为存储端
发布/下载支持客户端直传,支持下载限速
可对接Aria2离线下载
在线压缩/解压缩,多文件打包下载
覆盖全部存储策略的WebDAV协议支持
拖拽上传,目录上传,流式上传处理
文件拖拽管理
‍多用户,用户组
创建文件,目录的共享链接,可设置自动过期
视频,图像,音频,文本,Office文档在线预览
自定义配色,黑暗模式,PWA应用,全站单页应用
多合一打包,开箱即用
在沉寂将近一年后推出了全新的V3版本,曾经在本站介绍过V2版本,是基于php+mysql开发的。V3版本直接重构,采用go语言开发,直接将所有文件及环境打包成程序,大大降低了使用者的门槛,真正做到了3分钟即可部署一个公、私均可使用的网盘环境,并且用的全部是自己的壳子,摒弃了phpthink,安全性会更高。同时文件仅有一个,这就让Win系统临时搭建网盘简单易行,基本上一个U盘即可搭建一个公司的多用网盘系统。不过同样的,作为长久的生产系统,PHP+MYSQL比较适合网站。

关于V2版本请看这里https://shikey.com/2019/05/28/using-cloudreve-to-set-up-multi-user-private-cloud.html

项目地址:https://github.com/cloudreve/Cloudreve

项目文档:https://docs.cloudreve.org/

打包编译好的下载地址:https://github.com/cloudreve/Cloudreve/releases

源码地址:https://github.com/cloudreve/Cloudreve

《Centos7下Cloudreve V3版安装及测试》

编译安装(非必须)

注:这个完全是喜欢折腾的人才搞的飞机哈,时间比较少,不喜欢折腾的小伙伴,直接看快速编译即可,因为官方已经编译好了。
当然了没有你的系统的话,你只能手动编译了,目前有linux32位和64位,win系统64位的。如果你想修改程序的某些参数的话,例如标题、css文件等等,那么你就需要自行编译了。

安装依赖环境

使用yum安装,比较简单,将来更新也会方便点。本人用的是centos7-64BIT系统,采用的是PR的主机。

#升级yum
yum update

#安装下yum的epel源

yum install epel-release

安装Golang

#安装go环境,要求Go >= 1.13
#先输入go version命令查看下版本,如果有并且版本比1.13高,跳到下一步。如果没有执行以下命令安装
yum install golang
#安装完继续执行go version
#go1.13.6 linux/amd64,证明安装完毕且版本符合

《Centos7下Cloudreve V3版安装及测试》

安装yarn

#如果你的环境已经安装了node.js运行以下命令安装即可
curl –silent –location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
#如果你的环境没有安装node.js,例如我基本上是全新环境,执行以下命令
curl –silent –location https://rpm.nodesource.com/setup_8.x | sudo bash –
#再执行以下命令即可
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
#yum安装
sudo yum install yarn
#最后运行下,测试看看安装好了没,以及环境变量是否添加
yarn –version
1.22.4

贴出我的安装图片,每个人环境不一样,可能提示也不一样,甚至需要的东西都不一样,可能环境集成的好坏差异,供参考
《Centos7下Cloudreve V3版安装及测试》

《Centos7下Cloudreve V3版安装及测试》

《Centos7下Cloudreve V3版安装及测试》

安装statik打包工具

go get github.com/rakyll/statik

开始构建

克隆代码

centos6可能需要升级git

git clone --recurse-submodules https://github.com/cloudreve/Cloudreve.git

构建静态资源

# 进入前端子模块
cd assets
# 安装依赖
yarn install
# 开始构建
yarn run build

完成后,所构建的静态资源文件位于 assets/build 目录下。

你可以将此目录改名为statics 目录,放置在 Cloudreve 主程序同级目录下并重启 Cloudreve,Cloudreve 将会使用此目录下的静态资源文件,而非内置的。

嵌入静态资源

# 回到项目主目录
cd ../​
# 安装 statik, 用于嵌入静态资源
go get github.com/rakyll/statik
​
# 开始嵌入
statik -src=assets/build/  -include=*.html,*.js,*.json,*.css,*.png,*.svg,*.ico -f

#如果在嵌入时找不到statik 命令,请尝试设置一个环境变量
export PATH=$PATH:$(go env GOPATH)/bin

编译项目

# 获得当前版本号、Commit
export COMMIT_SHA=$(git rev-parse --short HEAD)
export VERSION=$(git describe --tags)
# 开始编译
go build -a -o cloudreve -ldflags " -X 'github.com/HFO4/cloudreve/pkg/conf.BackendVersion=$VERSION' -X 'github.com/HFO4/cloudreve/pkg/conf.LastCommit=$COMMIT_SHA'"

首次编译时,Go 会下载相关依赖库,如果您的网络环境不佳,可能会导致这一步速度过慢或者失败。你可以使用 GOPROXY.IO 加快模块下载速度。

编译完成后,会在项目根目录下生成最终的可执行文件cloudreve

构建助手

你可以使用项目根目录下的构建脚本build.sh 快速完成构建、打包等操作,使用方法如下

./build.sh  [-a] [-c] [-b] [-r]
    a - 构建静态资源
    c - 编译二进制文件
    b - 构建前端 + 编译二进制文件
    r - 交叉编译,构建用于release的版本

交叉编译

交叉编译前,你需要启用CGO ,正确安装目标平台的 GCC 工具链,并将CC 环境变量设定为对应平台的GCC 编译工具。

比如,在 Linux/AMD64 宿主平台上交叉编译 Windows/AMD64:

export GOOS=windows
export GOARCH=amd64
export CC=x86_64-w64-mingw32-gcc
export CGO_ENABLED=1
​
go build

快速部署

创建目录

先创建目录,并进入

#创建一个存放Cloudreve程序的目录,我这样创建是为了将来搭建网站环境反代程序的
mkdir
-p /www/web && cd /www/web

下载程序

选择你对应的版本(也可以用git,我环境没装算了),下载
官方地址:https://github.com/cloudreve/Cloudreve/releases

#现在还是测试版,我选择的是V3-beta3,我去竟然还win64位的
wget  https://github.com/cloudreve/Cloudreve/releases/download/3.0.0-beta3/cloudreve_3.0.0-beta3_linux_amd64.tar.gz

解压源码

tar -zxvf cloudreve_3.0.0-beta3_linux_amd64.tar.gz

给程序赋权

chmod +x ./cloudreve

参考图片

《Centos7下Cloudreve V3版安装及测试》

启动程序

启动cloudreve程序,在启动前最好先放行5212端口如何放行下面有,(暂时先不要去添加系统变量、开机启动之类,先调试好再去搞也来得及)

./cloudreve

《Centos7下Cloudreve V3版安装及测试》

故障排查

这个时候在浏览器打开你的网站应该就可以了,如果不可以请继续向下看(PR带的系统是默认端口是关闭的,但是搬瓦工是开启的)

#我的提示是5212端口,不知道你们的是不是
http://xxx.xxx.xxx.xxx:5212/

如果在浏览器打不开,应该是防火墙没打开,这个时候应该查看下端口,我就是这个原因。
先按住Ctrl+C先临时退出cloudreve

#查看开放的端口:
firewall-cmd --list-ports
#放行5212端口
firewall-cmd --zone=public --add-port=5212/tcp --permanent
#重启防火墙以便生效
systemctl restart firewalld.service
#注意:因为第一次运行都会创建管理员帐号,所以你第一次运行失败的话,就必须进入同目录下将cloudreve.db文件删除




#之后再重新运行cloudreve .
/cloudreve

《Centos7下Cloudreve V3版安装及测试》

此时候再打开浏览器应该就可以了。

注意第一次运行的时候会有点卡,没有缓存等。

打开浏览器输入上面的账户和密码登录即可。

《Centos7下Cloudreve V3版安装及测试》

功能预览

存储策略

《Centos7下Cloudreve V3版安装及测试》

离线下载

《Centos7下Cloudreve V3版安装及测试》

带多用户系统及组权限

《Centos7下Cloudreve V3版安装及测试》

后台运行及开机启动

官方文档上给出了两个方案一个是systemctl管理(centos7版本自带的,我肯定选这个),另外一个是通过Supervisor管理,这个需要先安装Supervisor。

两个方案二选一即可,我推荐centos7的用户选择systemctl去管理。

systemctl

新建一个cloudreve.service,添加到开机启动项里面就可以了,我不喜欢用vim命令,所以我本地建好了直接传上去的(不推荐,编码弄错会启动不了的)。怎么用都行,自己开心就好。

用Vim直接创建编辑

# 编辑配置文件
vim /usr/lib/systemd/system/cloudreve.service

cloudreve.service文件内容,记得把路径替换成你自己的文件路径。自己本机创建好cloudreve.service传到/usr/lib/systemd/system/这个目录下面,可能需要权限。
PS:官方给的配置文件少什么了一个service的类型,就是红色字体的那个地方

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

注:这里有个小插曲,我按照官方文档配置,总是启动不了,搞了4次还是不能启动,程序单独运行就无问题,没有办法只能挑个service文件下载下来改下传上去了。后来对比下发现少什么了一个Type

更新重启服务

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

管理命令

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

《Centos7下Cloudreve V3版安装及测试》

Supervisor

首先安装supervisor,已安装的可以跳过

# 安装 supervisor
sudo yum install python-setuptools
sudo easy_install supervisor
​
# 初始化全局配置文件
sudo touch /etc/supervisord.conf
sudo echo_supervisord_conf > /etc/supervisord.conf

编辑全局配置文件:

sudo vim /etc/supervisord.conf

将文件底部的[include] 分区注释符号;删除,加入新的配置文件包含路径:

[include]
files = /etc/supervisor/conf/*.conf

创建 Cloudreve 应用配置所在文件目录,并创建打开配置文件:

sudo mkdir -p /etc/supervisor/conf
sudo vim /etc/supervisor/conf/cloudreve.conf

根据实际情况填写以下内容并保存:

[program:cloudreve]
directory=/home/cloudreve
command=/home/cloudreve/cloudreve
autostart=true
autorestart=true
stderr_logfile=/var/log/cloudreve.err
stdout_logfile=/var/log/cloudreve.log
environment=CODENATION_ENV=prod

其中以下配置项需要根据实际情况更改:

directory: Clopudreve 主程序所在目录

command: Cloudreve 主程序绝对路径

stderr_logfile: 错误日志路径

stdout_logfile: 通常日志路径

通过全局配置文件启动supervisor:

supervisord -c /etc/supervisord.conf

管理 Cloudreve 进程:

# 启动
sudo supervisorctl start cloudreve
​
# 停止
sudo supervisorctl stop cloudreve
​
# 查看状态
sudo supervisorctl status cloudreve

反向代理

在自用或者小规模使用的场景下,你完全可以使用 Cloudreve 内置的 Web 服务器。但是如果你需要使用HTTPS,亦或是需要与服务器上其他 Web 服务共存时,你可能需要使用主流 Web 服务器反向代理 Cloudreve ,以获得更丰富的扩展功能。

你需要在Web服务器中新建一个虚拟主机,完成所需的各项配置(如启用HTTPS),然后在网站配置文件中加入反代规则:

以Nginx为例子,在网站的server字段中加入:

location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:5212;
}

其他问题

1、Win系统下,直接下载解压,在CMD内输入即可运行。

2、端口修改,在程序砼目录下,打开conf.ini,修改把5212替换成你想要的端口即可,记得换完之后要设置防火墙。

[System]

Mode = master

Listen = :5212

SessionSecret = 系统生成

HashIDSalt = 系统生成

3、密码忘记怎么办

直接删除程序同目录下的cloudreve.db文件,之后手动运行下程序就可以重新创建。

4、文件配置

首次启动时,Cloudreve 会在同级目录下创建名为conf.ini的配置文件,你可以修改此文件进行一些参数的配置,保存后需要重新启动 Cloudreve 生效。

你也可以在启动时加入-c参数指定配置文件路径,有点类似于frp的用法:

./cloudreve -c /path/to/conf.ini

其中完整的conf.ini文件如下

[System]
; 运行模式
Mode = master
; 监听端口
Listen = :5000
; 是否开启 Debug
Debug = false
; Session 密钥, 一般在首次启动时自动生成
SessionSecret = 23333
; Hash 加盐, 一般在首次启动时自动生成
HashIDSalt = something really hard to guss
​
; 数据库相关,如果你只想使用内置的 SQLite数据库,这一部分直接删去即可
[Database]
; 数据库类型,目前支持 sqlite | mysql
Type = mysql
; 用户名
User = root
; 密码
Password = root
; 数据库地址
Host = 127.0.0.1
; 数据库名称
Name = v3
; 数据表前缀
TablePrefix = cd
​
; 从机模式下的配置
[Slave]
; 通信密钥
Secret = 1234567891234567123456789123456712345678912345671234567891234567
; 回调请求超时时间 (s)
CallbackTimeout = 20
; 签名有效期
SignatureTTL = 60
​
; 跨域配置
[CORS]
AllowOrigins = *
AllowMethods = OPTIONS,GET,POST
AllowHeaders = *
AllowCredentials = false
​
; Redis 相关
[Redis]
Server = 127.0.0.1:6379
Password =
DB = 0
​
; 从机模式缩略图
[Thumbnail]
MaxWidth = 400
MaxHeight = 300
FileSuffix = ._thumb

使用 MySQL

默认情况下,Cloudreve 会使用内置的 SQLite 数据库,并在同级目录创建数据库文件cloudreve.db,如果您想要使用 MySQL,请在配置文件中加入以下内容,并重启 Cloudreve。

[Database]
; 数据库类型,目前支持 sqlite | mysql
Type = mysql
; 用户名
User = root
; 密码
Password = root
; 数据库地址
Host = 127.0.0.1
; 数据库名称
Name = v3
; 数据表前缀
TablePrefix = cd

更换数据库后,所有的数据将会丢失,建议一开始使用的时候就及时配置

使用 Redis

[Redis]
Server = 127.0.0.1:6379
Password = your password
DB = 0

记得把数据库添加进去

发表回复