Solved

Install webdav on a linux plesk server

Posted on 2009-04-14
18
2,024 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 Worsham
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
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
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 Worsham
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 Worsham
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 Worsham
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
 
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 Worsham
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 Worsham
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 Worsham
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 Worsham 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

NFR key for Veeam Backup for Microsoft Office 365

Veeam is happy to provide a free NFR license (for 1 year, up to 10 users). This license allows for the non‑production use of Veeam Backup for Microsoft Office 365 in your home lab without any feature limitations.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Domino Website - Redirection 12 84
Apache/PHP: Cannot make phpinfo() and phpmyadmin work 4 57
wamp versus xampp 4 63
Backdated  Files. 2 8
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…
If you are a web developer, you would be aware of the <iframe> tag in HTML. The <iframe> stands for inline frame and is used to embed another document within the current HTML document. The embedded document could be even another website.
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…
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…

790 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