Install webdav on a linux plesk server

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>
LVL 1
NargzulAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Michael WorshamStaff Infrastructure ArchitectCommented:
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.

NargzulAuthor Commented:
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

NargzulAuthor Commented:
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.
Active Protection takes the fight to cryptojacking

While there were several headline-grabbing ransomware attacks during in 2017, another big threat started appearing at the same time that didn’t get the same coverage – illicit cryptomining.

NargzulAuthor Commented:
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
Michael WorshamStaff Infrastructure ArchitectCommented:
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
NargzulAuthor Commented:
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?
Michael WorshamStaff Infrastructure ArchitectCommented:
Post a copy of your vhost.conf and let me take a look at it.

NargzulAuthor Commented:
Michael WorshamStaff Infrastructure ArchitectCommented:
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
NargzulAuthor Commented:
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?
NargzulAuthor Commented:
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 :(
Michael WorshamStaff Infrastructure ArchitectCommented:
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.

NargzulAuthor Commented:
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
Michael WorshamStaff Infrastructure ArchitectCommented:
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.
NargzulAuthor Commented:
My provider?

I've a root access on this machine ;)
Michael WorshamStaff Infrastructure ArchitectCommented:
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

NargzulAuthor Commented:
It works without group? It's possible that this is the problem?
Michael WorshamStaff Infrastructure ArchitectCommented:
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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
File Sharing Software

From novice to tech pro — start learning today.