您的位置:首页 > 运维架构 > Apache

Ubuntu 9.10 Server 配置Apache + WebDav 实现文档协同管理

2010-06-01 16:36 417 查看
先来了解一下百度百科关于WebDav(Web-based Distributed Authoring and Versioning)的解释

一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

下面来看如何实现文档的协同管理

1安装软件及模块一览

  (1)Apache2.2.14  自己下载编译。未用ubuntu 9.10 server 下apt-get安装的apache2 是因为这个版本的apache2在启用ssl的时候总是报undefined symbol apr_ldap_ssl_init错误,此处我怀疑可能是ubuntu9.10 server的问题,我在虚拟机ubuntu 8.04 desktop下配置成功。

2 加载Dav Module

     在对Apache进行编译时已经开启了dav的设置(具体参见Ubuntu 9.10 Server 配置基于SSL的Subversion,svn需要webdav协议支持)

#sudo ./configure   –enable-dav –enable-dav-fs –enable-so
–enable-ssl –enable-maintainer-mode -prefix=/usr/local/apache2
–enable-mods-shared=all



      注意enable-dav和enable-dav-fs是我们文档协同所需要的。我们可以通过    

cd /usr/local/apache2/bin
sudo ./httpd -l



      来查看已加载的Module。另外自主编译的方式无法通过修改httpd.conf,加入

LoadModule dav_module modules/mod_dav.so

LoadModule dav_fs_module modules/mod_dav_fs.so

      来完成,modules文件夹下也没有这两个so文件,启动apache后会报文件已加载,我搞了很长时间才明白这点。

3 配置WebDav

   在httpd.conf文件下 将#Include conf/extra/httpd-dav.conf的注释去掉,我们来看一下httpd-dav.conf的配置

DavLockDB "/usr/local/apache2/var/DavLock"

Alias /uploads "/usr/local/apache2/uploads"

<Directory "/usr/local/apache2/uploads">

    Dav On

    Options Indexes FollowSymLinks

    Order Allow,Deny

    Allow from all

    AuthType Basic

    AuthName DAV-upload

    Require valid-user

    # You can use the htpasswd program to create the password database:

    #   htpasswd -c "/usr/local/apache2/user.passwd" DAV-upload admin

    AuthUserFile "/svn/authfile" 
    <Limit GET OPTIONS PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

    </Limit>

</Directory>

注意一定是Allow from all 另外我使用了Basic的验证方法,要求用户验证;这里Subversion和WebDav使用的是同样的用户文件;Options Indexes FollowSymLinks允许我们在浏览器访问时遍历文件。

4 权限

   #cd /usr/local/apache2

   #sudo mkdir uploads

   #sudo chown www-data:www-data uploads

   #sudo chmod 777 uploads

   以上创建上传目录并设置权限为可读可写  www-data为ubuntu的用户和组

   另外可能需要手动创建 DavLockDB

   #cd /usr/local/apache2

   #sudo mkdir var

   #cd var

   #sudo vim DavLock

   #cd ..

   #cd ..

   #sudo chown www-data:www-data uploads

   #sudo chmod -R 777 var/

5 WebDav客户端

  分别使用了XP和Vista自带的web folder

   使用方法,在XP的资源管理器下选择增加网上邻居(Vista为添加一个网络位置)输入http://your ip or sitename/uploads  并输入用户名和密码。然后再word里就可以直接对文件进行增加修改了,而且当一个用户在更改的时候,其他用户只能只读访问。

  


当一个用户打开某文件,会加一个只读锁,其他的用户打开该文件时提示



最后附上fiddler抓到的http包,(webdav协议是http协议的扩展,所以可以观察到)

HTTP/1.1 207 Multi-Status

Date: Tue, 01 Jun 2010 08:30:34 GMT

Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8g DAV/2 SVN/1.6.2

Content-Length: 966

Keep-Alive: timeout=5, max=100

Connection: Keep-Alive

Content-Type: text/xml; charset="utf-8"

<?xml version="1.0" encoding="utf-8"?>

<D:multistatus xmlns:D="DAV:">

<D:response xmlns:lp1="DAV:" xmlns:lp3="http://subversion.tigris.org/xmlns/dav/" xmlns:lp2="http://apache.org/dav/props/">

<D:href>/uploads/blackjack/Post.doc</D:href>

<D:propstat>

<D:prop>

<lp1:resourcetype/>

<lp1:creationdate>2010-06-01T06:11:10Z</lp1:creationdate>

<lp1:getcontentlength>46080</lp1:getcontentlength>

<lp1:getlastmodified>Tue, 01 Jun 2010 06:11:10 GMT</lp1:getlastmodified>

<lp1:getetag>"23a06-b400-487f1d6fea216"</lp1:getetag>

<lp2:executable>F</lp2:executable>

<D:supportedlock>

<D:lockentry>

<D:lockscope><D:exclusive/></D:lockscope>

<D:locktype><D:write/></D:locktype>

</D:lockentry>

<D:lockentry>

<D:lockscope><D:shared/></D:lockscope>

<D:locktype><D:write/></D:locktype>

</D:lockentry>

</D:supportedlock>

<D:lockdiscovery/>

<D:getcontenttype>application/msword</D:getcontenttype>

</D:prop>

<D:status>HTTP/1.1 200 OK</D:status>

</D:propstat>

</D:response>

</D:multistatus>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: