Golang生产Web应用程序配置

Golang生产Web应用程序配置,第1张

概述对于那些你在运行Go后端在生产中: 什么是您的堆栈/配置运行Go Web应用程序? 我没有看到这个话题,除了人们使用标准库net / http包保持服务器运行。我读使用Nginx传递请求到Go服务器 – nginx with Go 这似乎有点脆弱我。例如,如果重新启动计算机(没有其他配置脚本),服务器将不会自动重新启动。 是否有更加坚实的生产设置? 除了我的意图 – 我计划一个Go的REST后端服 对于那些你在运行Go后端在生产中:

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

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

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

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

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

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

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

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

global        log     127.0.0.1       local0        maxconn 10000        user    haproxy        group   haproxy        daemondefaults        log     global        mode    http        option  httplog        option  dontlognull        retrIEs 3        timeout connect 5000        timeout clIEnt  50000        timeout server  50000frontend 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     50backend myapp        server  main    127.0.0.1:4000backend stats       mode     http       stats    enable       stats    scope   http       stats    scope   myapp       stats    realm   Haproxy\ Statistics       stats    uri     /       stats    auth    username:password

Nginx更容易。

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

start on runlevel [2345]stop on runlevel [!2345]chdir /home/myapp/myappsetgID myappsetuID myappexec ./myapp start 1>>_logs/stdout.log 2>>_logs/stderr.log

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

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

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

总结

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1277463.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存