无法启动Apache – 地址已在使用中 – httpd已停止

我正在尝试在“虚拟私有云”上设置Amazon EC2 Web服务器。 我使用这个而不是标准的EC2实例,因为我需要分配多个公共IP,并且需要使用VPC。

无论如何,经过多次跳跃之后,我终于获得了运行并通过SSH连接的实例。 我从一个标准的networking服务器,我工作正常的图像构build实例。 但是,我似乎无法启动Apache:

# service httpd status httpd is stopped # service httpd start 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 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs [FAILED] # netstat -ltnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1243/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1275/sendmail tcp 0 0 0.0.0.0:9306 0.0.0.0:* LISTEN 1225/searchd tcp 0 0 0.0.0.0:9312 0.0.0.0:* LISTEN 1225/searchd tcp 0 0 :::80 :::* LISTEN 1289/httpd tcp 0 0 :::22 :::* LISTEN 1243/sshd tcp 0 0 :::443 :::* LISTEN 1289/httpd # ps aux | grep httpd root 1287 0.0 0.2 108476 1780 ? S 21:17 0:00 /bin/bash /etc/rc3.d/S85httpd start root 1288 0.0 0.2 11348 1332 ? S 21:17 0:00 /bin/bash -c ulimit -S -c 0 >/dev/null 2>&1 ; /usr/sbin/httpd root 1289 0.0 1.2 211888 7764 ? S 21:17 0:00 /usr/sbin/httpd 

所以我有点困惑。 Apache没有运行(作为服务,我没有设置它运行任何其他方式),我不能启动服务,但是这不是说Apache正在运行? 任何想法如何解决?

2012年4月/ 12月新增

Apache已经安装并设置为在启动时自动启动,使用chkconfig --levels 235 httpd on ,这就是为什么httpd进程在启动时运行的原因。 但是,当您inputservice httpd status它仍然以停止读取,并且通过Web浏览器不可用。

为了真正重启Apache,看起来你需要优雅的杀掉进程( kill -15 1289 ,其中1289是进程ID),然后inputservice httpd start 。 您现在可以启动,停止,重新启动并重新加载Apache,没有任何问题。

然而,我想立刻就能使用这个服务命令,而且进一步的问题导致我得出一个结论:没有人可以真实地提供:一个SSL密钥需要一个密码,而且不能在启动时input清楚),所以这个过程无法正常启动。 我删除了密码(我们并不是真的想要),然后重新启动。 现在,当我检查与service httpd status我得到httpd dead but subsys locked 。 我必须删除/var/lock/subsys/httpd以使进程再次正确启动。

所以感觉就像是进步,但是这个过程还是不能自动启动的。

想法,拜托?

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

Httpd正在运行,并且进程ID为1289.如果出于某种不寻常的原因,而不是Apache和其他名称为httpd的其他名称,则可以使用lsof -n -p 1289命令查找更多信息。

你可能可以kill这个过程。

我会说apache是​​运行的,你可以在显示器中看到它…. netstat表明进程1289正在侦听端口80,事实上ps也显示了这一点。 httpd是apache!

因此你可能简单地杀死-9 1289(以root身份),然后重新启动。