Solved

Install webdav on a linux plesk server

Posted on 2009-04-14
18
1,983 Views
Last Modified: 2013-12-06
Hi!

For a project, I need webdav. But I couldn't make it works and I find a good tutorial.

So, I've a Plesk server(8.6), so what I must do?

I don't know if webdav is installed, I've tried to put something like:

<Directory /var/www/vhosts/nargzul.com/webdav>
 DAV on
 <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
 </Limit>
</Directory>
0
Comment
Question by:Nargzul
  • 10
  • 8
18 Comments
 
LVL 29

Expert Comment

by:Michael W
ID: 24137091
To use WebDAV, you have to have access to the httpd.conf file. You cannot use an .htaccess file for WebDAV.

A quick way to see if you have it installed along with php, is to create a simple index.php file with <?php phpinfo(); ?> in that file. When you open it up in a browser, it will reveal if mod_dav and mod_dav_fs modules are enabled in your Apache web server instance.

0
 
LVL 1

Author Comment

by:Nargzul
ID: 24137122
I've these enebled:

mod_dav mod_dav_fs mod_dav_svn


And I've added at ../conf/httpd.include these lines in the main virtualhost section

I've also tried with the absolut path


<Directory "/webdav">

                Options Indexes

                DAV on

                <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

                </Limit>

</Directory>

Open in new window

0
 
LVL 1

Author Comment

