本文迁移自老博客,原始链接为 https://blog.fxit.top/?p=1074
注意,该文章排版可能存在兼容问题,建议配合旧版本博客食用~
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
sudo yum install epel-release
sudo yum install nodejs
然后使用
node --version
检查一下是否安装成功。
这个时候我们通过epel安装的node版本比较旧,达不到Cloudreve编译的要求,我们使用:
n 10.3.0 stable
来将node升级到10.3.0即可。
Step.2-安装Yarn
我们可以通过 RPM 包仓库安装 Yarn:
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
然后输入:
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
之后使用
sudo yum install yarn
即可简单地将yarn安装完成了。
我们使用
yarn --version
来看看yarn是否安装成功。
Step.3-安装Go
首先在 ~ 下创建 go 文件夹,并进入 go 文件夹
mkdir ~/go && cd ~/go
然后在Golang官网下载地址选择适合你系统的Go版本,博主这里选择的是go1.14.1.linux-amd64.tar.gz。
下载安装包:
wget https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz
然后解压到/usr/loacl目录下:
tar -C /usr/local -zxvf go1.14.1.linux-amd64.tar.gz
然后添加/usr/loacl/go/bin目录到PATH变量中
vim /etc/profile
在最后一行加入:
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
:wq
保存后,使用
source /etc/profile
使配置生效。
最后使用
go version
来看看Go是否安装成功。
Step.4-安装statik 命令行工具
一句命令搞定:
go get github.com/rakyll/statik
Step.5-下载&修改Cloudreve源码
首先安装git工具(已安装请忽视),然后克隆GitHub上的源码:
yum install git -y
git clone --recurse-submodules https://github.com/cloudreve/Cloudreve.git
然后我们
cd Cloudreve
assets里面的就是前端的源码,一般我们只需修改assets文件夹里面的即可。
修改好前端源码之后我们安装一下依赖。
Step.6-构建&编译
在assets目录下,我们使用
yarn run build
来构建修改好的前端的代码。
完成后,所构建的静态资源文件位于assets/build 目录下。
然后我们开始嵌入静态资源:
之后,我们就可以编译可执行文件了:
Step.7-修改和一键编译篇
当我们需要再次修改源码时,我们又要重新执行上面的一大串步骤重新编译可执行文件。
为此,博主整理了一下更方便的方法(其实也就是将前面的命令整合在一起,不用一条一条输入而已2333):
在Cloudreve目录下(也就是存在可执行文件的那个目录下),输入以下代码即可快速重新构建新的可执行文件并自动测试执行:
Tips-修改教程提示
如需修改边栏代码(增加按钮项),可修改assets/src/component/Navbar/Navbar.js文件
在对应位置仿照格式增添/修改即可,如: