seafile服务

seafile是一个非常好用的,适合于小团队的文件共享服务软件。同时,它还是一款国内的开源软件,难得可贵。这两天我花了一些时间架设seafile服务,记录下来备用。

seafile介绍

组件

  • ccnet:网络服务
  • seafile server:负责数据访问
  • seahub:网站界面,供用户管理自己在服务器上的数据和账户信息
  • HttpServer: 负责直接从网站上下载和上传文件
  • controller: 负责监控和重启上述部件

seafile环境

seafile组网示意图

如图示,seafile服务器位于防火墙之后,需要在防火墙做好端口映射。

NOTE
我用的是中国移动的宽带,无法通过官网的下载链接直接下载。必须fanqiang到https://code.google.com/p/seafile/downloads/list手工下载,然后再通过winscp传送到linux服务器上,颇为费劲。

安装

服务端支持linux和windows两种操作系统,本文的选择是debian 6 32bit。

准备存储

事先安装好nfs client,然后挂载NFS

# mkdir -p /mnt/seafile
# echo "192.168.55.120:/tank/documents/seafile  /mnt/seafile  nfs  defaults  0 1" >> /etc/fstab
# mount /mnt/seafile

准备运行环境

# aptitude update
# aptitude install python2.6 python-setuptools python-simplejson python-imaging sqlite3

安装

查看系统架构,32bit or 64bit

# uname -m      

创建seafile根目录,源文件将解压到该根目录下

# mkdir /usr/local/src/seafile
# tar -C /usr/local/src/seafile -zxvf seafile-server_1.7.0_i386.tar.gz

that's all.

配置

# cd /usr/local/src/seafile-server-*
# ./setup-seafile.sh

配置参数如下:

参数 说明
seafile server name seafile服务器的名字,3~15 个字符,可用英文字母,数字,下划线
seafile server ip or domain seafile服务器的IP地址或者域名。客户端将通过这个IP或者域名来访问Seafile服务。需要注意的是,在本例中,该IP地址应设为防火墙的互联网IP
ccnet server port 默认:10001
seafile data dir seafile数据存放目录,默认是./seafile/seafile-data,建议放在一个NFS服务器中,方便日后的扩容和维护。
seafile server port seafile服务器使用的TCP端口,默认为12001
seafile httpserver port seafile httpserver使用的TCP端口,默认为8082
seahub admin email sehaub管理员的帐户。该帐号仅是管理员帐号,用于发送邮件通知的email帐号需在seafile.conf中进行配置。
seahub admin password seahub管理员的密码

seafile的配置文件是分布式的,不同组件的配置文件单独分开,不利于维护。

启动

# ./seafile.sh start
# ./seahub.sh start
假如seahub的端口不是默认的8000,则
./seahub.sh start <new_port>

停止

# ./seafile.sh stop
# ./seahub.sh stop

重启

# ./seafile.sh restart
# ./seahub.sh restart

假如seahub的端口不是默认的8000,则

# ./seahub.sh restart <new_port>

升级

由于seafile的开发非常活跃,新版本层出不穷,因而经常需要升级。

升级前需先中止seahub和seafile进程:

# ./seahub.sh stop
# ./seafile.sh stop

新下载的版本也一并解压到seafile的根目录下,在本文中指的是/usr/local/src/seafile,读者也可以自行选择其它目录。最终的目录结构如下:

/usr/local/src
   -- seafile-server-1.7.0
   -- seafile-server-1.4.5
   -- ccnet
   -- seafile-data

小版本升级

指的是从1.6.0升级到1.6.1。

cd /usr/local/src/seafile/seafile-server-1.3.1/seahub/media
cp -rf avatars/* ../../../seahub-data/avatars/
rm -rf avatars
ln -s ../../../seahub-data/avatars

连续版本升级

指的是从1.6.0升级到1.7.0。

cd /usr/local/src/seafile-server1.7.0/upgrade
./update_1.6_1.7.sh

非连续版本升级

现在的版本为1.4,最新版本为1.7,需连续执行

cd /usr/local/src/seafile-server1.7.0/upgrade
./update_1.4_1.5.sh
./update_1.5_1.6.sh
./update_1.6_1.7.sh

升级完毕后启动seahub和seafile进程。

随机启动

seafile服务由多个进程共同协作而成,

创建/etc/init.d/seafile-server

#!/bin/sh
### BEGIN INIT INFO
# Provides:		seafile-server
# Required-Start:	$all
# Required-Stop:	$all
# Should-Start:		$local_fs
# Should-Stop:		$local_fs
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
### END INIT INFO

# Change the value of "user" to your user name
user=root

# Change the value of "script_path" to your path of seafile installation
script_path=/usr/local/src/seafile/seafile-server-1.7.0

sudo -u ${user} ${script_path}/seafile.sh start > /tmp/seafile.init.log 2>&1
sudo -u ${user} ${script_path}/seahub.sh start > /tmp/seahub.init.log 2>&1

以上脚本仅用于start,缺乏stop和restart的功能。

更新

# chmod +x /etc/init.d/seafile-server
# update-rc.d seafile-server defaults

tips

  • 变更默认端口后,seafile可能会出现问题,这种情况下建议直接重装了事,包括服务端和客户端。

  • 客户端的删除

    • 删除客户端之前请确保ccnet进程已杀掉,否则无法正常卸载。
    • 卸载完后,手工删除客户端的配置文件夹C:\用户\<用户名>\ccnet
  • 客户端的配置

    客户端的配置文件为C:\用户\<用户名>\ccnet\ccnet.conf,假如服务端的变更了默认端口号,需在此进行变更。