WebDAV stands for "Web-based Distributed Authoring and Versioning". It's an extension of the HTTP protocol that allows users to manage and share files stored on a WebDAV-enabled web server.
This tutorial will show you how to setup a WebDAV server using Apache on a Vultr CentOS 7 server instance.
A Vultr CentOS 7 server instance.
A non-root sudo user. You can learn more about how to create a sudo user in this Vultr tutorial.
sudo yum install epel-release sudo yum update -y sudo shutdown -r now
After the reboot, use the same sudo user to log in.
Install Apache using YUM:
sudo yum install httpd
Disable Apache's default welcome page:
sudo sed -i 's/^/#&/g' /etc/httpd/conf.d/welcome.conf
Prevent the Apache web server from displaying files within the web directory:
sudo sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/httpd/conf/httpd.conf
Start the Apache web server:
sudo systemctl start httpd.service sudo systemctl enable httpd.service
For Apache, there are three WebDAV-related modules which will be loaded by default when a Apache web server getting started. You can confirm that with this command:
sudo httpd -M | grep dav
You should be presented with:
dav_module (shared) dav_fs_module (shared) dav_lock_module (shared)
Next, create a dedicated directory for WebDAV:
sudo mkdir /var/www/html/webdav sudo chown -R apache:apache /var/www/html sudo chmod -R 755 /var/www/html
For security purposes, you need to create a user account, say it is "user001", to access the WebDAV server, and then input your desired password. Later, you will use this user account to log into your WebDAV server.
sudo htpasswd -c /etc/httpd/.htpasswd user001
Modify the owner and permissions in order to enhance security:
sudo chown root:apache /etc/httpd/.htpasswd sudo chmod 640 /etc/httpd/.htpasswd
sudo vi /etc/httpd/conf.d/webdav.conf
Populate the file with:
DavLockDB /var/www/html/DavLock <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html/webdav/ ErrorLog /var/log/httpd/error.log CustomLog /var/log/httpd/access.log combined Alias /webdav /var/www/html/webdav <Directory /var/www/html/webdav> DAV On AuthType Basic AuthName "webdav" AuthUserFile /etc/httpd/.htpasswd Require valid-user </Directory> </VirtualHost>
Save and quit:
Restart Apache to put your changes into effect:
sudo systemctl restart httpd.service
sudo firewall-cmd --zone=public --permanent --add-service=http sudo firewall-cmd --reload
In order to take advantage of WebDAV, you need to use a qualified client. For example, you can install a program called cadaver on a CentOS 7 desktop:
sudo yum install cadaver
Having cadaver installed, use the following command to access the WebDAV server:
Use the username "user001" and the password you setup earlier to log in.
In the cadaver shell, you can upload and organize files as you wish. Here are some examples.
To upload a local file "/home/user/abc.txt" to the WebDAV server:
dav:/webdav/> put /home/user/abc.txt
To create a directory "dir1" on the WebDAV server:
dav:/webdav/> mkdir dir1
To quit the cadaver shell:
If you want to learn more about cadaver, you can look up the cadaver manual in the Bash shell:
This concludes our tutorial. Thank you for reading.