Apache web server is probably the most used web server across platforms including different Linux distributions and Windows. The web server is used to deliver web content and can serve many queries at once.
It is often the preferred choice by professionals for building different web projects. Having at least basic knowledge of this web server is vital for any young professional who wants to start a career as a Linux system administrator.
In this short tutorial, you are going to learn how to modify the root directory for Apache web server. For the purpose of this tutorial, we will use Ubuntu/Debian and RHEL/CentOS/Fedora based installations of the web server.
However the paths and directives are practically the same for other distributions as well, so you will be able to apply the learned in different OSes as well.
To make the necessary changes you need to modify the DocumentRoot
directive of the web server. This is the directory from which Apache will read the contents that the visitor will access over browser. Or in other words, this is the directory that forms the tree of directories that will be accessible over web.
The default DocumentRoot for Apache is:
/var/www/html or /var/www/
These paths are described in the Apache’s configuration file.
Ubuntu/Debian
/etc/apache2/sites-enabled/000-default /etc/apache/apache2.conf
CentOS/RHEL/Fedora
/etc/httpd/conf/httpd.conf
To change the document root for your Apache web server simply open the corresponding file with your favourite text editor and search for DocumentRoot
.
# # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "/var/www/html"
After that change the path to the new target directory and make sure that Apache is able to read/write in that directory. Once you have modified the DocumentRoot, save the file and restart apache with:
# systemctl restart apache [For SystemD] # service httpd restart [For SysVinit]
Final thoughts
The change of default document root is an easy task that can be completed in a couple of minutes. When making such changes is important to make sure that you do not make any typos and make sure to always restart Apache after making changes to its configuration file.
Hi,
I have a question. I do not want to change the default setting in httpd.conf of DocumentRoot “/var/www/html” but I also want web files to be in DocumentRoot “/home/www/html”
How do I do that?
If you install ispconfig make site server name (hosname -f) with ispconfig.
Delete 000-default.conf
Create symlink.
Restart apache.
Hello,
I did that and now I’m receiving Forbidden. error 403. I’m using Ubuntu 16 LTS.
Did everything as suggested. Still the html files saved in my new folder do not load in the web browser.
@Saurabh,
Which Linux distributions are you using? Ubuntu or CentOS?
It doesn’t help i’m trying different path from DocumentRoot “/var/www/html” to /usr/share/tomcat/myApps its not worked its needs to more shape before publishing.
Point 1 is pretty known stuff use netstat and some other commands, however it will not show all that is moved over the connection. Some things could be hidden from netstan thing…
Point 2, and somebody bad could gain access to root sudo stuff,… I had issues with that thing, and I have tracked them to some place in africa… but after that I was not able to track them further ,…
@ Marin Todorov I will try to use point 3 , …but chmod will not allow your file to be modified … but when moved on Windows and …then will be opened… to … well, not nice stuff….
It sounds to me like a bad web server configuration or something like that. Try running Apache as separate user/group that way it will not be able to write outside of the given directory. While you might be familiar with some of the Apache security concepts, I would recommend you having a look at https://www.tecmint.com/apache-security-tips/ as it my contain information that can help you improve your server’s security.
Now I would have few questions.
1. How would I see every connection on my ps if I use netstat command?
2. Is is possible to see the content of the root, in order to prevent some bad stuff being installed on your Linux device, as well as having chance to observe firmware into more detail.
3. How to prevent somebody to copy some files from your pc….
@Dusko,
Here are the answers to your questions.
1. Yes, you can use netstat command to list all active connections to your VPS, if you don’t know how to check, here is the advanced guide on netstat command with their practical examples
20 netstat Command to Monitor Network Connections
2. Unless, until someone have physical access to system, then only can someone able to install softwares…
3. Just enable Firewall on the system and open only required ports and also if possible protect your system with grub password..
I would like to add something to points 2 and 3.
2 – Only users with root/sudo access can install additional packages on your system
3 – If you want to protect files from being copied you can use chmod and chown utility so that only your user/group can access the files you want to protect