如何使用 Seafile 搭建个人网盘

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的服务。使用下面的命令进行安装。

sudo apt-get install nfs-common -y

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

cd /home/ubuntu/
mkdir qcloud-cfs
sudo chmod 777 qcloud-cfs
cd qcloud-cfs
pwd

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

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具体代码如下

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具体代码如下

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命令将源码包下载下来。

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

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

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

部署Seafile

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

mkdir Seafile
mv seafile-server_* Seafile
cd Seafile
tar -zxvf seafile-server_*
mkdir installed
mv seafile-server_* installed

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

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

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

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

输出如下:

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,不能更改。然后,服务器将要求你选择创建数据库的方式。

-------------------------------------------------------
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。一切完成后,系统将输出下面的内容。

---------------------------------
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 服务:
sudo ./seafile.sh start
  • 启动 Seahub 网站 (默认运行在8000端口上)
sudo ./seahub.sh start

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

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

关闭/重启 Seafile 和 Seahub

关闭

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

重启

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

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

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

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

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

操作系统能否支持百万连接?

下面来分别对这几个问题进行分析. 1. 操作系统能否支持百万连接? 对于绝大部分 Linux 操作系统, 默认情况下确实不支持 C1000K! 因为操作系统包含...

3715
来自专栏用户画像

3.1.4.1 基本分页存储管理方式

非连续分配允许一个程序分散地装入到不相邻的内存分区中,根据分区的大小是否固定分为分页存储管理方式和分段存储管理方式。

791
来自专栏信安之路

记一次审计 xiaocms 的过程

周末在家刚吃完晚饭,基友 DM 叫我一起来审计 xiaocms 系统,也不知道他是受到啥刺激了。正好,除了 Code Review 公司项目代码及框架代码,未审...

7490
来自专栏SMProxy

SMProxy,让你的数据库操作快三倍!

将数据库连接作为对象存储在内存中,当用户需要访问数据库时,首次会建立连接,后面并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。

1541
来自专栏黑白安全

web应用渗透测试流程

在信息收集阶段,我们需要尽量多的收集关于目标web应用的各种信息,比如:脚本语言的类型、服务器的类型、目录的结构、使用的开源软件、数据库类型、所有链接页面,用到...

1963
来自专栏大数据和云计算技术

HBase运维实践-聊聊RIT的那点事

相信长时间运维HBase集群的童鞋肯定都会对RIT(Region-In-Transition,很多参考资料误解为Region-In-Transaction,需要...

2634
来自专栏编程软文

开发过程中快速抓包并解析

这几天小编在工作中遇到了一个灵异事件,客户端使用的是安卓原生系统,服务端使用的是java。需求就是客户端在照相的时候可以实时上传照片。后台接收并保存,并且可以在...

2713
来自专栏皮振伟的专栏

[linux][statethread]协程库ST技术分析

前言: 在IO密集型的场景下,尤其是互联网后台,经常会使用epoll等IO复用技术。鉴于直接使用epoll的代码阅读性和开发效率等原因,就抽象出来了各种高级模型...

3438
来自专栏编程一生

接口性能优化方案及其理论依据

1243
来自专栏玄魂工作室

CTF实战4 HTTP协议及嗅探抓包

HTTP(Hypertext Transfer Protocol)中文<超文本传输协议>,是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议,是Int...

1172

扫码关注云+社区

领取腾讯云代金券