【问题标题】:Golang how to deploy a website to hostingGolang 如何将网站部署到主机
【发布时间】:2019-07-20 23:03:42
【问题描述】:

我从reg.ru 购买了主机。我已经编译了我的网站并将其放在子域中。当我运行我的应用程序时,它运行良好,没有错误。但是当我进入该子域时,我的网站没有响应。我尝试添加.htaccess 文件但没有成功。将我的Golang 网站部署到主机是否正常?或者我应该买一个服务器?我可以告诉该托管服务来自我的应用程序的该子域的请求吗?

【问题讨论】:

  • 您的主机控制面板是什么?大多数共享主机不支持运行自己的二进制文件,您需要在系统上运行自己的二进制文件才能使用golang。最好使用VPS。
  • cPanel 如果你是这个意思!

标签: go


【解决方案1】:

Golang 是一种编译语言。编译后的源代码的输出是一个二进制文件,可以直接在操作系统(已编译)上执行,无需任何其他软件。编译后的二进制文件本身包含一个使用 http 请求的网络服务器。这是与 PHP 等解释性语言的主要区别,后者需要网络服务器(Apache、Nginx)将传入请求转换为 PHP 可以理解的协议。有关更多信息,请参阅this 答案。

我尝试添加 .htaccess 文件但没有成功

.htaccess 文件是 Apache 网络服务器配置文件,运行已编译的网络服务器应用程序不需要该文件。

将我的 Golang 网站部署到主机是否正常?或者我应该买一个 服务器?

网站托管服务提供商希望您运行 PHP 或任何其他了解 CGI 协议的应用程序。

为了托管您的 golang webapp,您应该像处理任何其他编译语言一样进行操作:从经典托管服务提供商处购买服务器 (VPS) 或使用公共云提供商。

您的另一个选择是使用像 Google 的 App Engine 这样的托管平台。它要求您部署 golang 源代码,并为您管理其他所有内容。它可能会为您节省一些开发运营的麻烦。

【讨论】:

  • 如我所料。我想我会为此购买一个 VPS 服务器
【解决方案2】:

正如 zdebra 在他的回答中提到的那样,共享主机计划支持 CGI 是很常见的。 net/http/cgi 包在运行中提供了对此的支持。只要你使用标准库中的 http 服务器,它只需要对你的 go 程序稍作改动。

http.ListenAndServe(":8080", myServeMux) 将变为 cgi.Serve(myServeMux)http.ListenAndServe(":8080", nil) 将变为 cgi.Serve(nil)

请注意,您不再指定端口,因为该端口现在已在网络服务器上配置。

对此有几点注意事项:

  • 这比内置的 http 服务器要慢,因为您的程序必须在每次页面加载时从头开始。也就是说,go 开始得很快。只要您的应用程序在启动时没有一堆事情要做,就没有那么糟糕。
  • 您不能运行后台线程。您的程序在请求进入时启动,并在响应发出后立即终止。
  • 不能在不同的请求之间共享内存和 go 通道。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-05
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 2018-07-04
    • 2014-09-28
    相关资源
    最近更新 更多