上图是我运行时的控制台输出
sudo /usr/sbin/apachectl restart
当我手动启动和停止 Apache 时,控制台没有任何语法错误或任何其他消息。那么我该如何调试它呢?
编辑:使用端口的事物列表
$ sudo lsof -i:80
Password:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 734 root 5u IPv6 0xf..0 0t0 TCP *:http (LISTEN)
httpd 736 _www 5u IPv6 0xf..0 0t0 TCP *:http (LISTEN)
httpd 774 root 4u IPv4 0xf..0 0t0 TCP *:http (LISTEN)
httpd 777 _www 4u IPv4 0xf..0 0t0 TCP *:http (LISTEN)
httpd 822 _www 4u IPv4 0xf..0 0t0 TCP *:http (LISTEN)
它也与 -i:443 完全相同。为什么有这么多 httpd?难道不应该只有一个吗?(我想每个 IP 版本都有)
当在(您最喜欢的网络浏览器)中浏览我的服务器的 IP 地址时,它只是显示内部服务器错误。
然后服务器上的控制台显示“nstat_lookup_entry failed 2”=\
答案1
显然,您的 MAC 上已在运行另一个程序。如果您未安装任何其他服务器,则最佳猜测是 Skype。它曾经使用这两个端口。
也许更简单 - 在终端上尝试这个来查看正在监听的内容:
sudo lsof -n -i4TCP:80 | grep LISTEN
答案2
从您的屏幕截图来看,失败的操作似乎正在尝试绑定到 IPv6 等效项0.0.0.0
,即[::]
。绑定到 IPv4“地址”似乎也0.0.0.0
成功了。因此,在启动 Rails 应用程序后,请检查 的输出netstat -64tulpen
(或 OS X 上的相应等效项),看看它是否确实没有在所需的端口上监听。还请尝试找出使用 IPv6 的内容、绑定到[::]:80
和 的[::]:443
内容以及原因。