为了账号安全,请及时绑定邮箱和手机立即绑定

使用Apache部署Go Web应用程序

使用Apache部署Go Web应用程序

Go
忽然笑 2021-04-26 20:13:56
我找不到用于部署Go Web应用程序的mod_go。使用Apache Web服务器(甚至IIS)在Go中运行Web应用程序还有其他方法吗?更新:现在,在完成Go的全职工作将近一年之后;这样做(与Apache一起使用Go)使Go的真正目的(就高度并发而言的性能)无效。而且我将nginx用作http / https的反向代理,并很好地支持了Go后端。尽管在使用Go时必须稍微改变一下Web应用程序的思维方式。
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

没有mod_go。(至少我没有听说过这样的事情。)

Go Web应用程序本身就是功能强大的Web服务器。您可以在应用程序中监听端口80,然后直接在服务器上运行它。相信我:它确实有效!

但是,如果您不这样做(由于其他原因,例如在同一台计算机上安装其他虚拟服务器,负载平衡等原因),则可以将诸如nginx或Apache之类的HTTP服务器用作Go应用程序前面的HTTP代理。我使用nginx,这很棒。这是有关如何使用nginx进行操作的过时但仍然非常有用的指南。我还没有与Apache做这件事,但是应该帮助。

我建议您单独使用Go Web应用程序或将Nginx用作HTTP代理。


查看完整回答
反对 回复 2021-05-10
?
呼如林

TA贡献1798条经验 获得超3个赞

除了其他选项之外,还有net / http / fcgi软件包。这类似于CGI选项,但是它使用FastCGI,并且您的应用程序可以根据需要保持状态。


这是jimt示例的FastCGI版本。请注意,只有两行是不同的。根据您配置Apache的方式,您可能必须将第一个参数更改为其他参数,但是nil是常见的情况。


package main


import (

    "fmt"

    "net/http"

    "net/http/fcgi"

)


func hello(w http.ResponseWriter, r *http.Request) {

    fmt.Fprintf(w, "Hello from Go!")

}


func main() {

    http.HandleFunc("/", hello)

    fcgi.Serve(nil, nil)

}


查看完整回答
反对 回复 2021-05-10
  • 3 回答
  • 0 关注
  • 389 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信