Techeek's Studio.

Seafile 搭建个人网盘

字数统计: 3.4k阅读时长: 13 min
2018/10/22

Seafile 是一款安全、高性能的开源网盘(云存储)软件。Seafile 提供了主流网盘(云盘)产品所具有的功能,包括文件同步、文件共享等。在此基础上,Seafile 还提供了高级的安全保护功能以及群组协作功能。由于 Seafile 是开源的,你可以把它部署在私有云的环境中,作为私有的企业网盘。Seafile 支持 Mac、Linux、Windows 三个桌面平台,支持 Android 和 iOS 两个移动平台。

本文将教你如何在腾讯云CVM常见的操作系统上上搭建Seafile网盘服务,并配置其使用腾讯云的CFS服务来存储数据,文件存储服务有以下优点,CFS 兼容 POSIX 接口 ,可跨平台访问,并保证文件数据的一致性。CFS 文件系统的存储容量可弹性扩展、且不影响应用或服务。同时,文件系统的性能会随存储容量线性增长,提供高可靠、高性能的服务。CFS 可以动态分配容量而无需提前预购,您只需按实际使用量付费。CFS 标准文件存储为 3 份冗余,具有极高的可用性和可靠性。CFS的优势很明显,所以我们使用CFS来存储数据。数据库方面,Seafile支持SQLite和MySQL数据库引擎,本教程我们将使用腾讯云的云关系型数据库进行部署。腾讯云关系型数据库提供 MySQL、SQL Server、MariaDB、PostgreSQL 数据库引擎,并针对数据库引擎的性能进行了优化。云关系型数据库是一种高度可用的托管服务,提供容灾、备份、恢复、监控、迁移等数据库运维全套解决方案,可将您从耗时的数据库管理任务中解放出来,让您有更多时间专注于您的应用和业务。

准备数据库

由于Seafile需要SQLite或MySQL数据库引擎,所以我们在这里教大家使用云数据库MySQL服务器,目前云数据库MySQL特惠2.5折起,新用户1元体验,优惠很大。本教程也使用的是从这里领取的MySQL服务器。领取完成后就可以创建数据库啦,我们在这里创建,注意地域选择靠近你服务器地区的数据库,我的服务器在成都,所以我这里选择成都。其他保持默认即可,

1540201940317

接下来会进入我们的系统的数据库系统的控制台,记录下系统分配的内网地址。然后点击初始化按钮。端口保持不变,设置数据库账户及密码,然后确定即可。

1540202702958

新建CFS服务

同样,我们也需要将文件存储到腾讯云的CFS服务上,以通过在腾讯云控制台新建CFS服务。点击新建按钮,然后填下你CFS服务的名称,地域(建议与你CVM部署在同一地域下),比如你服务器部署在成都,则地域填写成都即可。

img

点击确定后,我们就可以开始使用CFS服务啦!

img

我们点击系统分配给你服务的ID,获取其他连接信息。

img

接下来,我们就可以在我们的服务器上挂载CFS服务啦,不过我们要安装一个名为nfs-common的服务。使用下面的命令进行安装。

1
sudo apt-get install nfs-common -y

安装完成后,我们需要进行挂载,首先创建一个文件夹,名称可以自定义,我这里以qcloud-cfs为例,目录创建在ubuntu用户的根目录下,为了方便数据写入,我给这个目录赋予可写入权限。

1
2
3
4
5
cd /home/ubuntu/
mkdir qcloud-cfs
sudo chmod 777 qcloud-cfs
cd qcloud-cfs
pwd

执行完pwd命令,系统输出/home/ubuntu/qcloud-cfs/,这就是你当前创建的需要挂载的目录,接下来我们进行挂载,使用mount命令即可,具体如下

1
sudo mount -t nfs -o vers=4 10.**.**.33:/ /home/ubuntu/qcloud-cfs/

/home/ubuntu/qcloud-cfs/是你在本地自己创建的目录,/是指你在CFS文件系统里面创建的根目录。10.**.**.33是腾讯云CFS系统分配给你的IP。执行完成后,你的CFS系统将会自动被挂载在/home/ubuntu/qcloud-cfs/目录下,后面我们配置Nextcloud将数据全部保存在/home/ubuntu/qcloud-cfs/目录,也就是会自动保存在腾讯云CFS上。CFS并非免费产品,其是收费产品,具体计费情况如下表,如果你数据较少,我推荐你用CVM自带的云硬盘,如果数据较大,还是推荐使用CFS产品。目前CFS还是有免费优惠的,截止到 2018 年 10 月 31 日,每个 CFS 的用户(主账户和协作者账户视为一个用户 - 相同 APPID)可以享受 10 GB 的免费存储量(不区分是 NFS 文件系统还是 CIFS/SMB 文件系统),每个计费周期内若用量超出免费额度,超出部分将按阶梯价格收取费用。

