天天看点

linux环境下的Seafile云盘实践

Seafile云盘

1、Seafile简介

Seafile 是一款开源的企业云盘,注重可靠性和性能。支持 Windows, Mac, Linux, iOS, Android 平台。支持文件同步或者直接挂载到本地访问。
           

2、Seafile特性

可靠的文件同步:文件组织成资料库。每个资料库可选择性的同步到任意设备。可靠高效的文件同步将提高您的工作效率;	
挂载盘客户端:直接通过本地 S 盘来访问云端文件,不占用本地存储。为电脑提供服务器的海量存储空间。同操作系统无缝集成,还可以离线修改文件;
团队协作:可以共享文件到群组。权限管理、版本控制、事件通知让协作更为流畅;
高性能:Seafile 服务器内核由 C 语言编写。运行起来小巧快速;
Wiki 与知识管理:融合 Wiki 与网盘的功能,使用 Markdown 格式以所见即所得方式编辑 Wiki 文档,提供搜索、标签、评审等知识管理功能,支持对外发布 Wiki 内容;
适用于企业环境:可与 AD/LDAP 集成。可同步 AD 群组和用户信息。
           

3、Linux 下部署 Seafile 服务器

3.1、 目录设计

cd /root/
mkdir seafile        #seafile的整体文件
cd seafile 
mkdir seafile_pkg    #存放下载好的seafile包
           

这样设计目录的好处在于:

和 seafile 相关的配置文件都可以放在 seafile 目录下,便于集中管理

后续升级时,你只需要解压最新的安装包到 seafile 目录下配置的管理

3.2、下载并解压

cd /root/seafile/seafile_pkg/
wget http://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_7.0.5_x86-64.tar.gz
tar -xf seafile-server_7.0.5_x86-64.tar.gz -C /root/seafile/
           

3.3、 目录结构如下

linux环境下的Seafile云盘实践

3.4、 安装 Seafile 服务器

3.4.1、安装 Seafile 服务器之前,请确认已安装以下软件

MariaDB 服务器 (MariaDB 是 MySQL 的分支)

python 2.7 (从 Seafile 5.1 开始,python 版本最低要求为2.7)

python-setuptools

python-imaging

python-mysqldb

python-ldap

python-urllib3

python-memcache (或者 python-memcached)

在Debian/Ubuntu系统下

apt-get update
apt-get install mariadb-server
apt-get install python2.7 python-setuptools python-imaging python-ldap python-mysqldb python-memcache python-urllib3
           

在 CentOS 7 下

yum install mariadb-server
yum install python-setuptools python-imaging python-ldap MySQL-python python-memcached python-urllib3
           

3.4.2、安装

1)执行脚本

cd /root/seafile/seafile-server-7.0.5

./setup-seafile-mysql.sh #运行安装脚本并回答预设问题

如果你的系统中没有安装上面的某个软件,那么 Seafile初始化脚本会提醒你安装相应的软件包.

该脚本会依次询问你一些问题,从而一步步引导你配置 Seafile 的各项参数:

seafile server name:seafile 服务器的名字,目前该配置已经不再使用;3 ~ 15 个字符,可以用英文字母,数字,下划线。

seafile server ip or domain:seafile 服务器的 IP地址或者域名;客户端将通过这个 IP 或者地址来访问你的 Seafile 服务。

seafile data dir:seafile数据存放的目录,用上面的例子,默认将是 /root/seafile/seafile-data;seafile数据将随着使用而逐渐增加,请把它放在一个有足够大空闲空间的分区上。

seafile fileserver port:seafile fileserver 使用的 TCP 端口;该端口用于文件同步,请使用默认的 8082,不能更改。

linux环境下的Seafile云盘实践

填写默认的数据库端口、数据库名

linux环境下的Seafile云盘实践

服务安装信息输出

linux环境下的Seafile云盘实践

安装成功

linux环境下的Seafile云盘实践
2)启动 Seafile 服务器

启动 Seafile::./seafile.sh start # 启动 Seafile 服务

linux环境下的Seafile云盘实践

启动 Seahub:./seahub.sh start # 启动 Seahub 网站 (默认运行在8000端口上)

linux环境下的Seafile云盘实践

小贴士: 你第一次启动 seahub 时,seahub.sh 脚本会提示你创建一个 seafile 管理员帐号。

3)登陆主页
linux环境下的Seafile云盘实践
linux环境下的Seafile云盘实践
4)关闭/重启 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 进程
           
5)注意要点:

在这里, 你会被要求选择一种创建 Seafile 数据库的方式:

选1时,会在如下箭头所示的地方回车后提示权限拒绝,因为需要单独对创建的seafile用户授权,同时如果数据库和seafile服务分离部署还需要对root授权;授权之后就无需在选择1,直接选择2,然后将在1中创建的数据库同样在2中的粘贴进去即可

grant all privileges on *.* to 'root'@'%';
grant all privileges on *.* to 'seafile'@'%';
           

若失败则执行 ,则执行下面命令

mysql5.7授权

update user set host='%' where user='root';
grant all privileges on *.* to 'seafile'@'%'; grant all privileges on *.* to 'root'@'%'; 
           

mysql8授权

update user set host='%' where user='root';
grant all privileges on *.* to 'root'@'%' with GRANT OPTION; 
grant all privileges on *.* to 'root'@'%';
           

选2,需要提前创建seafile用户,同时给seafile用户授权

linux环境下的Seafile云盘实践

3.4.3、有时候搭建好了,但是不能上传文件,需要查看此配置

linux环境下的Seafile云盘实践

或者页面的配置不一样导致引起的

linux环境下的Seafile云盘实践

3.4.4、Nginx 下配置 Seahub

在C:\Windows\System32\drivers\etc目录下的hosts文件最终组添加

192.168.171.129  www.myseafile.com
           
linux环境下的Seafile云盘实践

Seahub 是 Seafile 服务器的网站界面, SeafServer 用来处理浏览器端文件的上传与下载. 默认情况下, 它在 8082 端口上监听 HTTP 请求;

这里我们通过 fastcgi 部署 Seahub, 通过反向代理(Reverse Proxy)部署 SeafServer. 我们假设你已经将 Seahub 绑定了域名"www.myseafile.com".

下面是一个 Nginx 配置文件的例子(待上传)