在Phusion Passenger后面运行Go webserver

时间:2016-01-02 16:30:53

标签: nginx go passenger

Phusion Passenger拥有一个很好的生态系统,可以在网络服务器后面运行webapps。我有Ruby和Node.js应用程序的经验。现在我重新编写了一个Web服务来使用Go,现在是时候部署它了。将Passenger + Nginx放在go webserver前面是很自然的(使用eval)。在周围搜索似乎没人试过这个,或者在任何地方询问过这个......

我似乎无法找到附加自定义二进制文件的配置选项,而不是net/http / passenger_ruby等。

可以吗(应该?)我使用Phusion Passenger来运行使用passenger_node创建的二进制文件?

2 个答案:

答案 0 :(得分:3)

不,你不能。 Passenger实际上并没有在内部使用HTTP;它使用自定义协议(如FastCGI或SCGI但与两者不兼容)与您的应用程序通信,并在应用程序中需要自己的代码来管理和分派请求。他们没有为Go提供此类支持代码。

答案 1 :(得分:1)

实际上这是可能的,乘客6已添加了通用语言支持。您可以在此处找到该教程:https://www.phusionpassenger.com/docs/advanced_guides/gls/go.html

基本上:

  1. 编译Go程序并将二进制文件放在方便的地方。该应用程序需要接受配置才能选择要在哪个端口上运行。
  2. passenger start --app-start-command 'env PORT=$PORT ./main'假设main是您的程序名称。

Passenger会尝试告诉应用程序从哪个端口启动,以便它可以具有端口80/443。