Mac OS X:正在运行服务?(特别是在另一个位置的 apachectl)

Mac OS X:正在运行服务?(特别是在另一个位置的 apachectl)

我正在尝试在 Mac 上运行 apache httpd 的替代安装(不要询问)。我可以这样做,但它只在我登录时运行,而且我必须不断输入

sudo /opt/local/apache2/bin/apachectl -k start

并想知道是否有办法在我的 Mac 上设置服务,这样我就不必继续这样做了。

答案1

最好的选择是使用launchd内置的croninit和替换xinetd。为此,您需要创建一个 XML 文档(特别是 .plist)来定义您想要执行的操作。一个名为林贡提供了一个出色的 GUI 来完成此操作以及安装。

您可以将以下文件另存为com.example.apache2.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <true/>
    <key>Label</key>
    <string>com.example.apache2</string>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/local/bin/apache2/bin/apachectl</string>
        <string>-k</string>
        <string>start</string>
    </array>
</dict>
</plist>

然后,您需要在其中安装此 .plist,/Library/LaunchDaemons因为您希望它在计算机启动时运行(作为服务)。您可以通过将文件复制到/Library/LaunchDaemons(Lingon 中的用户守护程序)并运行命令来执行sudo launchctl load -w /Library/LauchDaemons/com.example.apache2.plist此操作。然后,无论何时启动计算机,都会运行该命令。值得注意的是,中的启动守护程序/Library以 root 身份运行,因此您不需要 sudo。

有关 launchd 的更多信息,请查看手册页, 这launchd.plist 的手册页开始使用 launchd,或者您可以在此处在超级用户上搜索,因为已经有几个关于 launchd 的问题。

答案2

正确的方法是通过 launchd。

http://developer.apple.com/macosx/launchd.html

相关内容