2012-03-04 94 views
8

当我运行此命令Amazon EC2的 - Apache服务器重启问题

须藤/etc/init.d/httpd重启

它给了以下错误

停止的httpd:[FAILED ]

启动httpd:(98)已经在使用的地址:make_sock:无法绑定到地址[::]:80 (98)已经在使用的地址:make_sock:cou LD不绑定解决0.0.0.0:80 没有听插座可用,关停 无法打开日志[失败]


我检查使用

netstat的-lnp运行在80端口的程序| grep的:80(它使下面的输出)

TCP 0 0 ::: 80 ::: * LISTEN 21739/httpd的


为什么我不能停止利用停止Apache须藤的/ etc/init.d/httpd重启?

以下命令的工作没有问题

须藤的apachectl停止

须藤的apachectl启动

我使用Amazon EC2的

回答

0

我觉得它好杀的过程本身的Linux微实例,找出进程ID并杀死它,然后重新开始,它应该工作正常

14

我遇到了这个问题lem当我从源安装apache,但后来试图运行

$ sudo /etc/init.d/httpd restart 

这是使用预安装的版本的Apache。 /etc/init.d/httpd中的stop指令并未删除在启动源代码安装的apache版本时创建的httpd.pid文件。

要确定是否这也是你的问题的原因,找出其中httpd.pid文件是越来越设置,当你如果你从源代码安装运行

$ sudo apachectl start 

和Apache2的是生活在/ usr /本地/ apache2,那么应该在/ usr/local/apache2/logs中创建httpd.pid文件。当您通过运行停止apache时

$ sudo apachectl stop 

此文件应该被删除。因此,为了测试是否httpd.pid文件引起您的问题,通过调用

$ sudo apachectl start 

启动Apache并找到httpd.pid文件。然后尝试使用

$ sudo /etc/init.d/httpd stop 

如果原始httpd.pid文件仍然存在停止Apache,那么这就是为什么阿帕奇无法启动,当您使用

$ sudo /etc/init.d/httpd start 

为了让我的/ etc /初始化.D/httpd的文件才能正常工作,我明确地把该呼叫开始于apachectl和停止方法:

#!/bin/bash 
# /etc/init.d/httpd 
# 
# Path to the apachectl script, server binary, and short-form for messages. 
apachectl=/usr/local/apache2/bin/apachectl 
httpd=/usr/local/apache2/bin/httpd 
pid=/usr/local/apache2/logs/httpd.pid 
prog=httpd 
RETVAL=0 

start() { 
    echo -n $"Starting $prog: " 
    $apachectl -k start 
    RETVAL=$? 
    echo 
    return $RETVAL 
} 
stop() { 
    echo -n $"Stopping $prog: " 
    $apachectl -k stop 
    RETVAL=$? 
    echo 
} 
0

我想这和它的作品:

  1. 须藤定影-k -n TCP 80
  2. 须藤服务的httpd启动

希望这将帮助你!

干杯