by:Nargzul
ID: 24137175
I forgotten to say, after this, when I go on the url(http://nargzul.com/webdav), I saw a "403 forbidden" error.

If I try to connect it directly with ubuntu I've an error too.
0
 
LVL 1

Author Comment

by:Nargzul
ID: 24137338
And this is the complete error message:

Forbidden

You don't have permission to access /webdav/ on this server.
Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.5.1 mod_jk/1.2.25 mod_python/3.3.1 Python/2.5.2 PHP/5.2.4-2ubuntu5.5 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g mod_perl/2.0.3 Perl/v5.8.8 Server at nargzul.com Port 80
0
 
LVL 29

Expert Comment

by:Michael W
ID: 24137487
I wrote an article/document on how to do this under RHEL/CentOS, which can be adapted for your Apache environment.

http://www.experts-exchange.com/Software/Server_Software/Web_Servers/Q_24043953.html

---

Here is another tutorial I happened to stumble upon as well for Ubuntu platforms...

http://www.howtoforge.com/how-to-set-up-webdav-with-apache2-on-ubuntu-8.10
0
 
LVL 1

Author Comment

by:Nargzul
ID: 24137542
Wow, you tutorial looks great, I've just one question,

on my config file I've this notice:

# ATTENTION!
# DO NOT MODIFY THIS FILE OR ANY PART OF IT. THIS CAN RESULT IN IMPROPER PLESK
# FUNCTIONING OR FAILURE, CAUSE DAMAGE AND LOSS OF DATA. IF YOU REQUIRE CUSTOM
# MODIFICATIONS TO BE APPLIED TO THE CONFIGURATION, PLEASE, PERFORM THEM IN THE
# FOLLOWING FILE(S):
# /var/www/vhosts/nargzul.com/conf/vhost.conf
# /var/www/vhosts/nargzul.com/subdomains/<subdomain-name>/conf/vhost.conf


But the virtualhost you describe is already in this file, so:
-I must modify this file
-I can put your exemple(with small modifications) in the vhost.conf file?
-I must modify the structure of your exemple to put in the vhost.conf file?
0
 
LVL 29

Expert Comment

by:Michael W
ID: 24137924
Post a copy of your vhost.conf and let me take a look at it.

0
 
LVL 1

Author Comment

by:Nargzul
ID: 24145759
0
 
LVL 29

Expert Comment

by:Michael W
ID: 24148605
I have attached the completed WebDAV part that you need, however you still need to create the WebDAV userid and also setup the WebDAV passwd.dav and group files as well.

The last step is to create our password file (unless we're using an existing one) and if necessary the directory we're enabling with WebDAV:

'mkdir -pv /var/www/vhosts/nargzul.com/httpdocs/webdav/passwd/'
'htpasswd -c /var/www/vhosts/nargzul.com/httpdocs/webdav/passwd/passwd.dav WebDavGroup'
'chgrp apache /var/www/vhosts/nargzul.com/httpdocs/webdav/passwd/passwd.dav'
'chmod 775 /var/www/vhosts/nargzul.com/httpdocs/webdav/passwd/passwd.dav'

Here is an example of using a combination password file and group file rather than just a
basic user login:

passwd.dav
     myuserid:kzIZet0Sl1eBs
     someone_else:3JMBwk6jj0/w6

WebDavGroup
     webdav: myuserid someone_else

vhost.conf.txt
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 1

Author Comment

by:Nargzul
ID: 24148927
Yes I know for the user, but it's a step after ;)

I've watched your file, but there is a lots of things aloready in the httpd.include, no?
0
 
LVL 1

Author Comment

by:Nargzul
ID: 24150436
I've put what you said in the vhost file(just without the part about the authentication, and as you can see:

http://nargzul.com/webdav/

It doesn't work :(
0
 
LVL 29

Expert Comment

by:Michael W
ID: 24151141
After you added in the vhost entry w/ webdav, did you bounce the Apache daemon? This is required each time the vhost.conf entries are modified.

As for the directory listing, the site might actually be working as the default Apache rule upon Linux servers is not to show the directory contents/listing.

0
 
LVL 1

Author Comment

by:Nargzul
ID: 24151217
I suppose that is OK:

root@nargzul:/var/www/vhosts/nargzul.com/conf# /etc/init.d/apache2 restart
 * Restarting web server apache2                                                                                                                                                                       [ OK ]

So what can I do for?

I find strange that I've already any virtualhost in the httpd.include AND in the vhost.conf? And is it sure that the vhost.conf is read? Because by default there isn't any vhost.conf, only httpd.conf.

Thanks for all your answers
0
 
LVL 29

Expert Comment

by:Michael W
ID: 24152030
I don't use Plesk (or any other shell/web interface) just for this very reason since it screws up the virtual host environment royally.

The only other idea I can think of is that your provider has something in the httpd.conf that is restricting the HTTP methods allowed against the server. There is possibly a <Limit> statement in the default httpd that needs to be modified.
0
 
LVL 1

Author Comment

by:Nargzul
ID: 24152058
My provider?

I've a root access on this machine ;)
0
 
LVL 29

Expert Comment

by:Michael W
ID: 24158008
In all honesty, I don't know much about Ubuntu as a whole as it's based on the Debian distro. I focus on RedHat-based platforms (i.e. RHEL, CentOS & Fedora) as it is much easier to setup -- especially when it comes to LAMP application needs.

Under Apache 2.2, here's a copy of my virthost.conf I included through the httpd.conf and it works flawlessly...

NameVirtualHost *

Listen 192.168.1.1:80
 

<VirtualHost *>

   ServerName dev.mydomain.com 

   DocumentRoot /web/dev.mydomain.com/htdocs/webdav

   ErrorLog /var/web/dev.mydomain.com/error_log

   CustomLog /var/web/dev.mydomain.com/access_log common

   ScriptAlias /cgi-bin/ "/web/dev.mydomain.com/htdocs/webdav"

   <Directory /web/dev.mydomain.com/htdocs/webdav>

      Options Indexes FollowSymLinks Multiviews +Includes All

      AllowOverride All

   </Directory>
 

  DavLockDB /web/dev.mydomain.com/working/DavLockDB
 

  <Directory /web/dev.mydomain.com/htdocs/webdav>

    DAV on

    AuthType Basic

    AuthName WebDAV

    AuthUserFile /web/dev.mydomain.com/passwd/passwd.dav

    AuthGroupFile /web/dev.mydomain.com/passwd/WebDavGroup

    require group magik

    Options Indexes FollowSymLinks Multiviews +Includes All

    AllowOverride All

      <Limit GET HEAD OPTIONS CONNECT POST PROPFIND PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

        Order Allow,Deny

        Allow from all

      </Limit>

  </Directory>

</VirtualHost>

Open in new window

0
 
LVL 1

Author Comment

by:Nargzul
ID: 24158463
It works without group? It's possible that this is the problem?
0
 
LVL 29

Accepted Solution

by:
Michael W earned 500 total points
ID: 24159933
Here's is a copy of my home WebDAV entry w/o the group or username needs.

Also, I have included two code file snippets that I use for allowing the directory contents to be listed in an index format. Just save the two files (i.e. header.htm and index.php) in the /webdav/ directory and when the directory is seen via using a web browser, it should only reveal the contents of the webdav directory.

Virtual Host w/ WebDAV enabled

==============================

<VirtualHost *:80>

 ServerName mydomain.com 

 ServerAlias www.mydomain.com

 DocumentRoot /web/mydomain.com/htdocs

 ErrorLog /var/web/mydomain.com/error_log

 CustomLog /var/web/mydomain.com/access_log common

 ScriptAlias /cgi-bin/ "/web/mydomain.com/htdocs/"

 <Directory /web/mydomain.com>

     Options Indexes FollowSymLinks Multiviews +Includes

     AllowOverride All

 </Directory>

 Alias /webdav "/web/mydomain.com/htdocs/webdav"

 DavLockDB /web/mydomain.com/working/DAVLockDB

 <Directory /web/mydomain.com/htdocs/webdav>

   DAV On

 </Directory>

</VirtualHost>
 
 

WebDAV header.htm

=================

<html>
 

<head>

<meta http-equiv="Content-Type"

content="text/html; charset=iso-8859-1">

<title>WebDAV Directory Index</title>

</head>
 

<body bgcolor="#000000" text="#FFFFFF" link="#00FFFF" vlink="#00FFFF">

<p align="center">

<b><font size="5" face="Tahoma">WebDAV Directory Index</td>

</font></b>

</center>
 
 
 

WebDAV index.php

================

<?php

    $header = "header.htm";
 

    if (file_exists($header)){

        $newfile = fopen($header,"r");

        $content = fread($newfile, filesize($header));

        fclose($newfile);

        print $content;

    }
 

    if ($handle = opendir('./')) {

        while (false !== ($file = readdir($handle))) {
 

            if($file != '..' 

                && $file != '.' 

                && $file != '.DAV'

                && $file != '.backups'

                && $file != 'index.php'

                && $file != 'header.htm' 

                && $file != '.htaccess') {
 

                echo '<ul>';

                if(is_dir($file)) {

                    echo '<li>Directory : <a href="'.$file.'"> '.$file.'</a>/</li>';

                } else {

                    echo '<li><a href="'.$file.'"> '.$file.'</a></li>';

                }

                echo '</ul>';

            }

        }

    } 

?>

Open in new window

0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Hi, in this article I'm going to teach you how to run your own site, and how to let people in (without IP). I'll talk about and explain each step... :) By the way, everything in this Tutorial is completely free and legal. This article is for …
Cloud file services can fill many different roles for your business. Often, the use of cloud file services begins with employees using consumer products, like Dropbox, to share files with customers and each other. While sync-and-share can be an effe…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now