How does Apache determine the FQDN?

14,775

Solution 1

Are you sure you have a ServerName directive with the proper value - outside any <VirtualHost> blocks? (You also need a ServerName inside each <VirtualHost> block, of course)

When Apache gives out that error message, usually it means that it's not finding a ServerName for the server as a whole. If you do have that directive set properly, I can't imagine why Apache would still be complaining...

Solution 2

On Debian, the hostname is set at startup thanks to the script /etc/init.d/hostname.sh which uses the file /etc/hostname. We can use this file to update the computer hostname and its FQDN (fully qualified domain name).

If ServerName in your vhost is my-computer.my-domain.ext make sure to copy the exact name in /etc/hosts

Caution: in the /etc/hosts file, the hostname and FQDN order must be respected. First the fqdn then the hostname and localhost at the end.

~$ echo "my-computer" > /etc/hostname
~$ echo "127.0.0.1 my-computer.my-domain.ext my-computer localhost" > /etc/hosts
~$ /etc/init.d/hostname.sh

You can check the change with the following lines:

~$ hostname
my-computer
~$ hostname --fqdn
my-computer.my-domain.ext

The old hostname may still be present in the command line prompt. Just logoff then login to make it disappear.

Share:
14,775
Peter Stone
Author by

Peter Stone

Web Developer, Seattle

Updated on June 09, 2022

Comments

  • Peter Stone
    Peter Stone almost 2 years

    I'm using Apache2, and when reloading/restarting the server I get this warning:

    apache2: Could not reliably determine the server's fully qualified domain name, using (my FQDN) for ServerName

    Everything works fine, but I'm trying to figure out what's causing the error. I'm grabbing the source to see if can find it, but since my C's not very good....

    Some notes:

    • If I change the system hostname, Apache uses the new hostname
    • I have a ServerName set; it's the same as the hostname
    • I have a static, unique IP - dig (hostname) returns (my ip), dig -x (my ip) returns (hostname)
    • My hosts file is correct

    Versions:

    Apache/2.2.9
    Linux 2.6.24-23-xen x86_64
    Description:    Debian GNU/Linux 5.0 (lenny)
    

    Any ideas?