2011/1/25

筆記:如何在Ubuntu上使用Apache架設WebDAV

 

This guide explains how to set up WebDAV with Apache2 on an Ubuntu 8.10 server. WebDAV stands for Web-based Distributed Authoring and Versioning and is a set of extensions to the HTTP protocol that allow users to directly edit files on the Apache server so that they do not need to be downloaded/uploaded via FTP. Of course, WebDAV can also be used to upload and download files.

I do not issue any guarantee that this will work for you!

1 Preliminary Note

I'm using an Ubuntu 8.10 server with the IP address 192.168.0.100 here.

Because we must run all the steps from this tutorial with root privileges, we can either prepend all commands in this tutorial with the string sudo, or we become root right now by typing

  1: sudo su

 

2 Installing WebDAV



If Apache is not already installed, install it as follows:

  1: apt-get install apache2

Afterwards, enable the WebDAV modules:

  1: a2enmod dav_fs
  2: a2enmod dav

Restart Apache:

  1: /etc/init.d/apache2 restart

 

3 Creating A Virtual Host



I will now create a default Apache vhost in the directory /var/www/web1/web. For this purpose, I will modify the default Apache vhost configuration in /etc/apache2/sites-available/default. If you already have a vhost for which you'd like to enable WebDAV, you must adjust this tutorial to your situation.

First, we create the directory /var/www/web1/web and make the Apache user (www-data) the owner of that directory:

  1: mkdir -p /var/www/web1/web
  2: chown www-data /var/www/web1/web

Then we back up the default Apache vhost configuration (/etc/apache2/sites-available/default) and create our own one:

  1: mv /etc/apache2/sites-available/default /etc/apache2/sites-available/default_orig
  2: vi /etc/apache2/sites-available/default
  1: NameVirtualHost *
  2: <VirtualHost *>
  3:         ServerAdmin webmaster@localhost
  4: 
  5:         DocumentRoot /var/www/web1/web/
  6:         <Directory /var/www/web1/web/>
  7:                 Options Indexes MultiViews
  8:                 AllowOverride None
  9:                 Order allow,deny
 10:                 allow from all
 11:         </Directory>
 12: 
 13: </VirtualHost>

Then reload Apache:

  1: /etc/init.d/apache2 reload

 


4 Configure The Virtual Host For WebDAV


Now we create the WebDAV password file /var/www/web1/passwd.dav with the user test (the -c switch creates the file if it does not exist):
  1: htpasswd -c /var/www/web1/passwd.dav test

You will be asked to type in a password for the user test.

(Please don't use the -c switch if /var/www/web1/passwd.dav is already existing because this will recreate the file from scratch, meaning you lose all users in that file!)

Now we change the permissions of the /var/www/web1/passwd.dav file so that only root and the members of the www-data group can access it:

  1: chown root:www-data /var/www/web1/passwd.dav
  2: chmod 640 /var/www/web1/passwd.dav

Now we modify our vhost in /etc/apache2/sites-available/default and add the following lines to it:

  1: vi /etc/apache2/sites-available/default
  1: [...]
  2:         Alias /webdav /var/www/web1/web
  3: 
  4:         <Location /webdav>
  5:            DAV On
  6:            AuthType Basic
  7:            AuthName "webdav"
  8:            AuthUserFile /var/www/web1/passwd.dav
  9:            Require valid-user
 10:        </Location>
 11: [...]

The Alias directive makes (together with <Location>) that when you call /webdav, WebDAV is invoked, but you can still access the whole document root of the vhost. All other URLs of that vhost are still "normal" HTTP.

The final vhost should look like this:

  1: NameVirtualHost *
  2: <VirtualHost *>
  3:         ServerAdmin webmaster@localhost
  4: 
  5:         DocumentRoot /var/www/web1/web/
  6:         <Directory /var/www/web1/web/>
  7:                 Options Indexes MultiViews
  8:                 AllowOverride None
  9:                 Order allow,deny
 10:                 allow from all
 11:         </Directory>
 12: 
 13:         Alias /webdav /var/www/web1/web
 14: 
 15:         <Location /webdav>
 16:            DAV On
 17:            AuthType Basic
 18:            AuthName "webdav"
 19:            AuthUserFile /var/www/web1/passwd.dav
 20:            Require valid-user
 21:        </Location>
 22: </VirtualHost>

Reload Apache afterwards:

  1: /etc/init.d/apache2 reload

 


5 Testing WebDAV



We will now install cadaver, a command-line WebDAV client:

  1: apt-get install cadaver

To test if WebDAV works, type:

  1: cadaver http://localhost/webdav/

You should be prompted for a user name. Type in test and then the password for the user test. If all goes well, you should be granted access which means WebDAV is working ok. Type quit to leave the WebDAV shell:



  1: root@server1:~# cadaver http://localhost/webdav/
  2: Authentication required for webdav on server `localhost':
  3: Username: test
  4: Password:
  5: dav:/webdav/> quit
  6: Connection to `localhost' closed.
  7: root@server1:~#

 


6 Configure A Windows XP Client To Connect To The WebDAV Share



Click on My Network Places on your desktop (I have a German Windows, so the names are a bit different in the screenshots):


Select Add a Network Place from the Network Tasks menu (on the left):


The Add Network Place Wizard comes up. Click on the Next button:


Select Choose another network location, and click on Next:


Enter http://192.168.0.100:80/webdav as the location and click on Next. You must specify the port in the WebDAV URL (:80). For some strange reason this makes Windows XP accept the normal username (e.g. test) - otherwise Windows XP expects NTLM usernames (that would have the form www.example.com\test).


You will be prompted for a user name and a password. Type in the user name test and the password for the user test:


Then type in a name for the WebDAV folder:


To open the new connection, keep the Open this network place when I click Finish box checked, and click on Finish:


The WebDAV folder will then open where you can browse the contents of the /var/www/web1/web directory and its subdirectories on the server, and you will find an icon for your new WebDAV share in the My Network Places folder:


 


7 Configure A Linux Client (GNOME) To Connect To The WebDAV Share



If you want to connect to the WebDAV share from a GNOME desktop, go to Places > Connect to Server...:


Select WebDAV (HTTP) as the Service type, type in the Server (192.168.0.100 in this example) and then the Folder (webdav). Do not fill in a User Name yet because otherwise the connection will fail. Click on Connect afterwards:


Now you are being prompted for a user name and password. Type in test along with the password, then click on Connect:


You might get the following error...


... but at the same time the WebDAV share should appear on the desktop, which means you can ignore the error:


Double-click on the icon to open the WebDAV share:


 


8 Links



  • WebDAV: http://www.webdav.org
  • Apache: http://httpd.apache.org
  • Ubuntu: http://www.ubuntu.com/

     


    引用來源:http://www.howtoforge.com/how-to-set-up-webdav-with-apache2-on-ubuntu-8.10


  • 沒有留言:

    張貼留言

    注意:只有此網誌的成員可以留言。