【问题标题】:Upload and Deploy Golang application to VPS将 Golang 应用程序上传并部署到 VPS
【发布时间】:2015-02-15 13:51:24
【问题描述】:

我制作了一个 Go 应用程序,当我在本地运行该 exe 时,它​​运行良好。我将把它上传到我的 VPS 的哪里? public_html/domain.com/somefolder ?还是使用 SSH 的 /usr/somefolder?

我有我的应用程序、我的 .exe 和 src 文件,但是当我在我的 VPS 上在线部署时,我该怎么办?我一直没能找到这方面的教程,所以希望你能帮助我。

  1. 我是否上传 src 文件夹中的所有文件,包括我编写“go build”时的二进制文件?
  2. 上传到我的 VPS 上的什么地方?使用 ssh 或 cpanel / ftp 程序还是什么?

从在您自己的本地 Windows 8 计算机上“开始构建”到在 linux 服务器上在线上传和运行它的步骤是什么?

附言

CentOS 5.1.1 虽然不支持 https://golang.org/doc/install - 允许我在我的 VPS 上运行已经 linux 编译的 go 程序,这是否仅意味着我不能在 CentOS 5.x 上安装 Go 和编译服务器? CentOS 5.1.1 会解释运行命令“./[文件名]”时 shh 给我的“分段错误”错误吗?

【问题讨论】:

  • 你见过这个吗? :stackoverflow.com/questions/17440415/…
  • 像他建议的那样在服务器上编译 Go 对我来说不是一个选项,因为我的 VPS 运行的是 CentOS 5.1.1 - 但我仍然应该能够说“./[filename]”对吗?现在我刚刚收到来自 ssh 的“分段错误”响应。
  • 这很不幸。这次部署的目的是什么?学习 ?生产用途 ?如果您希望您的应用程序在某个服务器上运行一些如何用于学习/测试等目的,请查看 Heroku。你会免费得到它。出于生产目的,真的不走运,可以尝试一下吗? dave.cheney.net/2013/06/18/how-to-install-go-1-1-on-centos-5
  • 但我不需要在 VPS 上安装它。我只需要能够在那里运行程序。我可以在本地计算机上编译。这方面的“不支持”不是指编译安装go吗?还是(我担心)go 程序甚至无法在这些“不受支持的”操作系统上运行? :-o

标签: deployment go web-deployment production


【解决方案1】:

嗯,通常,你会:

  • 复制您创建的二进制文件 + 所有资源文件(html、css、图像...)
    • (也可以选择源代码)
  • 有办法确保程序继续运行
    • crontab 可用于检查您的程序是否处于活动状态,但也可以使用简单的监控程序(您可以自己编写)
  • 以非特权用户身份运行二进制文件
    • (如果需要,您也可以将其与 Docker 之类的内容结合使用)

把它放在public_html/domain.com/somefolder 里面是没有意义的,因为它不是公开的html代码。除非使用您创建的应用程序/二进制文件,否则您希望您的文件无法访问。


对于我的故事没有简洁的源链接,我深表歉意。然而,这似乎是最好的做法。


另一个重要说明: 即使您的 VPS 可能运行 Windows,您也可以将 linux 二进制文件部署到 Linux VPS(非常便宜) - 查看this SO question

【讨论】:

  • 感谢您的回答 - 不过我还有一些问题。在这个 url link 上它说 Go 不支持 CentOS 5.x - 我的 VPS 上有 CentOS 5.1.1。当我尝试(som shh - 在 Windows 上使用 putty)运行 linux 编译文件时收到以下错误消息:“Segmentation fault” - 是因为 CentOS 5.x 我无法运行我编译的 Go 应用程序吗?
  • 分段错误很棘手。您可以使用另一个 Linux 发行版(即 Debian、Ubuntu、CoreOS)设置一个虚拟系统,并查看它是否在那里运行。这样您就可以定位导致段错误的问题。它不受支持,但这并不意味着它永远不会起作用。但是不能保证。
  • 我可以选择支付 25 美元并安装 CentOS 6。你认为这值得他们去做吗?你认为这可能奏效吗?简而言之:我只需要它来工作,此时我愿意为某人的帮助付费。我该向哪里/谁寻求帮助?我的托管公司不知道 Go.. :( 你会怎么做?购买新的第二个 VPS?
  • 嗯,首先你需要知道 CentOS 是否是问题所在。下载 virtualbox,创建两个基本映像:一个使用 Debian,一个使用 CentOS 6。在两者上测试您的二进制文件。如果它适用于 Debian,但不适用于 CentOS - 那么获得第二个 VPS(或替换第一个)就可以了。如果它在 Debian 上也不起作用,那么 CentOS 就不是问题,获得第二个 VPS 也没有意义。
  • 我在 VirtualBox 的 CentOS 7 中尝试过——效果很好,所以我猜是 CentOS 5 的旧内核才是问题所在。 :-)
【解决方案2】:

我写的关于在 osx 上编写 golang 应用并在 Linux 服务器上部署的简短说明:http://kumargaurav.co/2016/08/10/deploy-go-lang-app-linux-server/

【讨论】:

    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 2013-04-15
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多