为了一个远程存储网盘代码学习了Linux系统
为了各类学习资料的独立自主,个人喜欢倒腾存储方面的软件,比如网盘开源代码和U盘、NAS等。
前些时间,看了一个Zpan的开源项目,是作者为了女朋友写的一个基于云存储(非网盘)的网盘系统。虽然无法挂载本地存储和网盘,但界面清爽、基本功能也不少,于是下载来尝尝鲜。
Zpan开源地址为:https://github.com/saltbo/zpan
一、Windows下安装
平时没有用Linux,在Github上准备下载AMD的运行包,可惜最后发布版本为1.6.5,最新测试版本为1.7.0-beta2,都没有Windows的AMD包。
下载zpan:1.7.0-beta2的zip源代码,安装go1.23.4.windows-amd64运行环境。下载地址:https://go.dev/dl/
使用go run main.go命令行运行,花了一段时间,自动更新了go.mod里的大堆依赖包到本地,终于可以运行。
浏览器打开127.0.0.1:8222网址,网页标题出来了,源代码也可查看,可惜就是卡住不出页面。
看来此路不通。为什么不支持Windows系统,作者也写了说明:实际上Mac也没有提供二进制包,主要是考虑ZPan是一个服务端程序,再加上ZPan用到的一些依赖在支持多平台的情况下打包遇到一些麻烦,所以目前仅提供了一个Linux版本的Release,后续我们会考虑支持多平台。
二、Linux下安装
手里有台淘汰的Intel Q9400的机器,准备了一个32G U盘,使用Ventoy制作了一个启动,并下载了Debian 12.8.0的ISO文件放在上面。
Ventoy启动盘工具:https://www.ventoy.net/cn/index.html
Debian下载地址:https://www.debian.org/index.zh-cn.html
机器过老,没有F12选择启动操作,直接按DEL键将硬盘启动屏蔽,强制为U盘启动才完成引导。
看起来631M的Debian看起来轻松能够安装完,没想到中途需要联网更新组件,零碎时间加起来硬是安装了一天多。
安装完成,打开ssh和XRDP远程桌面,操作直观。但每次操作都需要密码,包括使用sudo,于是想着将用户提升一下权限,不用频繁输入密码。
使用sudo nano /etc/sudoers编辑配置文件,添加以下行:
username ALL=(ALL) ALL
使用命令将用户添加到sudo组中:
sudo usermod -aG sudo username
最后,又编辑sudo nano /etc/passwd文件:
username :x:1000:1000::/home/username :/bing/bash
将两个1000,全修改为0。
本以为用户权限提升了,万事大吉,但重启后远程桌面连接不上了,SSH也连接不上了。
接上显示器、键盘鼠标一看,居然出现重设登录用户名,按流程重新设置后,SSH登录后目录瞬间变成root用户,XRDP远程桌面怎么设置也不行。
感觉是乱了。又将修改过的配置一一还原,XRDP折腾了一天也没恢复成功,也不管了。
三、安装Zpan的DEB包
下载Linux的zpan-linux-amd64.deb包,使用WinSCP上传到服务器。
使用sudo dpkg -i zpan-linux-amd64.deb完成安装。
使用systemctl start zpan启动服务,打开网址不成功。
使用systemctl status zpan查看服务状态,发现是未运行状态。
再使用zpan server手动启动,出现“段错误”,看来是编译的包不对,运行失败了。
四、安装go运行源代码
使用sudo apt-get install golang安装go语言到本地,下载Source code (zip)源码包,使用WinSCP上传到用户文件夹。
再使用go run main.go运行源码包,又下载大堆依赖包,开始运行,看似运行了,访问页面也出现打开日志,可惜和Windows下运行时一样的结果。
顺便讲一下镜像源,下载Debian更新包,需要国内的镜像源,一般安装时会让你选择,我选的是http://mirrors.163.com/的镜像站,否则默认的国外服务器,会下载到怀疑人生,而且极有可能不成功。
可以sudo nano /etc/apt/sources.list编辑镜像源地址。
更多镜像源地址见此:https://www.cnblogs.com/smlile-you-me/p/17727308.html
其中清华镜像源地址原地址不对,前缀需要修改为https://mirrors.tuna.tsinghua.edu.cn/
关于go依赖包下载,也需要修改源地址,否则直接不成功。
Linux运行以下命令:
export GO111MODULE=on
export GOPROXY=https://goproxy.cn,direct
Windows运行以下命令:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
五、安装Docker运行
既然常规动作不行,使用作者提供的docker安装命令行:
docker run -it -p 8222:8222 -v /etc/zpan:/etc/zpan --name zpan saltbo/zpan
由于服务器和路由器无加速,安装包扒不下来。
docker pull saltbo/zpan:1.7.0-beta2
也是扒不下来,又添加docker镜像,才得以成功。
编辑sudo nano /etc/docker/daemon.json
输入以下代码:
{
"registry-mirrors": [
"https://docker.1panel.live"
]
}
CTRL O保存,CTRL X退出。
使用docker images查看加入的镜像和ID。
使用docker run imageid运行镜像,出现找不到 GLIBC 2.32和 GLIBC 2.34版本的错误。
通过ldd --version命令查看,我服务器的版本为(Debian GLIBC 2.36-9 deb12u9) 2.36。没想到才一年多时间,编译包就落后版本无法运行了。
后来,又扒了1.6.5版本。
docker pull saltbo/zpan:latest
错误提示依旧。使用docker ps查看运行状态,确认没有成功运行。
在必应和谷歌上搜索了一圈,都没有可操作的降GLIBC版本的办法,几个小时又过去了。
六、重新编译源代码
使用go run在Windows和Linux环境直接运行源代码,系统无法正常开启。
使用原来的编译包无法运行。
使用docker环境打开原来的编译包无法运行。
对于开源软件,只有重新编译源代码一条路了。
进入zpan-1.7.0-beta2文件夹,使用以下命令生成zpan执行文件。
go build -o zpan main.go
由于已安装过DEB包,直接复制zpan到相应的可执行文件所在文件夹就行了。命令行如下:
cp -rf zpan /usr/local/bin/zpan
如果没有安装过,需要生成DEB安装包进行安装。
附一个DEB包的生成方法:
1、创建工作目录
mkdir -p mypackage/DEBIAN
mkdir -p mypackage/usr/local/bin
2、创建控制文件
touch mypackage/DEBIAN/control
内容如下:
Package: mypackage
Version: 1.0
Section: base
Priority: optional
Architecture: amd64
Depends: libc6 (>= 2.14)
Maintainer: Your Name <youremail@example.com>
Description: My Go Application
This is a sample description of my Go application.
3、编译go程序
go build -o myapp main.go
将生成的二进制文件myapp复制到工作目录:
cp myapp mypackage /usr/local/bin/
4、确认工作目录
mypackage
├── DEBIAN
│ └── control
│└── usr
│ └── local
│ └── bin
│ └── myapp
5、生成DEB包
dpkg -deb --build mypackage
另外使用fpm成生DEB包就不多说了,这个打包功能更强大。
七、成功启动
重新编译后,使用zpan server成功启动,但默认启动了编译文件夹中的执行文件,进入安装界面,生成了SQLite3的数据库在当前文件夹,并持续调用源代码中的模块。
后分析了sh安装文件,确认了几个配置文件和默认数据库存放位置。并使用完成服务的安装和加载。
记得安装了防火墙,需要将端口允许放行才行,命令行如下:
sudo ufw allow 8222/tcp
我是针对我的局域网网段放行,命令行如下:
sudo ufw allow from 192.168.1.0/24 to any port 8222
首次打开,需要设置数据库和默认管理员用户,登录后就可以添加存储了。
添加了七牛云的免费存储桶,方法如下:
1、在个人中心——秘钥管理,获取AccessKey/SecretKey这两个串码。
2、左上角打开对象存储KODO,新建空间,设置空间名称。
3、选择空间管理,点击打开空间名称——空间概览,右下角有个系统域名,如S3 协议的外网访问 http(s)://zhenganonline.s3.cn-south-1.qiniucs.com。
4、打开zpan后台管理,创建存储,填写项目如下:
名称:空间名称
云平台:选择KODO
存储桶:空间名称(S3协议网址的前段)
接入点:s3.cn-south-1.qiniucs.com(S3协议网址的后段)
AccessKey:AccessKey串码
SecretKey:SecretKey串码
八、结语
为了一个开源网盘,自学了go的安装和运行、Linux的基础操作、docker的原理和操作等,花费了那么多时间,还是值得记录一下。
不知是bug还是我的操作问题,zpan后台退出时,服务器上运行的服务也会崩溃,需要手动重启。希望后续能够解决。
本网站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。原创内容除特殊说明外,转载本站文章请注明出处。
如有侵权、不妥之处,联系删除。 Email:master@gzza.com