73

I'm trying to restart Apache 2:

sudo service apache2 restart

But get the below error:

* Restarting web server apache2 

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

I've tried to change

sudo gedit /etc/apache2/httpd.conf

A blank file appears, and I'd added this:

ServerName localhost

But that error doesn't disappear!

How can I fix this problem?

muru
  • 197,895
  • 55
  • 485
  • 740
Hamed Kamrava
  • 2,335
  • 11
  • 34
  • 49

4 Answers4

111

I found this: How do I restart/reload Apache when it can't determine the domain name?

Good news! Apache is restarting successfully. Apache just isn't sure where you want serve from, so it's choosing your localhost (127.0.0.1) by default. To prevent this message from appearing, clarify that you want to serve from localhost (127.0.0.1) by adding the following line into your /etc/apache2/apache2.conf file:

ServerName localhost
Meintjes
  • 2,420
  • 1
  • 15
  • 21
  • 2
    Optionally you can add this under the "Global Configuration" section. Order doesn't matter, but if you're trying to find it later this helps for organization. – Rebecca Dessonville Dec 11 '13 at 18:52
  • 8
    In newer versions of Ubuntu, it may make more sense to put it in /etc/apache2/conf-available/ServerName.conf and then run 'sudo a2enconf ServerName'. This way you don't change the app controlled config and you will override it if it does get changed in a future version for some reason. – flickerfly Mar 02 '15 at 19:24
  • 1
    It worked for me, thanks. I up voted this answer. – ThunderBird Apr 20 '16 at 22:58
35

Specifying ServerName localhost in your configuration files outside of the virtual host sections is the way to do this.

Other answers suggest that you should modify /etc/apache2/httpd.conf. This file gets overwritten when apache gets upgraded from apt. For Apache configuration that you don't want to get overwritten, you should create a new file. Here is the "Debian way" to make this configuration change:

# create the configuration file in the "available" section
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf
# enable it by creating a symlink to it from the "enabled" section
sudo a2enconf servername
# restart the server
sudo service apache2 restart
5

Your localhost IP Address should be 127.0.0.1, instead of 127.0.1.1. Please setup your /etc/hosts file properly. Then edit the httpd.conf file:

sudo -H gedit /etc/apache2/httpd.conf

When a blank file appears, please add this line, then save:

ServerName localhost
Zanna
  • 70,465
Masabza
  • 51
  • 1
  • 1
0

Here is another Solution:

Before:

[root@centos ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd: httpd: apr_sockaddr_info_get() failed for centos.wks.local
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]

Added 192.168.226.131 centos.wks.local in /etc/hosts file

Note: 192.168.226.131 is my Apache server IP address.

After:

[root@centos ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]