0

如何使用“go install”或任何其他命令来安装/部署带有内部文件夹的 web 应用程序。我已经构建了一个具有以下文件夹结构的小型网络应用程序。

SampleWebApp
   |--- swa.go
   |--- static/
          |--- css/x.css
          |--- js/y.js
          |--- html/z.html

我正在使用 eclipse ide,当我作为 go 应用程序运行时,它运行良好(http://localhost:8080)但是当我使用命令行安装时

 go install <path>

并尝试(http://localhost:8080)得到 404 错误。绝对“go install”命令不会将内部文件夹复制到可执行文件中。

4

1 回答 1

1

我认为您对 Go 生态系统的运作方式有些困惑。让我试着解释一下发生了什么。当您说“run as go app”时,您可能意味着您在 Eclipse 中有一个按钮,可以编译并执行您编写的程序,从而在您的 localhost 上启动服务器。

所以在幕后 eclipse 在你的工作目录中运行这样的东西:

cd $GOPATH/src/<name of app>
go build
./<name of app>

当您在终端中执行相同操作时,它可能也会起作用。只要确保你的 GOPATH 配置正确。另一方面,“go install”命令与“go build”几乎相同,但随后将可执行文件移动到 $GOPATH/bin。请注意,它不会运行应用程序。因此,在 go install 之后,您仍然必须像这样启动您的应用程序。

$GOPATH/bin/<name of app>

但是当它安装时,它只查看 go 文件。因此,如果您希望您的应用程序能够访问您的 html、js 和 css 文件,您应该从您的工作目录启动它。有多种方法可以使用 go-bind-data 之类的包将 html、css 和 js 文件添加到可执行文件中:

https://github.com/jteeuwen/go-bindata

这样你就可以移动你的可执行文件,所有的文件都在里面。实际上,您可以然后将此可执行文件复制到服务器,它应该可以按原样工作。

我希望这能澄清一点。

于 2016-09-16T09:24:54.847 回答