Linux – Amazon EC2 – Apache server restart issue


When i run this command

sudo /etc/init.d/httpd restart

it gives below error

Stopping httpd: [FAILED]

Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address
no listening sockets available, shutting down
Unable to open logs [FAILED]

i checked running programs at port 80 by using

netstat -lnp | grep :80 (it gives below output)

tcp 0 0 :::80 :::* LISTEN 21739/httpd

why i am not able to stop stop apache by using sudo /etc/init.d/httpd restart?

below commands work without issue

sudo apachectl stop

sudo apachectl start

i am using linux micro instance of amazon ec2

Best Solution

I ran into this problem when I installed apache from source, but then tried to run

$ sudo /etc/init.d/httpd restart 

which was using a pre-installed version of apache. The stop directive in /etc/init.d/httpd was not removing the file that was created when starting the source-installed version of apache.

To determine if this is also the reason for your problem, find where the file is getting set when you run

$ sudo apachectl start

If you installed from source and apache2 is living in /usr/local/apache2, then the file should get created in /usr/local/apache2/logs. When you stop apache by running

$ sudo apachectl stop

this file should get removed. So to test if the file is causing your problem, start apache by calling

$ sudo apachectl start

and locate the file. Then try stopping apache by using

$ sudo /etc/init.d/httpd stop

If the original file is still present, then that is why apache is unable to start when you use

$ sudo /etc/init.d/httpd start

To get my /etc/init.d/httpd file to work correctly, I explicitly put the call to apachectl in the start and stop methods:

# /etc/init.d/httpd
# Path to the apachectl script, server binary, and short-form for messages. 

start() {
    echo -n $"Starting $prog: "
    $apachectl -k start
    return $RETVAL
stop() {
    echo -n $"Stopping $prog: "
    $apachectl -k stop
Related Question