golang二进制文件在gopath src文件夹外不工作

golang二进制文件在gopath src文件夹外不工作,go,Go,我有一个使用gin gonic定义的golang web应用程序。我已经在/usr/local/goapp下定义了goapp 结构如下- /usr/local/goapp +src +bin +包装 这是我的围棋环境- GOPATH-/usr/local 戈宾-/usr/local/goapp/bin GOROOT-/usr/local/go 当我在source的主文件夹下运行go build和go install时,我会得到我的二进制文件,我可以运行它,并在我转到主页URL时看到我的html被

我有一个使用gin gonic定义的golang web应用程序。我已经在/usr/local/goapp下定义了goapp 结构如下-
/usr/local/goapp
+src
+bin
+包装
这是我的围棋环境-
GOPATH-/usr/local
戈宾-/usr/local/goapp/bin
GOROOT-/usr/local/go

当我在source的主文件夹下运行go build和go install时,我会得到我的二进制文件,我可以运行它,并在我转到主页URL时看到我的html被加载。 如果我尝试在bin文件夹下运行相同的二进制文件,当我转到主页URL时,我看不到html被加载。我得到404页找不到

我是不是遗漏了什么?有没有人遇到过这样的问题


谢谢。

所有这些GOPATH、GOROOT,当然还有缺少的PATH变量,都只是说明了如何调用go程序本身以及它在哪里搜索模块。但你告诉我们,你建立并安装了一些围棋程序

当一个围棋程序建立起来后,围棋实际上就不再需要了。你可以把二进制文件放在任何你想放的地方,甚至放在另一台有相同或至少相似系统的机器上,然后在那里运行这个程序

当您构建和安装的程序被执行时,您将在某个路径中执行它,该路径也称为当前工作目录(请参阅getcwd(2)或pwd(1))

我现在猜,在当前的工作目录下,有你的htdocs,index.html,任何文件,这个gin gonic用来创建页面

通常,如果这样一个程序找不到它应该创建、发送、生成的文档,它将返回代码404:NotFound


虽然只是猜测,但这很可能是您所处的情况,当您使用与工作目录不同的当前工作目录运行程序时,程序将在该目录下查找其文档。

应用程序正在使用您的当前工作目录或二进制文件的位置查找资产。如果看不到你的应用程序代码或不知道金戈尼克,我无法说出它是哪一个。在任何情况下,您都需要将应用程序资产安排在运行二进制文件期望找到它们的位置。资产没有绑定到二进制文件中。不需要设置GOROOT。最可能的原因是:您的代码通过相对路径访问文件(例如模板)。这与GOPATH、GOBIN或其他东西无关,只是对文件访问工作原理的误解。谢谢。我把静态文件移到了二进制文件所在的位置,解决了这个问题。谢谢大家。这就是问题所在。静态html和javascript文件不在当前工作目录中。是否有一个好的库可以将所有静态内容打包到同一个二进制文件中?最常见和最简单的方法是在服务器启动时更改工作目录,可能是基于命令行选项。我不知道你说的“包裹”是什么意思。为此,我使用了
tar