seafile是一个非常好用的,适合于小团队的文件共享服务软件。同时,它还是一款国内的开源软件,难得可贵。这两天我花了一些时间架设seafile服务,记录下来备用。
seafile介绍
组件
ccnet:网络服务
seafile server:负责数据访问
seahub:网站界面,供用户管理自己在服务器上的数据和账户信息
HttpServer: 负责直接从网站上下载和上传文件
controller: 负责监控和重启上述部件
seafile环境
如图示,seafile服务器位于防火墙之后,需要在防火墙做好端口映射。
安装
服务端支持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
停止
# ./seafile.sh stop
# ./seahub.sh stop
重启
# ./seafile.sh restart
# ./seahub.sh restart
假如seahub的端口不是默认的8000,则
# ./seahub.sh restart
升级
由于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,假如服务端的变更了默认端口号,需在此进行变更。