我正在尝试在“虚拟私有云”上设置 Amazon EC2 Web 服务器。我使用它而不是标准 EC2 实例,因为我需要分配多个公共 IP,而这需要使用 VPC。
无论如何,经过许多周折,我终于启动并运行了实例,并通过 SSH 连接。我从一个运行良好的标准 Web 服务器的图像中构建了实例。但是,我似乎无法启动 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 年 12 月 4 日
Apache 已安装并设置为在启动时自动启动chkconfig --levels 235 httpd on
,这就是 httpd 进程在启动时运行的原因。但是,当您输入时,service httpd status
它仍然显示为已停止,并且无法通过 Web 浏览器访问。
为了真正重新启动 Apache,您似乎需要正常终止该进程(kill -15 1289
有效,其中 1289 是进程 ID),然后输入service httpd start
。现在您可以毫无问题地启动、停止、重新启动和重新加载 Apache。
但是,我希望能够立即使用服务命令,进一步研究后,我得出了一个没有人能够真正提供的结论:其中一个 SSL 密钥需要密码,但无法在启动时输入密码(显然),因此该过程无法正常启动。我删除了密码(反正我们并不真正想要它)并重新启动。现在,当我使用时,service httpd status
我得到了httpd dead but subsys locked
。我必须删除它/var/lock/subsys/httpd
才能再次正确启动该过程。
因此,这感觉像是进步,但这个过程仍然不会自动启动。
请提供一些想法,好吗?
答案1
tcp 0 0 :::80 :::* 侦听 1289/httpd
Httpd 正在运行,其进程 ID 为 1289。如果由于某些不寻常的原因,它不是 Apache,而是其他也名为 httpd 的进程,那么您可能能够使用类似 的命令找到更多信息lsof -n -p 1289
。
您可能只需要kill
这个过程。
答案2
我想说 apache 正在运行,您可以在显示中看到它....netstat 表示进程 1289 正在监听端口 80,并且 ps 也显示了这一点。httpd 是 apache!
因此您可能只需 kill -9 1289(以 root 身份)然后重新启动即可。