我正在尝试在 Mac 上运行 apache httpd 的替代安装(不要询问)。我可以这样做,但它只在我登录时运行,而且我必须不断输入
sudo /opt/local/apache2/bin/apachectl -k start
并想知道是否有办法在我的 Mac 上设置服务,这样我就不必继续这样做了。
答案1
最好的选择是使用launchd
内置的cron
、init
和替换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。