在启动 VM 实例后,Horizon 系统信息显示板可能无法访问并且会显示 404 Not Found 错误消息。Apache 服务的日志将包含以下条目:
Oct 13 16:13:53 Executing start method (" /lib/svc/method/http-apache24 start"). ] Apache version is 2.4 (125) Address already in use: AH000/2: make_sock: could not bind to address [::]:80 Oct 13 16:13:55 Method "start" exited with status 0. ]
该日志指示无法将地址绑定到端口 80,因为该端口正忙。
从 Kilo 版本开始,OpenStack 使用 Apache 2.4,而非以前的 OpenStack 版本的 Apache 2.2。确保正确的 Apache 版本已启用且在该端口上侦听。
要释放该端口,请执行以下步骤:
获取当前在该端口上侦听的进程 ID。
# netstat -uan -f inet | grep "*.80"
此过程假定设置使用 IPv4 地址并且占有端口 80 的进程正在所有这些地址上侦听。如果进程在侦听 IPv6 通信,则此命令可能不会提供任何结果。
根据进程 ID,识别实际进程或服务。您可以使用以下命令之一:
# svcs -p | egrep "online|pid http" | ggrep -B1 pid
或者
# ps -lf -p pid
如果错误的 Apache 版本正在使用该端口,请禁用该服务。
为 Kilo 版本启用正确的 Apache 版本。
如果正确的 Apache 版本处于维护模式,则在启用服务前请先清除服务。
以下示例展示了如何释放端口 80 并切换到正确的 Apache 版本。
# netstat -uan -f inet | grep "*.80" *.80 *.* root 5560 httpd 0 0 128000 0 LISTEN *.8080 *.* webservd 1124 java 0 0 128000 0 LISTEN *.8009 *.* webservd 1124 java 0 0 128000 0 LISTEN # svcs -p | egrep "online|5560 http" | ggrep -B1 5560 online Aug_31 svc:/network/http:apache22 Sep_09 5560 httpd # svcadm disable apache22 # svcadm clear apache24 # svcadm enable apache24