Logo

Office 365世纪互联商业版 简介

大侠1-2021-03-18 12 Views 0 Comment
BusinessIMG

Cloudreve是一个支持多种存储方案的云盘系统,可以很方便地搭建一个属于自己的云盘。

最近Cloudreve有一次大更新,将v2版本升级到了v3版本,由原来的ThinkPHP ,更换成了Go版本,将前后端整合为一个可执行文件,直接运行就可以,十分方便。

但有利也有弊,这对于一些需要修改源码的人不太友好,尤其是不太熟悉Go的(例如博主)。

认真研究的话,其实还好,需要熟悉Cloudreve v3前后端的基本组成,以及对material-ui有基本的认识。


博主使用系统:Centos7 amd64

博主在本地虚拟机使用Centos7编译好之后上传到服务器上(Ubuntu)就可以使用了。

必备环境:Go+Node.js+Yarn+statik 命令行工具

Cloudreve 项目主要由两部分组成:后端主仓库 cloudreve/Cloudreve,以及前端仓库 cloudreve/frontend 。编译 Cloudreve 后端前,需要先构建assets 目录下的前端子模块,并使用statik嵌入到后端仓库。


Step.1-安装Node.js

我们可以使用epel-release安装Node

1

2

sudo yum install epel-release

sudo yum install nodejs

然后使用

1

node --version

检查一下是否安装成功。

这个时候我们通过epel安装的node版本比较旧,达不到Cloudreve编译的要求,我们使用:

1

n 10.3.0 stable

来将node升级到10.3.0即可。


Step.2-安装Yarn

我们可以通过 RPM 包仓库安装 Yarn:

1

curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo

然后输入:

1

curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -

之后使用

1

sudo yum install yarn

即可简单地将yarn安装完成了。

我们使用

1

yarn --version

来看看yarn是否安装成功。


Step.3-安装Go

首先在 ~ 下创建 go 文件夹,并进入 go 文件夹


1

mkdir ~/go && cd ~/go

然后在Golang官网下载地址选择适合你系统的Go版本,博主这里选择的是go1.14.1.linux-amd64.tar.gz

下载安装包:


1

wget https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz

然后解压到/usr/loacl目录下:


1

tar -C /usr/local -zxvf  go1.14.1.linux-amd64.tar.gz

然后添加/usr/loacl/go/bin目录到PATH变量中


1

vim /etc/profile

在最后一行加入:


1

2

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin

:wq保存后,使用


1

source /etc/profile

使配置生效。

最后使用


1

go version

来看看Go是否安装成功。


Step.4-安装statik 命令行工具

一句命令搞定:


1

go get github.com/rakyll/statik



Step.5-下载&修改Cloudreve源码

首先安装git工具(已安装请忽视),然后克隆GitHub上的源码:

1

yum install git -y


1

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

然后我们

1

cd Cloudreve

assets里面的就是前端的源码,一般我们只需修改assets文件夹里面的即可。

由于Cloudreve前端是使用material-ui的,大家可以自行去material-ui官网,里面有比较详细的例子和教程,相信花时间琢磨一下是不难的。

修改好前端源码之后我们安装一下依赖。

1

2

3

4

# 进入前端子模块

cd assets

# 安装依赖

yarn install



Step.6-构建&编译

在assets目录下,我们使用

1

yarn run build

来构建修改好的前端的代码。

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

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

然后我们开始嵌入静态资源:


1

2

3

4

5

6

7

8

# 回到项目主目录

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

之后,我们就可以编译可执行文件了:


1

2

3

4

5

6

# 获得当前版本号、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 。

然后我们将cloudreve 这个可执行文件上传到服务端或者生产环境中,就可以使用了。(注意系统架构要相同)


Step.7-修改和一键编译篇

当我们需要再次修改源码时,我们又要重新执行上面的一大串步骤重新编译可执行文件。

为此,博主整理了一下更方便的方法(其实也就是将前面的命令整合在一起,不用一条一条输入而已2333):

在Cloudreve目录下(也就是存在可执行文件的那个目录下),输入以下代码即可快速重新构建新的可执行文件并自动测试执行:

1

cd assets&&rm -rf /home/test2/Cloudreve/assets/build&&yarn run build&&cd ../&&export PATH=$PATH:$(go env GOPATH)/bin&&statik -src=assets/build/  -include=*.html,*.js,*.json,*.css,*.png,*.svg,*.ico -f&&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'"&&./cloudreve



Tips-修改教程提示

如需修改边栏代码(增加按钮项),可修改assets/src/component/Navbar/Navbar.js文件

在对应位置仿照格式增添/修改即可,如:

<ListItem
button
key="菜单A"                   #新的边栏名称
onClick={() => this.props.history.push("/XXX")} #onClick事件绑定,路由到指定地址(可使用window.location.href = 'http://fxit.top'跳出程序,跳转外部链接)
>
<ListItemIcon>
<AppsIcon                     #引入了对应的图标
className={classes.iconFix}   #这里是对引入的图标修改大小格式
/>
</ListItemIcon>
<ListItemText primary="菜单A" />     #新的边栏名称
</ListItem>


分享到:
0

访客留言

0.137220s