How To Move an Apache Web Root Directory to a New Location on Ubuntu
From https://www.digitalocean.com/community/tutorials/how-to-move-an-apache-web-root-to-a-new-location-on-ubuntu-16-04
Prerequisites
To complete this guide, you will need:
An Ubuntu 16.04 server with a non-root user with
sudo
privileges. You can learn more about how to set up a user with these privileges in our Initial Server Setup with Ubuntu 16.04 guide.An Apache2 web server: If you haven’t already set one up, the Apache section of the in-depth article, How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 16.04, can guide you.
A new location for your document root: The new document root location is completely configurable based on your needs. If you are moving your document root to a different storage device, you will want to select a location under the device’s mount point.
In this example, we will use the /mnt/volume-nyc1-01
directory. If you are using Block Storage on DigitalOcean, this guide will show you how to mount your drive before continuing with this tutorial.
Step 1 — Copying files to the new location
On a fresh installation of Apache, the document root is located at /var/www/html
. If you’re working with an existing server, however, you may have a significantly different setup including multiple document roots in corresponding VirtualHost directives.
You can search for the location of additional document roots using grep
. We’ll search in the /etc/apache2/sites-enabled
directory to limit our focus to active sites. The -R
flag ensures that grep
will print both the DocumentRoot and the filename in its output:
- grep -R "DocumentRoot" /etc/apache2/sites-enabled
The result will look something like the output below, although the names and number of results are likely to be different on an existing installation:
Outputsites-enabled/000-default.conf DocumentRoot /var/www/html
Use the feedback from grep
to make sure you’re moving the files that you want to move and updating their appropriate configuration files.
Now that we’ve confirmed the location of our document root, we’ll copy the files to their new location with rsync
. Using the -a
flag preserves the permissions and other directory properties, while-v
provides verbose output so you can follow the progress.
Note: Be sure there is no trailing slash on the directory, which may be added if you use tab completion. When there’s a trailing slash, rsync
will dump the contents of the directory into the mount point instead of transferring it into a containing html
directory:
- sudo rsync -av /var/www/html /mnt/volume-nyc1-01
Now we’re ready to update the configuration.
Step 2 — Updating the configuration files
Apache2 makes use of both global and site specific configuration files. For background about the hierarchy of configuration files, take a look at How To Configure the Apache Web Server on an Ubuntu or Debian VPS.
If you’re working with an existing installation, you should modify the virtual host files you found earlier with the grep
command. For our example, we’re going to look at the two Virtual Host files that ship with Apache by default, 000-default.conf
and default-ssl.conf
.
We’ll start by editing the 000-default.conf
file:
- sudo nano /etc/apache2/sites-enabled/000-default.conf
Next we’ll find the line that begins with DocumentRoot
and update it with the new location.
Note: You should look for other places the original path showed up, and change those to the new location as well. With a default installation, there’s the DocumentRoot and a Directory
block you’ll need to change. On an existing installation, you may find things like aliases and rewrites that need updating, too. Wherever you see the original document root’s path in the output of grep
, you’ll need to investigate.
<VirtualHost *:80>
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>
Step 3 — Restarting Apache
Once you’ve finished the configuration changes, you can make sure the syntax is right with configtest
:
- sudo apachectl configtest
You will get feedback from apachectl configtest
with a fresh install:
OutputAH00558: 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
As long as you get Syntax OK
, restart the web server. Otherwise, track down and fix the problems it reported.
Use the following command to restart Apache:
- sudo systemctl reload apache2
No comments:
Post a Comment