How to Setup a WebDAV Server Using Apache on CentOS 7
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.
Prerequisites
- 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.
Step one: Update the system
sudo yum install epel-release
sudo yum update -y
sudo shutdown -r now
After the reboot, use the same sudo user to log in.
Step two: Install Apache
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
Step three: Setup WebDAV
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
Step four: Create a virtual host for WebDAV
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:
:wq!
Restart Apache to put your changes into effect:
sudo systemctl restart httpd.service
Step five: Modify firewall rules
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload
Step six: Test the functionality of the WebDAV server from a local machine
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:
cadaver http://<your-server-ip>/webdav/
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:
dav:/webdav/> exit
If you want to learn more about cadaver, you can look up the cadaver manual in the Bash shell:
man cadaver
or
cadaver -h
This concludes our tutorial. Thank you for reading.