【问题标题】:Configure the npm to start in the background on Mac OS X在 Mac OS X 上将 npm 配置为在后台启动
【发布时间】:2018-05-24 11:25:54
【问题描述】:

说明

我使用的是 Mac OS X

现在,我在本地有将近 10 个 Laravel/LAMP 项目,我使用配置有 Apache 的 vhost 运行这些项目。关于它们的令人敬畏的部分是,即使我重新启动我的 Mac 或在网络之间移动,甚至关闭我的项目的终端应用程序/选项卡,Apache 仍在运行,所有我的本地站点仍然可以访问.


目标

现在,我希望用我的 MEAN 应用做同样的事情。 如何配置这样的东西?

假设我有 3 个 MEAN 应用。

例子

App1

App2

App3

我现在正在接受任何建议。

我们可以将 npm 配置为在后台启动吗?


BE/API

FE

【问题讨论】:

    标签: node.js macos apache npm


    【解决方案1】:

    您可以使用 macOS 的 launchd 在后台运行服务。有几个很好的 GUI 应用程序可以更轻松地创建启动服务:

    • LaunchControl ($10)
    • Lingon ($10) - 如果您使用 Lingon,请从官方网站获取 Lingon X 5,而不是从 Mac App Store 获取 Lingon 3; Lingon X 5 更强大,因为它不受 Apple 沙盒的限制。

    还有launched.zerowidth.com,这是一个交互式在线工具,用于创建launchd 使用的.plist 文件。

    launchd.info 如果您想手动设置它们,也是一个很好的资源。 Apple's documentation 也可用。


    如果您遇到命令无法正常工作的问题,我建议您尝试以下故障排除步骤:

    • 将所有命令转换为使用绝对路径(例如npm -> /usr/local/bin/npm)。您可以通过运行带有命令名称的which(例如which npm)来找到命令的绝对路径
    • 在 bash 中使用 /bin/bash -c(例如 /bin/bash -c "/usr/local/bin/npm start")运行您的命令

    【讨论】:

    • 即使我重新启动 Mac,这些建议是否会在后台为我启动我的应用程序?
    • @ihue 是的。您可以创建仅在该用户登录时启动的特定于用户的程序,或在启动时启动的系统级程序。
    • 这正是我想要的。这2个中你个人用过哪一个?
    • @ihue 我个人只手动创建了它们;我对launchd 所做的工作还不足以证明为专用应用程序支付 10 美元是合理的。我建议使用他们的两个试验并决定你更喜欢哪个。
    • 好主意! (y) - 再次感谢您为我指明正确的方向。
    【解决方案2】:

    您可以做的一件事是dockerize您的应用程序。

    使用 docker,您可以在您的计算机中称为 containers轻量级 虚拟机中运行您的应用程序。

    这有一些好处,例如,您可以在虚拟机内使用端口 80 运行您的应用程序,并向您的机器公开另一个端口。您可以启动或停止容器等等。

    请转至https://www.docker.com/what-docker 了解更多信息。

    【讨论】:

    • 即使我重新启动我的 Mac,它会在后台为我启动我的应用程序吗?
    • 如果你重新启动你的 mac docker 将会停止,所以你需要再次启动容器,好消息是你有像 docker-compose 文件这样的工具来保存你所有的容器配置,一个简单的 docker -组合起来你可以重新启动你所有的机器。
    • @ihue 如果你把它与 evanrelf 所说的联系起来,你可以忘记系统重启和端口绑定这两个问题。
    • 作为一个没有过多使用 Docker,但通常熟悉容器概念的人 - 这感觉像是过度工程。我认为你可以用这个答案做更多的事情来证明它没有过度设计,并且实际上解决了 OP 的核心问题,即能够在启动时启动后台服务。
    猜你喜欢
    • 2013-03-13
    • 2011-08-24
    • 2017-02-24
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多