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位版本。我们获取其地址后,通过wget
或curl
命令将源码包下载下来。
复制完链接后,在你的服务器执行下面的代码,注意替换链接地址
代码语言: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 服务:
sudo ./seafile.sh start
- 启动 Seahub 网站 (默认运行在8000端口上)
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 进程是否还在运行中
pgrep -f seafile-controller # 查看 Seafile 进程
pgrep -f "seahub" # 查看 Seahub 进程
- 使用pkill命令杀掉相关进程
pkill -f seafile-controller # 结束 Seafile 进程
pkill -f "seahub" # 结束 Seafile 进程
怎么样,学会了吗?赶快试试如何搭建吧!