如何使用 Seafile 搭建个人网盘

2018-10-22 18:49:59 浏览数 (1)

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服务器。领取完成后就可以创建数据库啦,我们在这里创建,注意地域选择靠近你服务器地区的数据库,我的服务器在成都,所以我这里选择成都。其他保持默认即可,

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

新建CFS服务

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

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

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

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

代码语言:javascript复制
sudo apt-get install nfs-common -y

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

代码语言:javascript复制
cd /home/ubuntu/
mkdir qcloud-cfs
sudo chmod 777 qcloud-cfs
cd qcloud-cfs
pwd

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

代码语言:javascript复制
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

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

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

安装 Seafile 所需环境

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

Ubuntu系统

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

代码语言:javascript复制
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具体代码如下

代码语言:javascript复制
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命令将源码包下载下来。

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

代码语言:javascript复制
sudo wget http://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_6.3.3_x86-64.tar.gz

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

部署Seafile

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

代码语言:javascript复制
mkdir Seafile
mv seafile-server_* Seafile
cd Seafile
tar -zxvf seafile-server_*
mkdir installed
mv seafile-server_* installed

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

代码语言:javascript复制
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

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

代码语言:javascript复制
cd seafile-server-*
sudo ./setup-seafile-mysql.sh

输出如下:

代码语言:javascript复制
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映射的文件夹homeubuntuqcloud-cfs。最后填写你服务器文件同步端口,该端口用于文件同步,请使用默认的 8082,不能更改。然后,服务器将要求你选择创建数据库的方式。

代码语言:javascript复制
-------------------------------------------------------
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。一切完成后,系统将输出下面的内容。

代码语言:javascript复制
---------------------------------
This is your configuration
---------------------------------
​
    server name:            qcloud-Seafile
    server ip/domain:       123.456.789.123
​
    seafile data dir:       homeubuntuqcloud-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 服务:
代码语言:javascript复制
sudo ./seafile.sh start

  • 启动 Seahub 网站 (默认运行在8000端口上)
代码语言:javascript复制
sudo ./seahub.sh start

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

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

关闭/重启 Seafile 和 Seahub

关闭

代码语言:javascript复制
./seahub.sh stop # 停止 Seahub
./seafile.sh stop # 停止 Seafile 进程

重启

代码语言:javascript复制
./seafile.sh restart # 停止当前的 Seafile 进程,然后重启 Seafile
./seahub.sh restart  # 停止当前的 Seahub 进程,并在 8000 端口重新启动 Seahub

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

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

  • 使用pgrep命令检查 seafile/seahub 进程是否还在运行中
代码语言:javascript复制
pgrep -f seafile-controller # 查看 Seafile 进程
pgrep -f "seahub" # 查看 Seahub 进程

  • 使用pkill命令杀掉相关进程
代码语言:javascript复制
pkill -f seafile-controller # 结束 Seafile 进程
pkill -f "seahub" # 结束 Seafile 进程

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

0 人点赞