我最近屈服于诱惑,买了一台新的 MacBook - 我升级了 RAM,买了 AppleCare 等等,真的很开心!我一直在设置我的开发环境 - 编译我自己的 Apache(我听说内置的 Apache 很糟糕)、PHP,并按照我想要的方式设置一切。
由于我没有使用默认的 Apache,我想知道如何设置 Apache 和其他应用程序作为守护进程;在后台运行,就像 Windows 的服务一样。
我想知道你们中是否有人有处理这类事情的经验,并且能否帮我一下。
答案1
OSX 使用 launchd 来管理所有守护进程的启动和停止。如果你在 Google 上搜索“launchd”,第一个结果就是苹果关于如何使用它的文章(我本来想直接链接,但 stackoverflow 不允许我这么做)
对于您要执行的操作,我建议您直接编辑现有的 apache launchd 文件以指向您自己的二进制文件。然后,您可以使用共享首选项窗格来控制它。该文件位于/System/Library/LaunchDaemons/org.apache.httpd.plist
答案2
你需要使用启动,Apple 用于管理所有系统进程的工具。 Launchd 是一系列专门的 unix 实用程序的统一替代品,这些实用程序管理着系统进程的不同部分(init、rc 等)。
Apple 在其网站上介绍了一些这方面的内容,但他们在其中混杂了一堆过时的文档,其中描述了过时的技术。Dan Benjamin 有一篇关于如何安装的精彩教程MySQL这是一本写得很好的指南,它将教你在 Mac 上安装 unix/linux 软件的一般步骤(不依赖于麦金塔或者芬克)丹的MySQL本教程介绍了如何创建 launchd 配置文件。
基本上,你将创建一个 xml 配置文件(a清单您可以使用 launchctl.run 命令创建一个新文件(即,一个文件)来指定工作目录、以哪个用户身份运行等等。您可以将该文件放在特定目录中,然后使用 launchctl 告诉 launchd 加载它。
他还有设置教程Ruby on Rails,您可能会发现它很有用,但我不认为它涉及任何守护进程。
答案3
您将需要研究使用 launchd。请在 Apple 网站上查找。
答案4
我还不能发表评论...你真的应该看看关于使用 launchd 的 Apple 信息。有多种选择,包括守护进程是否按需启动(当传入的 TCP 连接发生在指定端口上时)或在系统启动时运行一次、设置环境变量、退出时会发生什么、是否定期运行它等。有很多可能性,最佳实践是了解那里有什么并为您的特定应用程序做出最佳选择。
属性列表编辑器(位于 /Developer/Applications/Utilities)非常适合制作和查看清单文件。我不确定,但您可能需要安装 XCode(Apple 免费提供)才能使用此工具。