树莓派存储方案_树莓派搭建seafile存储重要文件

谈到NAS,我个人需求主要是:

下电影以及看电影

保存重要文件,例如:照片,工作文档。

然而大多数人一提到NAS,就会想上X86架构,比如最近很火的蜗牛星际。

然而X86架构功耗高,噪音大,用作NAS完全是一种过度行为,适合非技术人员使用。

对于我们研发来说,能够用ARM搞定就没必要上X86黑群晖之类的复杂系统,并且可以自主架构系统,完成自己的目标。

我选型seafile作为网盘,主要原因如下:

国产项目,12年发展至今,成熟。

C语言实现存储引擎,底层按block分块存储校验,支持多版本管理,删除找回等重要特性。

支持PC、安卓、苹果等多种客户端,支持webdav网盘挂载。

网站部分采用python django实现,比其他同类产品的PHP技术栈要轻量很多。

下面就记录一下如何在树莓派上搭建最新的版本(参考官方文档),以及分享一下seafile备份思路。

切换到root

Shell

sudo su root

1

sudosuroot

安装依赖

Shell

apt-get update

apt-get install python

apt-get install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache

pip install pillow moviepy

1

2

3

4

apt-getupdate

apt-getinstallpython

apt-getinstallpython2.7libpython2.7python-setuptoolspython-pilpython-ldappython-urllib3ffmpegpython-pippython-mysqldbpython-memcache

pipinstallpillowmoviepy

注意,官方手册里的python-imaging已经不存在了,应该使用python-pil取代,上述命令我已经做了调整。

还需要自己安装mysql:

Shell

apt install mysql-server

1

aptinstallmysql-server

然后初始化一下root密码:

Shell

mysqladmin password

1

mysqladminpassword

下载程序

选定一个安装目录,我选择:/root/seafile。

创建一个/root/seafile/installed目录,把下载的tar包放进去,并且解压一份到/root/seafile目录:

Shell

root@raspberrypi:~/seafile# ll

total 8

drwxr-xr-x 2 root root 4096 Jan 2 14:29 installed

drwxr-xr-x 7 pi pi 4096 Sep 24 02:31 seafile-server-7.0.5

root@raspberrypi:~/seafile# ll installed/

total 61272

-rw-r--r-- 1 root root 62739626 Sep 30 00:04 seafile-server_7.0.5_stable_pi.tar.gz

1

2

3

4

5

6

7

root@raspberrypi:~/seafile# ll

total8

drwxr-xr-x2rootroot4096Jan214:29installed

drwxr-xr-x7pipi4096Sep2402:31seafile-server-7.0.5

root@raspberrypi:~/seafile# ll installed/

total61272

-rw-r--r--1rootroot62739626Sep3000:04seafile-server_7.0.5_stable_pi.tar.gz

安装程序

进入seafile-server-7.0.5目录,执行安装脚本:

Shell

./setup-seafile-mysql.sh

1

./setup-seafile-mysql.sh

这个脚本会完成所有安装工作,包括数据库与表结构的初始化,程序的部署。

这一步很重要,是seafile的访问地址,会直接影响到web后台的请求地址,大家最初可以写成树莓派的内网IP,后续可以在web后台调整:

Shell

What is the ip or domain of the server?

For example: www.mycompany.com, 192.168.1.101

