On Debian 8, the Apache2 web server default file is
/var/www/html in . This directory is located on the root file system along with the operating system. You might want to move the document to another directory, such as mounting the filesystem separately.
In this tutorial, you will migrate Apache default files to a new location by moving files and changing Apache's configuration files.
To complete this tutorial, you will need:
- A non-root Debian 8 server that can use the sudo command, I recommend using Tencent Cloud's configured server . Or use Tencent Cloud Developer Lab for*free* to experiment.
- An Apache2 web server. For the installation tutorial, you can refer to here.
- Move the new location of the directory, here I use Tencent Cloud's file storage service .
In this tutorial, we will use a directory, which points to a file storage
/mnt/volume-nyc1-01 service mounted to the server .
When installing a fresh Apache, the document root is located at
/var/www/html . If you have a lot of websites on your server, the documentation directory will be different, and it is recommended that you search using the scheme below.
grep search the directory for Apache configuration documentation using the
/etc/apache2/sites-enabled following command:
grep -R "DocumentRoot" /etc/apache2/sites-enabled copy
-R The flag ensures that
grep the contents of the DocumentRoot are output in it.
The results will be similar to the following, if you install the site multiple results names and numbers may be different:
sites-enabled/000-default.conf DocumentRoot /var/www/html copy
Now that you have confirmed the location of the document root,
rsync copy the files to the new location using the command.
First, install with the following command
sudo apt-get install rsync copy
Then execute this command to copy the files:
sudo rsync -av /var/www/html /mnt/volume-nyc1-01 copy
-a flags preserves permissions and other directory attributes, while
-v providing verbose output so you can track progress.
Note: Make sure there are no trailing slashes on the directory. When there is a slash, rsync dumps the contents of the directory to the mount point instead of transferring it into the html directory.
These files will be synced to the new location, but now that the Apache configuration files are still using the old directory, we need to configure the new files.
By default Apache comes with two virtual host files,
First edit the
sudo nano /etc/apache2/sites-enabled/000-default.conf copy
DocumentRoot the line starting with and update it with the new position:
<VirtualHost *:80> ... ServerAdmin webmaster@localhost DocumentRoot /mnt/volume-nyc1-01/html
Next, look up Directory to see if it points to the original path, we need to update it to the new path. In a fresh install of Apache, there is no entry in the Directory default site. Add the following code to the configuration file so that Apache can use the new file from the new location:
... ServerAdmin webmaster@localhost DocumentRoot /mnt/volume-nyc1-01/html <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /mnt/volume-nyc1-01/html/> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> ...
Directory block sets some restrictive default permissions, and the second block configures the options for the new web
/mnt/volume-nyc1-01/html/ in .
Note: You should look for the other location in the config file where the original path shows and change it to the new location. In addition to
Directorysettings, you can also find things like aliases and overrides that need to be updated. Wherever you
grepsee the path to the original document root in the output, you will need to update the path to reflect the new location.
After making the necessary changes, save the file.
Next, we turn to SSL configuration. On a fresh install, SSL has not been configured, if you have never configured SSL, ignore the following.
Note: If SSL is not enabled, the
ssl-default.conffiles are only in the
/etc/apache2/sites-availabledirectory. If you have SSL enabled, the server will
sites-availablelink to the
/etc/apache2/sites-enableddirectory from the file. In this case, you can edit the file from either directory.
sudo nano /etc/apache2/sites-available/ssl-default.conf copy
Make the same changes as before by making changes
DocumentRoot and making sure to configure them correctly:
... <IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin webmaster@localhost DocumentRoot /mnt/volume-nyc1-01 <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /mnt/volume-nyc1-01/html/> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> ...
After making configuration changes, make sure the syntax is correct with the following command:
sudo apachectl configtest copy
You will see results like this:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK
In a default installation, you will see the preceding message, which you can safely ignore. As long as you see Syntax OK, restart the web server.
Restart Apache with the following command:
sudo systemctl reload apache2 copy
After the server restarts, go to the website you changed, and if all is well, don't forget to delete the original copy of the data.
In this tutorial, you learn to change the Apache document root to a new location. This can help you with basic web server management, and it also allows you to take advantage of other storage devices, such as Tencent Cloud File Storage Service , an important step in scaling your website as your needs change.