地区 中国大陆 香港
阶梯价格 0 ~ 10TB 0.35 元/GB/月 (0.00048611 元/GB/时) 1 TB 以内 0.63 元/GB/月 (0.00087500 元/GB/时)
10 TB以上 0.33 元/GB/月 (0.00045833 元/GB/时) 1 TB - 10 TB 0.58 元/GB/月 (0.00080556 元/GB/时)
10 TB - 50TB 0.52 元/GB/月 (0.00072222 元/GB/时)
50 TB 以上 0.46 元/GB/月 (0.00063889 元/GB/时)

连接服务器

当一切创建完,我们就可以开始安装Seafile 了,首先检查你的服务器安全组设置,确保其开放SSH使用的22和HTTP访问使用8000端口及同步文件的8002端口。然后我们通过SSH软件登录服务器,如果你本地电脑是Windows情况下可以使用putty等软件,Linux及MacOS请使用终端进行连接。

我这里以MobaXterm的终端软件为例,点击左上角的Session按钮,选择以SSH方式连接,在Remote host输入你的服务器的公网IP地址,Specify username输入你的用户名,如果你的服务器是Ubuntu系统,请输入ubuntu如果是CentOS系统则输入root。这里我们是ubuntu系统,所以我们输入ubuntu

img

点击OK后,输入你设置的密码(默认不显示),即可连接到你的服务器,你会看到类似下面的页面。

img

这样,你就进到你的服务器的页面了。

安装 Seafile 所需环境

如果你的CVM系统为Ububtu系统,请查看Ububtu系统安装教程,如果系统为CentOS,请参考CentOS操作系统安装教程,本文以Ubuntu Server 16.04.1 LTS为例。

Ubuntu系统

这里我们使用apt包管理器进行安装,安装之前,我们首先需要使用sudo apt-get update更新apt包管理器列表。然后在安装python及其 Seafile 所需要的环境。最后使用pip工具安装 Seafile 所需要的视频渲染动画插件moviepy具体代码如下

1
2
3
sudo apt-get update
sudo apt-get install python python2.7 libpython2.7 python-setuptools python-imaging python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache -y
sudo pip install pillow moviepy

执行完命令后,你可能需要等待一段时间,系统将会自动安装所需要的文件。

CentOS系统

这里我们使用yum包管理器进行安装,安装之前,我们首先需要使用yum -y install epel-release安装epel-release第三方数据包。然后在安装python及其 Seafile 所需要的环境。最后使用pip工具安装 Seafile 所需要的视频渲染动画插件moviepy具体代码如下

1
2
3
4
yum -y install epel-release
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
yum -y install python-imaging MySQL-python python-memcached python-ldap python-urllib3 ffmpeg ffmpeg-devel
pip install pillow moviepy

执行完命令后,你可能需要等待一段时间,系统将会自动安装所需要的文件。

下载 Seafile 源码

我们可以在这里下载Seafile 源码安装文件。截止本文撰写日期,最新版的系统为6.3.3 64位版本。我们获取其地址后,通过wgetcurl命令将源码包下载下来。

1540199013626

复制完链接后,在你的服务器执行下面的代码,注意替换链接地址

1
sudo wget http://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_6.3.3_x86-64.tar.gz

这时,我们就将文件下载到服务器了

部署Seafile

接下来,我们需要解压这个文件,为了方便后续升级,建议按照下面的步骤去设置目录结构。我们新建一个名为Seafile的目录,当然,这个名字是自定义的,我这里只是用Seafile演示,请执行下面的命令。

1
2
3
4
5
6
mkdir Seafile
mv seafile-server_* Seafile
cd Seafile
tar -zxvf seafile-server_*
mkdir installed
mv seafile-server_* installed

这时,你的文件目录类似如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ubuntu@VM-0-7-ubuntu:~$ tree Seafile -L 2
Seafile
├── installed
│   └── seafile-server_6.3.3_x86-64.tar.gz
└── seafile-server-6.3.3
├── check_init_admin.py
├── reset-admin.sh
├── runtime
├── seaf-fsck.sh
├── seaf-fuse.sh
├── seaf-gc.sh
├── seafile
├── seafile.sh
├── seahub
├── seahub.sh
├── setup-seafile-mysql.py
├── setup-seafile-mysql.sh
├── setup-seafile.sh
└── upgrade

这样设计目录的好处在于

  • 和 seafile 相关的配置文件都可以放在 **Seafile**目录下,便于集中管理。
  • 后续升级时,你只需要解压最新的安装包到 Seafile 目录下。

安装Seafile

接下来就可以进行安装了,我们找到上一步新建的目录,然后开始安装。

1
2
cd seafile-server-*
sudo ./setup-seafile-mysql.sh

