准备工作
升级系统包到最新版
安装依赖库
apt-get install build-essential autoconf automake gdb git libffi-dev zlib1g-dev libssl-dev unzip -y
安装 Go 环境
apt-get install golang -y
安装 SeaweedFS
由于 SeaweedFS 并不在 Ubuntu 20.04 的默认库中,所以我们需要先下载它的源码进行编译。
从 Git 仓库下载最新版 SeaweedFS
git clone https://github.com/chrislusf/seaweedfs.git
下载完毕后,切换到 SeaweedFS 目录并安装它
cd ~/seaweedfs
make install
上述安装命令将会安装二进制的 SeaweedFS 到 ~/go/bin/ 目录下 。 接下来你需要将安装好的二进制文件复制到 /usr/loca/bin 目录下。
cp ~/go/bin/weed /usr/local/bin/
验证下 SeaweedFS 的版本
以上步骤都顺利完成后我们就可以进入下一步了。^_^
为主控建立一个系统服务文件
首先,你需要建立一个系统服务文件来管理 SeaweedFS 服务。
nano /etc/systemd/system/seaweedmaster.service
添加如下代码
[Unit]
Description=SeaweedFS Master
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed master
WorkingDirectory=/usr/local/bin/
SyslogIdentifier=seaweedfs-master
[Install]
WantedBy=multi-user.target
重载 systemd
systemctl daemon-reload
启动 SeaweedFS 服务,并且设置为系统重启自启服务
systemctl start seaweedmaster
systemctl enable seaweedmaster
验证 SeaweedFS 主控状态
systemctl status seaweedmaster
建立并启动卷服务器
当前,主控服务器已启动,处于添加卷的状态。 首先,我们建两个卷目录
mkdir /mnt/{vol1,vol2}
建立一个系统服务文件来管 vol1
nano /etc/systemd/system/seaweedvolume1.service
添加如下代码
[Unit]
Description=SeaweedFS Volume
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed volume -dir="/mnt/vol1" -max=10 -mserver="192.168.1.26:9333" -port=8081
WorkingDirectory=/usr/local/bin/
SyslogIdentifier=seaweedfs-volume
[Install]
WantedBy=multi-user.target
其中 -mserver="主控服务器ip:9333",测试环境填写127.0.1.1,生产环境自行修改为主控服务器ip
保存并关闭,重新加载 systemd
systemctl daemon-reload
启动 vol1 服务,并且设置为系统重启自启服务
systemctl start seaweedvolume1.service
systemctl enable seaweedvolume1.service
验证 vol1 状态
systemctl status seaweedvolume1
建立一个系统服务文件来管 vol2
nano /etc/systemd/system/seaweedvolume2.service
添加如下代码
[Unit]
Description=SeaweedFS Volume
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed volume -dir="/mnt/vol2" -max=5 -mserver="192.168.1.26:9333" -port=8080
WorkingDirectory=/usr/local/bin/
SyslogIdentifier=seaweedfs-volume2
[Install]
WantedBy=multi-user.target
其中 -mserver="主控服务器ip:9333",测试环境填写127.0.1.1,生产环境自行修改为主控服务器ip
保存并关闭,重新加载 systemd
systemctl daemon-reload
启动 vol2 服务,并且设置为系统重启自启服务
systemctl start seaweedvolume2.service
systemctl enable seaweedvolume2.service
验证 vol2 状态
systemctl status seaweedvolume2
测试在卷中写入文件
首先你需要发送一个 HTTP 请求,比如 POST, PUT, 或者 GET 都行,来获取文件 ID 以及 卷服务器的 URL
curl http://localhost:9333/dir/assign
输出如下结果,包含了文件 ID 以及卷服务器的 URL
{"fid":"3,010490505e","url":"192.168.1.26:8081","publicUrl":"192.168.1.26:8081","count":1}
由于我的 8080 端口被其他服务占用了,所以当前自动分配为 8081
使用上述的 文件ID 和 卷URL 随意添加一个文件,譬如我 /home/msmn/Desktop 下的 text.md 的文件到卷中
curl -F file=@/home/msmn/Desktop/text.md http://192.168.1.26:8081/3,010490505e
返回如下输出结果
{"name":"text.md","size":633,"eTag":"6588415c61a25133103711295a4bbbf7"}
上传后的文件,可以通过如下方式读取
curl http://192.168.1.26:9333/dir/lookup?volumeId=3
返回如下输出结果
{"volumeId":"3","locations":[{"url":"localhost:8081","publicUrl":"localhost:8081"}]}
访问 SeaweedFS
你可以通过 http://192.168.1.26:8081/3,010490505e
来浏览你刚才存储在 SeaweedFS 中的文件。