Solved

Install webdav on a linux plesk server

Posted on 2009-04-14
18
1,994 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
U.S. Department of Agriculture and Acronis Access

With the new era of mobile computing, smartphones and tablets, wireless communications and cloud services, the USDA sought to take advantage of a mobilized workforce and the blurring lines between personal and corporate computing resources.

 
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

Zoho SalesIQ

Hassle-free live chat software re-imagined for business growth. 2 users, always free.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In my time as an SEO for the last 2 years and in the questions I have assisted with on here I have always seen the need to redirect from non-www urls to their www versions. For instance redirecting http://domain.com (http://domain.com) to http…
As a financial services provider, your business is impacted by two of the strictest federal regulations on record: the Sarbanes-Oxley Act and the Gramm-Leach-Bliley Act. Correctly implementing faxing into your organization to provide secure, real-ti…
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…

932 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

8 Experts available now in Live!

Get 1:1 Help Now