输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ubuntu@VM-0-7-ubuntu:~/Seafile/seafile-server-6.3.3$ sudo ./setup-seafile-mysql.sh
Checking python on this machine ...
Checking python module: setuptools ... Done.
Checking python module: python-imaging ... Done.
Checking python module: python-mysqldb ... Done.

-----------------------------------------------------------------
This script will guide you to setup your seafile server using MySQL.
Make sure you have read seafile server manual at

https://github.com/haiwen/seafile/wiki

Press ENTER to continue
-----------------------------------------------------------------

系统示意我们按ENTER键继续,我们按下键盘上的回车键,第一个弹出的是server name这里我们输入自己想定义的服务器名称,我这里填写为qcloud-Seafile,接下来要求填写你的服务器的IP或者指向的域名,我这里填写自己CVM的IP123.456.789.123。接下来系统要求填写你存放文件数据的目录,因为我们要放在CFS上,则填写CFS映射的文件夹\home\ubuntu\qcloud-cfs。最后填写你服务器文件同步端口,该端口用于文件同步,请使用默认的 8082,不能更改。然后,服务器将要求你选择创建数据库的方式。

1
2
3
4
5
6
-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------

[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases
  • 如果选择1, 你需要提供根密码. 脚本程序会创建数据库和用户。
  • 如果选择2, ccnet/seafile/seahub 数据库应该已经被你(或者其他人)提前创建。

这里我们是新建,则选择1,选择完成后,系统要求你输入数据库地址,我们这里输入准备数据库步骤中创建数据库的内网地址。我这里填172.27.16.14,接下来会询问你使用那个账户运行MySQL,默认是root,我们直接点回车,接下来会询问你的数据库的端口,我们依然保持默认3306端口,接下来,输入你的数据库的密码。默认密码是不显示的。输入完成后,系统会为你创建一个名为seafile的用户,我们保持默认即可,之后输入你为seafile用户创建的密码。创建完成后系统要求你创建ccnet-db数据库,我们保持默认的ccnet-db就行。接下来要求创建seafile-server的数据库,我们依然保持默认。接下来还要创建seahub数据库,仍保持默认就OK。一切完成后,系统将输出下面的内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
---------------------------------
This is your configuration
---------------------------------

server name: qcloud-Seafile
server ip/domain: 123.456.789.123

seafile data dir: \home\ubuntu\qcloud-cfs
fileserver port: 8082

database: create new
ccnet database: ccnet-db
seafile database: seafile-db
seahub database: seahub-db
database user: seafile


---------------------------------
Press ENTER to continue, or Ctrl-C to abort
---------------------------------

我们按下键盘上的Enter键继续。不久,你会发现服务器创建完成。

启动 Seafile 服务器

现在,我们打开seafile-server-6.3.3目录,使用下面的命令启动启动 Seafile 服务器和 Seahub 网站。

  • 启动 Seafile 服务:
1
sudo ./seafile.sh start
  • 启动 Seahub 网站 (默认运行在8000端口上)
1
sudo ./seahub.sh start

你第一次启动 seahub 时,seahub.sh 脚本会提示你创建一个 seafile 管理员帐号。会要求你输入电子邮箱,管理密码及重新输入密码。请如实输入就行。输入完成后,你就通过访问http://你服务器的地址:8000来打开Seafile了。

1540204893714

输入你刚创建的用户名及密码,就可以访问 seafile 管理页面了。

1540205008249

关闭/重启 Seafile 和 Seahub

关闭

1
2
./seahub.sh stop # 停止 Seahub
./seafile.sh stop # 停止 Seafile 进程

重启

1
2
./seafile.sh restart # 停止当前的 Seafile 进程,然后重启 Seafile
./seahub.sh restart # 停止当前的 Seahub 进程,并在 8000 端口重新启动 Seahub

如果停止/重启的脚本运行失败

大多数情况下 seafile.sh seahub.sh 脚本可以正常工作。如果遇到问题:

  • 使用pgrep命令检查 seafile/seahub 进程是否还在运行中
1
2
pgrep -f seafile-controller # 查看 Seafile 进程
pgrep -f "seahub" # 查看 Seahub 进程
  • 使用pkill命令杀掉相关进程
1
2
pkill -f seafile-controller # 结束 Seafile 进程
pkill -f "seahub" # 结束 Seafile 进程

怎么样,学会了吗?赶快试试如何搭建吧!

CATALOG
  1. 1. 准备数据库
  2. 2. 新建CFS服务
  3. 3. 连接服务器
  4. 4. 安装 Seafile 所需环境
    1. 4.1. Ubuntu系统
    2. 4.2. CentOS系统
  5. 5. 下载 Seafile 源码
  6. 6. 部署Seafile
  7. 7. 安装Seafile
  8. 8. 启动 Seafile 服务器
    1. 8.1. 关闭/重启 Seafile 和 Seahub
      1. 8.1.1. 关闭
      2. 8.1.2. 重启
      3. 8.1.3. 如果停止/重启的脚本运行失败