• WebDAV扩展
    • SeafDAV配置
      • 示例配置 1: No nginx/apache
      • 示例配置 2: With Nginx/Apache
        • Nginx 无 HTTPS
        • Nginx 有 HTTPS
        • Apache
        • Apache 无 HTTPS
        • Apache 有 HTTPS
    • 关于客户端的注意事项
      • Windows
      • Linux
      • Mac OS X
    • 常见问题
      • 客户端无法连接seafdav服务器
      • 客户端得到”Error: 404 Not Found”错误

    WebDAV扩展

    Seafile WebDAV Server(SeafDAV)在Seafile Server 2.1.0版本中被加入.

    在下面的维基中, 我们假设你将Seafile安装到/data/haiwen目录下。

    SeafDAV配置

    SeafDAV配置文件是/data/haiwen/conf/seafdav.conf. 如果它还没有被创建,你可以自行创建它。

    1. [WEBDAV]
    2.  
    3. # 默认值是false。改为true来使用SeafDAV server。
    4. enabled = true
    5.  
    6. port = 8080
    7.  
    8. # 如果fastcgi将被使用则更改fastcgi的值为true。
    9. fastcgi = false
    10.  
    11. # 如果你将seafdav部署到nginx/apache,你需要更改“share_name”的值。
    12. share_name = /

    每次配置文件被修改后,你需要重启Seafile服务器使之生效。

    1. ./seafile.sh restart

    示例配置 1: No nginx/apache

    你的WebDAV客户端将在地址http://example.com:8080访问WebDAV服务器。

    1. [WEBDAV]
    2. enabled = true
    3. port = 8080
    4. fastcgi = false
    5. share_name = /

    示例配置 2: With Nginx/Apache

    你的WebDAV客户端将在地址http://example.com/seafdav访问WebDAV服务器。

    1. [WEBDAV]
    2. enabled = true
    3. port = 8080
    4. fastcgi = true
    5. share_name = /seafdav

    在上面的配置中,’’’share_name’’’的值被改为’’’/seafdav’’’, 它是你指定给seafdav服务器的地址后缀。

    Nginx 无 HTTPS

    相应的Nginx配置如下 (无 https):

    1. location /seafdav {
    2. fastcgi_pass 127.0.0.1:8080;
    3. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    4. fastcgi_param PATH_INFO $fastcgi_script_name;
    5.  
    6. fastcgi_param SERVER_PROTOCOL $server_protocol;
    7. fastcgi_param QUERY_STRING $query_string;
    8. fastcgi_param REQUEST_METHOD $request_method;
    9. fastcgi_param CONTENT_TYPE $content_type;
    10. fastcgi_param CONTENT_LENGTH $content_length;
    11. fastcgi_param SERVER_ADDR $server_addr;
    12. fastcgi_param SERVER_PORT $server_port;
    13. fastcgi_param SERVER_NAME $server_name;
    14.  
    15. client_max_body_size 0;
    16.  
    17. access_log /var/log/nginx/seafdav.access.log;
    18. error_log /var/log/nginx/seafdav.error.log;
    19. }

    Nginx 有 HTTPS

    Nginx配置为https:

    1. location /seafdav {
    2. fastcgi_pass 127.0.0.1:8080;
    3. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    4. fastcgi_param PATH_INFO $fastcgi_script_name;
    5.  
    6. fastcgi_param SERVER_PROTOCOL $server_protocol;
    7. fastcgi_param QUERY_STRING $query_string;
    8. fastcgi_param REQUEST_METHOD $request_method;
    9. fastcgi_param CONTENT_TYPE $content_type;
    10. fastcgi_param CONTENT_LENGTH $content_length;
    11. fastcgi_param SERVER_ADDR $server_addr;
    12. fastcgi_param SERVER_PORT $server_port;
    13. fastcgi_param SERVER_NAME $server_name;
    14.  
    15. client_max_body_size 0;
    16.  
    17. fastcgi_param HTTPS on;
    18.  
    19. access_log /var/log/nginx/seafdav.access.log;
    20. error_log /var/log/nginx/seafdav.error.log;
    21. }

    Apache

    首先编辑 apache2.conf 文件, 添加如下这行到文件结尾(或者根据你的Linux发行版将其添加到 httpd.conf):

    1. FastCGIExternalServer /var/www/seafdav.fcgi -host 127.0.0.1:8080

    注意, /var/www/seafdav.fcgi 仅仅只是一个占位符, 实际在你的系统并不需要有此文件。

    第二, 修改Apache配置文件 (site-enabled/000-default):

    Apache 无 HTTPS

    根据你的Apache配置当你[将要部署 Seafile 和 Apache|已经部署 Seafile 和 Apache], 加入Seafdav的相关配置:

    1. ServerName www.myseafile.com
    2. DocumentRoot /var/www
    3. Alias /media /home/user/haiwen/seafile-server/seahub/media
    4. RewriteEngine On
    5. #
    6. # seafile fileserver
    7. #
    8. ProxyPass /seafhttp http://127.0.0.1:8082
    9. ProxyPassReverse /seafhttp http://127.0.0.1:8082
    10. RewriteRule ^/seafhttp - [QSA,L]
    11. #
    12. # seafile webdav
    13. #
    14. RewriteCond %{HTTP:Authorization} (.+)
    15. RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1]
    16. RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L]
    17. #
    18. # seahub
    19. #
    20. RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
    21. RewriteCond %{REQUEST_FILENAME} !-f
    22. RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    23.  

    Apache 有 HTTPS

    根据你的apache配置当你配置Seafile网站和Apache并启用Https, 加入seafdav的相关配置:

    1. ServerName www.myseafile.com
    2. DocumentRoot /var/www
    3. Alias /media /home/user/haiwen/seafile-server/seahub/media
    4. SSLEngine On
    5. SSLCertificateFile /etc/ssl/cacert.pem
    6. SSLCertificateKeyFile /etc/ssl/privkey.pem
    7. RewriteEngine On
    8. #
    9. # seafile fileserver
    10. #
    11. ProxyPass /seafhttp http://127.0.0.1:8082
    12. ProxyPassReverse /seafhttp http://127.0.0.1:8082
    13. RewriteRule ^/seafhttp - [QSA,L]
    14. #
    15. # seafile webdav
    16. #
    17. RewriteCond %{HTTP:Authorization} (.+)
    18. RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1]
    19. RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L]
    20. #
    21. # seahub
    22. #
    23. RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
    24. RewriteCond %{REQUEST_FILENAME} !-f
    25. RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    26.  

    关于客户端的注意事项

    Windows

    在Windows平台,我们推荐使用webdav客户端软件例如Cyberduck或BitKinex.
    webdav对于Windows浏览器的支持实现并不是十分可用,因为:

    1. Windows 浏览器需要利用HTTP数字认证。但是由于Seafile在服务器端不存储纯文本密码,所以它不支持这个特性。HTTP基本认证只被HTTPS支持(这是合理的)。但是浏览器不支持自我签署的证书。

    结论就是如果你有一个合法的ssl证书,你应该能过通过Windows浏览器来访问seafdav。否则你应该使用客户端软件。Windows XP被声明不支持HTTPS webdav.

    Linux

    在Linux平台你有更多的选择。你可以利用文件管理器例如Nautilus来连接webdav服务器,或者在命令行使用davfs2。

    使用davfs2

    1. sudo apt-get install davfs2
    2. sudo mount -t davfs -o uid= https://example.com/seafdav /media/seafdav/

    -o选项设置挂载目录的拥有者为,使得非root用户拥有可写权限。

    我们建议对于davfs2,禁用锁操作。你需要编辑/etc/davfs2/davfs2.conf

    1. use_locks 0

    Mac OS X

    Finder对于WebDAV的支持不稳定而且较慢. 所以我们建议使用webdav客户端软件如Cyberduck.

    常见问题

    客户端无法连接seafdav服务器

    默认, seafdav是未被启用的。检查你是否在seafdav.conf中设置enabled = true
    如果没有,更改配置文件并重启seafle服务器。

    客户端得到”Error: 404 Not Found”错误

    如果你将SeafDAV部署在Nginx/Apache, 请确保像上面的配置文件一样更改share_name的值。重启Seafile服务器后重新测试。