The most common problem DevOps developers and system administrators encounter when they install Apache on Windows is the ServerRoot Must be a Valid Directory error. Fortunately, this exception is easily fixed.
When you install Apache’s HTTP Server with a distribution such as XAMPP, Bitnami’s LAMP or even the basic ZIP file download from the Apache Lounge, the expectation is that the software will be installed into the computer’s root directory.
Yes, as surprising as that sounds, a standard build of the Apache Web Server on Windows expects the binaries to be installed directly to the root of C:\ . Install the software anywhere else, and when you run the httpd.exe file the ServerRoot Must be a Valid Directory error appears.
ServerRoot must be a valid directory
The following three strategies, ranked from easiest to hardest, solve Apache’s ServerRoot Must be a Valid Directory error:
- Copy the Apache installation files to the C:\ root drive
- Change the SRVROOT variable in the httpd.conf file to point to your custom installation directory
- Run the software configuration file that comes packaged with your distribution
Copy the files to root
If you copy the folder into which Apache was installed to the root directly, the httpd.exe file will run without error. This is the easiest fix — but it’s also the least pragmatic. Installing software into the root of C:\ is an anti-pattern. On many systems, developers do not have the rights required to copy files directly into the root of the C:\ drive.
But if you want a quick fix to the Apache ServerRoot error, this is it.
Update ServerRoot in httpd.conf
The setting that defines the location of Apache’s ServerRoot is in the httpd.conf, which is located in Apache’s conf directory.
You can edit this file and specify your custom installation root. Save the file and restart the server and Apache’s Valid ServerRoot Directory error will disappear.
Custom configuration files
Some distributions of the Apache Web Server come with a post-installation configuration file that updates all of the property files Apache uses when it runs.
The basic Apache Lounge installation doesn’t come with a post-installation program, but all Bitnami stacks that include an Apache Web Server do.
Valid HTTP directory error solved
For Bitnami stacks, running this post-configuration file is especially important. These stacks often wire additional software into their environment, such as NoSQL databases, a Tomcat server and language interpreters. Complex distributions such as XAMPP or Bitnami’s LAMP likely come with custom dashboards — use these to control the lifecycle of the installed software. Some of the more polished distributions eliminate the need to start and stop Apache at the command line.
Hopefully these steps solve your ServerRoot Must be a Valid Directory error. Once the fix is in, you’ll have no problems hosting and uploading files to Apache.
If you have any other insights on how to fix the error, please share them with me on Twitter.