Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Golang生产Web应用程序配置大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
对于那些你在运行Go后端在生产中:

什么是您的堆栈/配置运行Go Web应用程序?

我没有看到这个话题,除了人们使用标准库net / Http包保持服务器运行。我读使用@L_197_1@传递请求到Go服务器 – nginx with Go

这似乎有点脆弱我。例如,如果重新启动计算机(没有其他配置脚本),服务器将不会自动重新启动。

是否有更加坚实的生产设置?

除了我的意图 – 我计划一个Go的REST后端服务器为我的下一个项目,并希望确保Go将是可行的启动项目,直到我投入太多。

Go程序可以侦听端口80,并直接提供http请求。相反,您可能需要在Go程序前使用反向代理,以便它侦听端口80,并连接到端口上的程序,例如4000.有很多理由做后者:不必运行您的Go程序作为root,在同一主机上服务其他网站/服务,SSL终止,@L_675_6@平衡,日志记录等。

我在前面使用HAProxy。任何反向代理可以工作。 @L_197_1@也是一个伟大的选择(比HAProxy更受欢迎,并能够做更多)。

如果你阅读它的documentation(HTML version),HAProxy很容易配置。我的整个haproxy.cfg文件为我的Go项目之一,如果你需要一个开始pont。

global
        log     127.0.0.1       local0
        maxconn 10000
        user    haproxy
        group   haproxy
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        timeout connect 5000
        timeout client  50000
        timeout server  50000

frontend http
        bind :80
        acl  is_stats  hdr(host)       -i      hastats.myapp.com
        use_BACkend    stats   if      is_stats
        defaulT_Backend        myapp
        capture        request header Host     len     20
        capture        request header Referer  len     50

BACkend myapp
        server  main    127.0.0.1:4000

BACkend stats
       mode     http
       stats    enable
       stats    scope   http
       stats    scope   myapp
       stats    realm   Haproxy\ Statistics
       stats    uri     /
       stats    auth    username:password

@L_197_1@更容易

关于服务控制,我运行我的Go程序作为系统服务。我想每个人都这样做。我的服务器运行Ubuntu,所以它使用Upstart。我把它放在/etc/init/myapp.conf用于Upstart来控制我的程序:

start on runlevel [2345]
stop on runlevel [!2345]

chdir /home/myapp/myapp
setgid myapp
setuid myapp
exec ./myapp start 1>>_logs/stdout.log 2>>_logs/stderr.log

一个方面是部署。一个选项是通过发送程序的二进制文件和必要的资产来部署。这是一个非常好的解决方案IMO。我使用其他选项:在服务器上编译。 (当我设置所谓的“连续集成/部署”系统时,我将切换到使用二进制文件进行部署。)

我有一个小sHell脚本在服务器上从远程Git仓库拉取我的项目的代码,用Go构建它,将二进制文件和其他资产复制到〜/ myapp /,并重新启动服务。

总的来说,整个事情与任何其他服务器设置没有很大的不同:你必须有一种方法来运行你的代码,并让它提供http请求。在实践中,Go已经证明是非常稳定的这个东西。

大佬总结

以上是大佬教程为你收集整理的Golang生产Web应用程序配置全部内容,希望文章能够帮你解决Golang生产Web应用程序配置所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。