在回答问题之前,让我先介绍一些背景信息:
我在华硕 transformer 上的 Android 上安装了 Ubuntu karmic。我还安装了 netbeans、git、tightvncserver 和 openssh。
我正在使用 android vnc 查看器应用程序查看桌面。Tightvnc 正在监听端口 5900 和 5901。
现在说说我的问题。我已经安装了 apache2。安装没有问题。当我启动 apache 服务时,它在终端中显示它正在初始化,没有问题,但是当我使用 netstat -tulpn 检查端口时,我没有看到 apache 在任何端口上监听。我看到的只有 tightvnc。
这是我在 apache error.log 文件中看到的错误。
[warn] pid file /var/run/apache2.pid overwritten -- Unclean shutdown of previous Apache run?
[emerg] (38)Function not implemented: Couldn't create accept lock (/var/lock/apache2/accept.lock.13752) (5)
这是多次演出的。
有什么建议么?
答案1
这与内核缺少 System V IPC 有关。
如果您有用于构建内核的配置文件,您可以检查它;例如,目前在 Ubuntu 中(配置文件名将根据您的具体版本而变化)
grep CONFIG_SYSVIPC /boot/config-3.0.0-13-generic
给出:
CONFIG_SYSVIPC=y
(除此之外,但这是最重要的)。
在某些内核中,您还可以检查/proc/config.gz
是否CONFIG_IKCONFIG_PROC
已打开;这会为您提供当前正在运行的内核选项的 gzip 转储(因此请使用zgrep
它)。Ubuntu 的库存内核没有启用此功能,但您不太可能需要它,因为软件包无论如何都会为您提供配置文件。
解决方案:使用原装的 Ubuntu 内核(它确实非常好,并且编译了您可能需要的几乎所有内容) - 或者在启用此功能的情况下重建您的自定义内核。
答案2
仅供参考,我通过添加行解决了这个问题
AcceptMutex fcntl
到 apache2.conf 的底部
答案3
我在使用 chroot ubuntu 发行版的 Android 上遇到了同样的错误。我只是更改了以下 apache 选项(apache2.conf):
AcceptMutex 群
对我来说,它很有用。希望它能有所帮助。