- A+
所属分类:私有云
seafile简介
Seafile是一个面向企业、团队的云盘,解决文件管理和共享的问题。在此基础上,Seafile提供群组协作的功能,形成一个以文档为中心的协作平台。并且提供全平台的客户端,包括linux、windows及mac.并且提供手机客户端,支持Android和IOS。
seafile个人网盘搭建
下载服务器
seafile官网下载地址
选择下载最新版,这里我用的是最新Linux版的5.1.1 64bit.
解压
将下载下来的压缩包解压到/home/seafile下即可.
1
|
tar -zxvf seafile-server-5.1.1 -C /home/seafile
|
系统环境准备
因为官方是在centos7上测试的,centos7的自带python是2.7版本的。这里我的系统是centos6.5。而centos6.5的自带python版本是2.6的,所以需要自己编译安装python2.7。
- 编译安装python2.7
1234cd Python-2.7.8./configure --prefix=/usr/local/python2.7makemake install - 安装以下软件
- mysql #yum 安装即可
- python-setuptools
- python-imaging
- python-ldap #用来结合ldap实现认证登陆
- MySQL-python
- python-memcached #与memcached结合,提高缓存性能
- pillow #很重要,解决后期验证码刷不出来的问题
以上软件包都可以去pypi下载。
- 安装实例:
123tar zxvf Imaging-1.1.7.tar.gzcd Imaging-1.1.7python2.7 setup.py install #注意是python2.7!否则安装也是按系统python2.6编译的,会导致seafile安装不了
安装seafile服务器
1
2
|
cd /home/seafile/seafile-server-5.1.1
./setup-seafile-mysql.sh
|
接下来按照提示一步步填写就ok了.
修改防火墙
1
2
3
|
$ vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8000 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8082 -j ACCEPT
|
启动、停止seafile服务器
1
2
|
./seafile.sh start
./seafile.sh stop
|
至此个人网盘就搭建成功了。
当然个人网盘远不能满足我们需求,让我们再看看企业级网盘的应用。
seafile企业网盘搭建
Nginx结合HTTPS下配置seahub保证传输的加密性
- 在/home/seafile下生成证书(自用证书,也可以第三方买)
12openssl genrsa -out privkey.pem 2048openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095 - nginx配置文件示例
123456789101112131415161718192021222324252627282930313233343536373839404142server {listen 80;server_name www.yourdoamin.com;rewrite ^ https://$http_host$request_uri? permanent; #强制将http重定向到https}server {listen 443;ssl on;ssl_certificate /home/seafile/cacert.pem; #cacert.pem 文件路径ssl_certificate_key /home/seafile/privkey.pem; #privkey.pem 文件路径server_name www.yourdoamin.com;proxy_set_header X-Forwarded-For $remote_addr;location / {fastcgi_pass 127.0.0.1:8000;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $fastcgi_script_name;fastcgi_param SERVER_PROTOCOL $server_protocol;fastcgi_param QUERY_STRING $query_string;fastcgi_param REQUEST_METHOD $request_method;fastcgi_param CONTENT_TYPE $content_type;fastcgi_param CONTENT_LENGTH $content_length;fastcgi_param SERVER_ADDR $server_addr;fastcgi_param SERVER_PORT $server_port;fastcgi_param SERVER_NAME $server_name;fastcgi_param HTTPS on;fastcgi_param HTTP_SCHEME https;access_log /var/log/nginx/seahub.access.log;error_log /var/log/nginx/seahub.error.log;}location /seafhttp {rewrite ^/seafhttp(.*)$ $1 break;proxy_pass http://127.0.0.1:8082;client_max_body_size 0;proxy_connect_timeout 36000s;proxy_read_timeout 36000s;}location /media {root /home/seafile/seafile-server-latest/seahub;}} - 重新加载nginx
12../../sbin/nginx -t../../sbin/nginx -s reload - 修改 SERVICE_URL
12$ vim seafile/conf/ccnetSERVICE_URL = http://your domain name - 修改 FILE_SERVER_ROOT
12$ vim seafile/conf/seahub_setting.pyFILE_SERVER_ROOT = 'https://seafile.in66.cc/seafhttp' - 修改防火墙 增加开放443端口
1-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
使用memcached提高性能
- yum安装memcache
- 启动memcached
- 编辑sehub_settings.py添加相关配置
123456CACHES = {'default': {'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache','LOCATION': '127.0.0.1:11211',}}
实现开启自启动
- 创建/etc/sysconfig/seafile
12345678$ vim /etc/sysconfig/seafileuser=rootseafile_dir=/home/seafilescript_path=${seafile_dir}/seafile-server-latestseafile_init_log=${seafile_dir}/logs/seafile.init.logseahub_init_log=${seafile_dir}/logs/seahub.init.logfastcgi=truefastcgi_port=8000 - 创建/etc/init.d/seafile文件
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162## seafile## chkconfig: - 68 32# description: seafile# Source function library.. /etc/init.d/functions# Source networking configuration.. /etc/sysconfig/networkif [ -f /etc/sysconfig/seafile ];then. /etc/sysconfig/seafileelseecho "Config file /etc/sysconfig/seafile not found! Bye."exit 200fiRETVAL=0start() {# Start daemons.echo -n $"Starting seafile: "ulimit -n 30000su - ${user} -c"${script_path}/seafile.sh start >> ${seafile_init_log} 2>&1"RETVAL=$?echo[ $RETVAL -eq 0 ] && touch /var/lock/subsys/seafilereturn $RETVAL}stop() {echo -n $"Shutting down seafile: "su - ${user} -c"${script_path}/seafile.sh stop >> ${seafile_init_log} 2>&1"RETVAL=$?echo[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/seafilereturn $RETVAL}# See how we were called.case "$1" instart)start;;stop)stop;;restart|reload)stopstartRETVAL=$?;;*)echo $"Usage: $0 {start|stop|restart}"RETVAL=3esacexit $RETVAL - 创建/etc/init.d/seahub文件
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566## seahub## chkconfig: - 69 31# description: seahub# Source function library.. /etc/init.d/functions# Source networking configuration.. /etc/sysconfig/networkif [ -f /etc/sysconfig/seafile ];then. /etc/sysconfig/seafileelseecho "Config file /etc/sysconfig/seafile not found! Bye."exit 200fiRETVAL=0start() {# Start daemons.echo -n $"Starting seahub: "ulimit -n 30000if [ $fastcgi = true ];thensu - ${user} -c"${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log} 2>&1"elsesu - ${user} -c"${script_path}/seahub.sh start >> ${seahub_init_log} 2>&1"fiRETVAL=$?echo[ $RETVAL -eq 0 ] && touch /var/lock/subsys/seahubreturn $RETVAL}stop() {echo -n $"Shutting down seafile: "su - ${user} -c"${script_path}/seahub.sh stop >> ${seahub_init_log} 2>&1"RETVAL=$?echo[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/seahubreturn $RETVAL}# See how we were called.case "$1" instart)start;;stop)stop;;restart|reload)stopstartRETVAL=$?;;*)echo $"Usage: $0 {start|stop|restart}"RETVAL=3esacexit $RETVA - 接下来启动程序
123456chmod 550 /etc/init.d/seafilechmod 550 /etc/init.d/seahubchkconfig --add seafilechkconfig --add seahubchkconfig seahub onchkconfig seafile on - 执行
12service seafile startservice seahub start
美中不足的一点是每个人的账号密码都需要管理员手工常见,麻烦,费事.下面再介绍个更加高大上的,结合ldap来进行认证。
结合LDAP认证
- ldap的认证配置自行google下
- 结合ldap
这里我使用Email方式。因为ldap配置时公司几乎都会给个Email账号这样方便在seafile中区分唯一id。 - 配置说明:
123456[LDAP]HOST = ldap://192.168.1.123/ #ldap地址BASE = cn=users,accounts,dc=example,dc=com #根据你自己的ldap结构来配置USER_DN = administrator@example.localPASSWORD = secretLOGIN_ATTR = mail - 下面是我的ldap配置:
1234[LDAP]HOST = ldap://10.10.106.201/BASE = cn=users,cn=accounts,dc=in77,dc=ccLOGIN_ATTR = mail
说明:我没配USER_DN和PASSWORD,因为我的ldap用户匿名用户就可以访问。我刚配的时候就是坑啊!配了USER_DN,死活没用。踩坑成功。。
完成后,直接用ldap账号密码就可以登陆seafile了。
小结:
seafile还是很强的,可以给文件加密来分享给别人。即使管理员也看不了!
可以分组,只给组内人分享。
相关链接:
seafile手册
seafile手册2
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-