在一个虚拟机中提供两个用Google Go编写的网站

时间:2016-03-09 14:51:21

标签: http go dns webserver multisite

我有来自Digital Ocean的VM。它目前有两个链接到VM的域。 我不使用任何其他Web服务器,但Golang内置了http模块。性能方面,我喜欢它,我觉得我完全控制它。

目前我正在使用一个内置多个网站的Go程序。

http.HandleFunc("test.com/", serveTest)
http.HandleFunc("123.com/", serve123)
http.HandleFunc("/", serve123)

由于他们是网站,Go程序正在使用端口80。 问题是当我试图只更新一个网站时,我必须重新编译整个事情,因为它们是用相同的代码编写的。

1)有没有办法让它只用Golang(没有Nginx或Apache)进行热插拔 2)什么是标准的最佳实践?

非常感谢你!

1 个答案:

答案 0 :(得分:1)

好吧,你可以在go中进行hotswapping,但我真的不想这样做,除非真的很不必要,因为增加的复杂性是不可忽视的(而且我不是在谈论代码)。

你可以在程序前面放置一些代理,并在二进制更改时进行正常交换:原则是将二进制文件放在一个端口上,将代理放在另一个端口上。准备好新的二进制文件后,在另一个端口上运行它,并使代理重定向到新端口,然后正常关闭旧端口。

在Go中有一个工具,我无法记住......的名字。

编辑:不是我想到的那个,而是近距离通话https://github.com/rcrowley/goagain

个人建议:使用反向代理,这样做要简单得多。我的个人设置是使用h2o来终止SSL,HTTP2等,并将请求发送到在后台运行的各个网站。不仅仅是Go,还有PHP,Gitlab实例等。它更灵活,代理的性能损失很小......

相关问题