随着大批网盘的倒下,你还在依靠互联网上的网盘携带传输文件么?本文教你如何自己搭建属于自己的个人大容量网盘及企业网盘。
-
seafile简介Seafile是一个面向企业、团队的云盘,解决文件管理和共享的问题。在此基础上,Seafile提供群组协作的功能,形成一个以文档为中心的协作平台。并且提供全平台的客户端,包括linux、windows及mac.并且提供手机客户端,支持Android和IOS。
- 解压将下载下来的压缩包解压到/home/seafile下即可.
tar -zxvf seafile-server-5.1.1 -C /home/seafile
- 系统环境准备
因为官方是在centos7上测试的,centos7的自带python是2.7版本的。这里我的系统是centos6.5。而centos6.5的自带python版本是2.6的,所以需要自己编译安装python2.7。
1)编译安装python2.7
cd Python-2.7.8 ./configure --prefix=/usr/local/python2.7 make make install
2)安装以下软件
- mysql #yum 安装即可
- python-setuptools
- python-imaging
- python-ldap #与ldap结合认证
- MySQL-python
- python-memcached #与memcached结合,提高缓存性能
- pillow #很重要,解决后期验证码刷不出来的问题
以上软件包都可以去 pypi 下载。
安装实例:tar zxvf Imaging-1.1.7.tar.gz cd Imaging-1.1.7 python2.7 setup.py install #注意是python2.7!否则安装也是按系统python2.6编译的,会导致seafile安装不了
- 安装seafile服务器
cd /home/seafile/seafile-server-5.1.1 ./setup-seafile-mysql.sh
接下来按照提示一步步填写就ok了.
- 修改防火墙
$ 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服务器
./seafile.sh start ./seahub.sh start
./seafile.sh stop ./seafile.sh stop
至此个人网盘就搭建成功了。
当然个人网盘远不能满足我们需求,让我们再看看企业级网盘的应用。
- Nginx结合HTTPS下配置seahub保证传输的加密性1)在/home/seafile下生成证书
openssl genrsa -out privkey.pem 2048 openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
2)nginx配置文件示例
server { 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; } }
3)重新加载nginx
../../sbin/nginx -t ../../sbin/nginx -s reload
4)修改 SERVICE_URL 和 FILE_SERVER_ROOT
$ vim seafile/conf/ccnet SERVICE_URL = http://your domain name
$ vim seafile/conf/seahub_setting.py FILE_SERVER_ROOT = 'https://seafile.in66.cc/seafhttp'
5)修改防火墙 增加开放443端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-
使用memcached提高性能
1)yum安装memcache
2)启动memcached
3)编辑sehub_settings.py添加相关配置
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } }
- 编写service服务脚本,实现开启自启动1)创建/etc/sysconfig/seafile
$ vim /etc/sysconfig/seafile user=root seafile_dir=/home/seafile script_path=${seafile_dir}/seafile-server-latest seafile_init_log=${seafile_dir}/logs/seafile.init.log seahub_init_log=${seafile_dir}/logs/seahub.init.log fastcgi=true fastcgi_port=8000
2)创建/etc/init.d/seafile文件
$ vim /etc/init.d/seafile #!/bin/bash # # seafile # # chkconfig: - 68 32 # description: seafile # Source function library. . /etc/init.d/functions # Source networking configuration. . /etc/sysconfig/network if [ -f /etc/sysconfig/seafile ];then . /etc/sysconfig/seafile else echo "Config file /etc/sysconfig/seafile not found! Bye." exit 200 fi RETVAL=0 start() { # Start daemons. echo -n $"Starting seafile: " ulimit -n 30000 su - ${user} -c"${script_path}/seafile.sh start >> ${seafile_init_log} 2>&1" RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/seafile return $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/seafile return $RETVAL } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart|reload) stop start RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart}" RETVAL=3 esac exit $RETVAL
3)创建/etc/init.d/seahub文件
$ vim /etc/init.d/seahub #!/bin/bash # # seahub # # chkconfig: - 69 31 # description: seahub # Source function library. . /etc/init.d/functions # Source networking configuration. . /etc/sysconfig/network if [ -f /etc/sysconfig/seafile ];then . /etc/sysconfig/seafile else echo "Config file /etc/sysconfig/seafile not found! Bye." exit 200 fi RETVAL=0 start() { # Start daemons. echo -n $"Starting seahub: " ulimit -n 30000 if [ $fastcgi = true ]; then su - ${user} -c"${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log} 2>&1" else su - ${user} -c"${script_path}/seahub.sh start >> ${seahub_init_log} 2>&1" fi RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/seahub return $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/seahub return $RETVAL } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart|reload) stop start RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart}" RETVAL=3 esac exit $RETVA
4)接下来启动程序
chmod 550 /etc/init.d/seafile chmod 550 /etc/init.d/seahub chkconfig --add seafile chkconfig --add seahub chkconfig seahub on chkconfig seafile on
5)执行
service seafile start
service seahub start
企业版的网盘就ok啦!可以给几百人个人都不是事!
美中不足的一点是每个人的账号密码都需要管理员手工常见,麻烦,费事,下面再介绍个更加高大上的,结合ldap来进行认证。
-
ldap的认证配置我这里就不多说。自行google下。
- 结合ldap。
- 这里我使用Email方式。因为ldap配置时公司几乎都会给个Email账号这样方便在seafile中区分唯一id。
配置说明:
[LDAP] HOST = ldap://192.168.1.123/ #ldap地址 BASE = cn=users,accounts,dc=example,dc=com #根据你自己的ldap结构来配置 USER_DN = administrator@example.local PASSWORD = secret LOGIN_ATTR = mail
下面是我的ldap配置:
[LDAP] HOST = ldap://10.10.106.201/ BASE = cn=users,cn=accounts,dc=in77,dc=cc LOGIN_ATTR = mail
说明:我没配USER_DN和PASSWORD,因为我的ldap用户匿名用户就可以访问。我刚配的时候就是坑啊!配了USER_DN,死活没用。踩坑成功。。
- 完成后,直接用ldap账号密码就可以登陆seafile了。
小结:
seafile还是很强的,可以给文件加密来分享给别人。即使管理员也看不了!
可以分组,只给组内人分享。
评论 在此处输入想要评论的文本。