# WebDAV擴展
Seafile WebDAV Server(SeafDAV)在Seafile Server 2.1.0版本中被加入.
在下面的維基中, 我們假設你將Seafile安裝到`/data/haiwen`目錄下。
### SeafDAV配置
SeafDAV配置文件是`/data/haiwen/conf/seafdav.conf`. 如果它還沒有被創建,你可以自行創建它。
~~~[WEBDAV]
# 默認值是false。改為true來使用SeafDAV server。
enabled = true
port = 8080
# 如果fastcgi將被使用則更改fastcgi的值為true。
fastcgi = false
# 如果你將seafdav部署到nginx/apache,你需要更改“share_name”的值。
share_name = /
~~~
每次配置文件被修改后,你需要重啟Seafile服務器使之生效。
~~~./seafile.sh restart
~~~
### 示例配置 1: No nginx/apache
你的WebDAV客戶端將在地址`[http://example.com:8080](http://example.com:8080)`訪問WebDAV服務器。
~~~[WEBDAV]
enabled = true
port = 8080
fastcgi = false
share_name = /
~~~
### 示例配置 2: With Nginx/Apache
你的WebDAV客戶端將在地址`[http://example.com/seafdav](http://example.com/seafdav)`訪問WebDAV服務器。
~~~[WEBDAV]
enabled = true
port = 8080
fastcgi = true
share_name = /seafdav
~~~
在上面的配置中,'''share_name'''的值被改為'''/seafdav''', 它是你指定給seafdav服務器的地址后綴。
#### Nginx 無 HTTPS
相應的Nginx配置如下 (無 https):
~~~ location /seafdav {
fastcgi_pass 127.0.0.1:8080;
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;
client_max_body_size 0;
access_log /var/log/nginx/seafdav.access.log;
error_log /var/log/nginx/seafdav.error.log;
}
~~~
#### Nginx 有 HTTPS
Nginx配置為https:
~~~ location /seafdav {
fastcgi_pass 127.0.0.1:8080;
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;
client_max_body_size 0;
fastcgi_param HTTPS on;
access_log /var/log/nginx/seafdav.access.log;
error_log /var/log/nginx/seafdav.error.log;
}
~~~
#### Apache
首先編輯 `apache2.conf` 文件, 添加如下這行到文件結尾(或者根據你的Linux發行版將其添加到 `httpd.conf`):
~~~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的相關配置:
~~~
ServerName www.myseafile.com
DocumentRoot /var/www
Alias /media /home/user/haiwen/seafile-server/seahub/media
RewriteEngine On
#
# seafile fileserver
#
ProxyPass /seafhttp http://127.0.0.1:8082
ProxyPassReverse /seafhttp http://127.0.0.1:8082
RewriteRule ^/seafhttp - [QSA,L]
#
# seafile webdav
#
RewriteCond %{HTTP:Authorization} (.+)
RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1]
RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L]
#
# seahub
#
RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
~~~
#### Apache 有 HTTPS
根據你的apache配置當你[配置Seafile網站和Apache并啟用Https](#), 加入seafdav的相關配置:
~~~
ServerName www.myseafile.com
DocumentRoot /var/www
Alias /media /home/user/haiwen/seafile-server/seahub/media
SSLEngine On
SSLCertificateFile /etc/ssl/cacert.pem
SSLCertificateKeyFile /etc/ssl/privkey.pem
RewriteEngine On
#
# seafile fileserver
#
ProxyPass /seafhttp http://127.0.0.1:8082
ProxyPassReverse /seafhttp http://127.0.0.1:8082
RewriteRule ^/seafhttp - [QSA,L]
#
# seafile webdav
#
RewriteCond %{HTTP:Authorization} (.+)
RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1]
RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L]
#
# seahub
#
RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
~~~
### 關于客戶端的注意事項
### Windows
在Windows平臺,我們推薦使用webdav客戶端軟件例如Cyberduck或BitKinex.webdav對于Windows瀏覽器的支持實現并不是十分可用,因為:
~~~
Windows 瀏覽器需要利用HTTP數字認證。但是由于Seafile在服務器端不存儲純文本密碼,所以它不支持這個特性。HTTP基本認證只被HTTPS支持(這是合理的)。但是瀏覽器不支持自我簽署的證書。
~~~
結論就是如果你有一個合法的ssl證書,你應該能過通過Windows瀏覽器來訪問seafdav。否則你應該使用客戶端軟件。Windows XP被聲明不支持HTTPS webdav.
### Linux
在Linux平臺你有更多的選擇。你可以利用文件管理器例如Nautilus來連接webdav服務器,或者在命令行使用davfs2。
使用davfs2
~~~sudo apt-get install davfs2
sudo mount -t davfs -o uid= https://example.com/seafdav /media/seafdav/
~~~
-o選項設置掛載目錄的擁有者為,使得非root用戶擁有可寫權限。
我們建議對于davfs2,禁用鎖操作。你需要編輯/etc/davfs2/davfs2.conf
~~~ 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服務器后重新測試。
- 介紹
- 概覽
- Seafile 組件
- 研發路線圖
- 常見問題解答
- 修改日志
- 我要參與
- Linux 下部署 Seafile 服務器
- 部署 Seafile 服務器(使用 SQLite)
- 部署 Seafile 服務器(使用 MySQL)
- Nginx 下配置 Seahub
- Nginx 下啟用 Https
- Apache 下配置 Seahub
- Apache 下啟用 Https
- Seafile LDAP 配置
- 開機啟動 Seafile
- 防火墻設置
- Logrotate 管理系統日志
- 使用 Memcached
- 使用 NAT
- 非根域名下部署 Seahub
- 從 SQLite 遷移至 MySQL
- 安裝常見問題
- 升級
- Windows 下部署 Seafile 服務器
- 下載安裝 Windows 版 Seafile 服務器
- 安裝 Seafile 為 Windows 服務
- 所用端口說明
- 升級
- 從 Windows 遷移到 Linux
- 垃圾回收
- 部署 Seafile 專業版服務器
- 下載安裝 Seafile 專業版服務器
- 從社區版遷移至專業版
- 升級
- Amazon S3 下安裝
- OpenStackSwift 下安裝
- Ceph 下安裝
- 配置選項
- 文件搜索說明
- 集群部署
- 集群中啟用搜索和后臺服務
- NFS 下集群安裝
- 常見問題解答
- 軟件許可協議
- 服務器個性化配置
- ccnet.conf
- seafile.conf
- seahub_settings.py
- 發送郵件提醒
- 個性化郵件提醒
- 用戶管理
- 存儲容量與文件上傳/下載大小限制
- 自定義 Web
- 管理員手冊
- 賬戶管理
- 日志
- 備份與恢復
- Seafile FSCK
- Seafile GC
- WebDAV 和 FUSE 擴展
- WebDAV 擴展
- FUSE 擴展
- 安全選項
- 安全特性
- 日志和審計
- 開發文檔
- 編譯 Seafile
- Linux
- Windows
- Max OS X
- Server
- 開發環境
- 編程規范
- Web API
- Python API
- 數據模型
- 服務器組件
- 同步算法