[ This server's ip or domain ] 192.168.1.101

1

2

3

Whatistheipordomainoftheserver?

Forexample:www.mycompany.com,192.168.1.101

[Thisserver'sipordomain]192.168.1.101

这一步是指定数据文件存在什么路径,对于seafile来说就是数据库和这个目录是重要资产,也是后续作备份的关键:

Shell

Where do you want to put your seafile data?

Please use a volume with enough free space

[ default "/root/seafile/seafile-data" ]

1

2

3

Wheredoyouwanttoputyourseafiledata?

Pleaseuseavolumewithenoughfreespace

[default"/root/seafile/seafile-data"]

然后问你数据库是否初始化,我们选择1新建(如果是seafile宕机迁移,就需要用选项2复用数据库了):

Shell

[1] Create new ccnet/seafile/seahub databases

[2] Use existing ccnet/seafile/seahub databases

[ 1 or 2 ] 1

1

2

3

4

[1]Createnewccnet/seafile/seahubdatabases

[2]Useexistingccnet/seafile/seahubdatabases

[1or2]1

其他的就根据提示操作即可,全部选默认值。

现在/root/seafile目录发生了一些变化,其中seafile-server-latest软链到了seafile-server-7.0.5,后续我们升级seafile程序只需要调整软链接即可,这也是为什么刚才如此布局目录的原因。

启动程序

安装好后,seafile提示了启动命令以及需要开放访问的端口:

Shell

-----------------------------------------------------------------

Your seafile server configuration has been finished successfully.

-----------------------------------------------------------------

run seafile server: ./seafile.sh { start | stop | restart }

run seahub server: ./seahub.sh { start | stop | restart }

-----------------------------------------------------------------

If you are behind a firewall, remember to allow input/output of these tcp ports:

-----------------------------------------------------------------

port of seafile fileserver: 8082

port of seahub: 8000

1

2

3

4

5

6

7

8

9

10

11

12

13

-----------------------------------------------------------------

Yourseafileserverconfigurationhasbeenfinishedsuccessfully.

-----------------------------------------------------------------

runseafileserver:./seafile.sh{start|stop|restart}

runseahubserver:./seahub.sh{start|stop|restart}

-----------------------------------------------------------------

Ifyouarebehindafirewall,remembertoallowinput/outputofthesetcpports:

-----------------------------------------------------------------

portofseafilefileserver:8082

portofseahub:8000

seafile分为3个进程:

seafile:C实现的存储进程

seahub:Python Django实现的web界面

ccnet:C实现的内部接口服务,seahub -> seafile是通过ccnet中转的。

在正式启动前,我们需要改一下seahub的监听地址为0.0.0.0,否则无法访问到web页面,打开conf/gunicorn.conf,修改如下部分:

Shell

# default localhost:8000

bind = "0.0.0.0:8000"

1

2

# default localhost:8000

bind="0.0.0.0:8000"

(PS:因为web界面是django写的,利用gunicorn容器拉起,所以监听地址实际是gunicorn配置的)

接下来,我们需要先启动seafile,再启动seahub:

Shell

./seafile.sh start

./seahub.sh start

1

2

./seafile.shstart

./seahub.shstart

启动seahub的时候会要求你创建一个web的管理员账号密码。

访问web

seahub监听在8000端口,seafile监听在8082端口。

浏览文件列表是调用8000端口获取的,而真正上传与下载文件则是与8082直接通讯的。

打开树莓派的8000端口,可以进入seahub界面,用管理员账号登录即可。

我遇到了一个奇怪的问题,就是无法上传与下载文件,浏览器抓包发现的确是访问的8082端口,也可以联通。

后续我的解决办法是在web界面的系统设置里,重新保存了一次访问地址,问题就解决了。

开放到公网

通过家里的路由器作DDNS和端口转发。

需要去seahub后台设置一下公网的访问地址:

注意,但凡能够通过seahub配置的选项,其都存储在mysql中,并且mysql优先级都将优先于磁盘上的配置文件。

开机启动

注意修改systemd文件中的User和Group为root,否则权限不足。

备份数据

官方提供了备份文档。

定时备份2个东西:

数据库定时mysqldump

seafile-data数据文件目录rsync增量同步

这里就不做演示了。

如果文章帮助了你,请帮我点击1次谷歌广告,或者微信赞助1元钱,感谢!

知识星球有更多干货内容,对我认可欢迎加入:

你可能感兴趣的:(树莓派存储方案)