Service httpd restart / (98)Address already in use

apache-2.2centos6

Out of the blue, I can't restart apache on my CentOS 6.8 web server:

# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:7080
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:7080
no listening sockets available, shutting down
Unable to open logs
                                                           [FAILED]

I tried a bunch of things I read online, including removing lock files.

I decided to try rebooting the server. After reboot, attempting to load any hosted websites would result in "502 Bad Gateway".

# service httpd status
httpd is stopped

# service httpd start
Starting httpd:                                            [  OK  ]

# service httpd status
httpd dead but subsys locked

Despite the "dead" status, I can now load websites!

Sometimes service httpd restart works…

# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

But other times it results in the first error above. In which case I can fix it with:

# killall -9 httpd
# service httpd start

So I can work around it, but I'm really curious about what is going on and wondering if I should be concerned.

Best Answer

You may have defined your listener on that port twice in your configs somewhere.

Listen *:7080

If you run an Apache config test, it will say the config is OK, until you actually restart the service, it will fail with a similar error to what you are seeing.

Also verify your logging location exists and is writable and has space to write, that message at the end is suspect.