【问题标题】:using apache and node at the same time on cloud9在cloud9上同时使用apache和node
【发布时间】:2014-09-02 12:02:28
【问题描述】:

当我为 apache 和 node 使用不同的工作区时,它们都可以正常工作。 但是,如果我想在“php 工作区”上使用节点,我就不能,因为 apache 始终处于启动状态并使用端口 8080,以及节点想要在其 env.PORT 上使用。

为什么我不能只关闭 php 工作区上的 apache? 你能给我一些创造性的方法让它发挥作用吗?

谢谢!!

【问题讨论】:

    标签: php node.js apache cloud9-ide


    【解决方案1】:

    如果您想在 PHP 工作区中停止 Apache 以改用 node,只需运行:

    /etc/init.d/apache2 stop
    

    端口将是免费的。

    【讨论】:

    • 谢谢!!感谢工作 :) c9 运行器出现了一些问题(当我要求运行 JS 文件时,IDE 停止了知道该做什么),但一两分钟后它让我很高兴! ;-)
    【解决方案2】:

    您不能让两个服务都在一个端口上进行侦听。根据您想要投入的精力和解决方案所需的复杂程度,您可以做几件事:

    1) 在端口8080 上保持“两者”:您可以通过让 Apache 在 8080 上侦听并在另一个端口中的节点说 8888 来模拟这一点,然后创建一个指向您 IP 的 VirtualHost(127.0.0.1 也可以)使用 name based vhosts,您可以让 a.mybox:8080 指向您的常规工作区,然后 b.mybox:8080 指向您的节点工作区。为此,您可以使用 Apache 的 ProxyPass and ProxyPassReverse 到您的节点正在侦听的 localhost:8888

    2) 您可以执行与上述相同的操作,但您可以使用 /node/ 来代替 NamedVhosts,再次使用 ProxyPass

    3) 最后,最简单和最快的解决方案是将节点放在另一个端口,比如 8888,然后转到那个端口。您可以将您正在侦听的端口指定为listen() 调用的参数:http://nodejs.org/api/net.html#net_server_listen_port_host_backlog_callback

    您还可以使用 Node 本身进行代理,或者使用另一个进程(如 nginx 或 haproxy)或许多节点模块之一(如 this one)。最后,将它保存在不同的端口会更容易,做所有其他配置可能不值得麻烦。

    最后,如果您通过代理方式使用不同的虚拟主机,请记住,如果您没有完整的域,您可以在 /etc/hosts 中定义您的主机名称。同样,更容易。

    希望对你有帮助。

    【讨论】:

    • 3.不会工作,因为 Cloud9 为您提供了 1 个可供外界访问的端口。
    • 正如 Jan 所说,您忽略了我询问 CLOUD9 的事实。这个答案与问题根本无关。
    • 我认为每个 Cloud9 实例都运行在自己的 Unbuntu 映像中。您可以同时收听公共端口,但不应让您绑定到 127.0.0.1:port,代理应该可以在本地访问该端口。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多