在cloud9上同时使用apache和node

时间:2014-09-02 12:02:28

标签: php node.js apache cloud9-ide

当我为apache和节点使用不同的工作区时 - 它们都工作正常。 但是,如果我想在“php工作区”上使用节点,我就是不能,因为apache总是在使用端口8080,以及节点想要在其env.PORT上。

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

谢谢!

2 个答案:

答案 0 :(得分:4)

如果要在PHP工作区中停止Apache以使用节点,只需运行:

/etc/init.d/apache2 stop

港口将是免费的。

答案 1 :(得分:3)

您无法在一个端口中同时监听这两项服务。根据您想要投入的精力以及解决方案所需的复杂程度,您可以做一些事情:

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)您可以执行与上述相同的操作,但是您可以使用NamedVhosts而不是node:8888来代替ProxyPass创建路径说/ node /吐出listen()。 / p>

3)最后,最简单,最快速的解决方案就是将节点放在另一个端口,比如说8888,然后转到那个。您可以将您正在收听的端口指定为/etc/hosts来电的参数:http://nodejs.org/api/net.html#net_server_listen_port_host_backlog_callback

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

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

希望它有所帮助。