Как установить веб-приложение со всеми внутренними папками, которое построено на golang

Как использовать "go install" или любую другую команду для установки / развертывания веб-приложения с внутренними папками. Я создал небольшое веб-приложение со следующей структурой папок.

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 не копирует внутренние папки в исполняемый файл.

1 ответ

Я думаю, вы немного озадачены тем, как работает экосистема go. Позвольте мне попытаться объяснить немного о том, что происходит. Когда вы говорите "запустить как приложение", вы, вероятно, подразумеваете, что в eclipse есть кнопка, которая компилирует и выполняет написанную вами программу и, таким образом, запускает сервер на вашем локальном хосте.

Так что за кулисами в вашей рабочей директории eclipse работает примерно так:

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

Когда вы делаете то же самое в вашем терминале, это, вероятно, будет работать. Просто убедитесь, что ваш GOPATH настроен правильно. Команда "go install", с другой стороны, делает почти то же самое, что и "go build", но затем перемещает исполняемый файл в $GOPATH/bin. Обратите внимание, что приложение не запускается. Так что после начальной установки вам все равно придется запускать ваше приложение, как это.

$GOPATH/bin/<name of app>

Но при установке он смотрит только на файлы go. Поэтому, если вы хотите, чтобы ваше приложение имело доступ к вашим html, js и css файлам, вы должны запустить его из своего рабочего каталога. Существуют способы добавить файлы html, css и js в исполняемый файл, используя пакет вроде go-bind-data:

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

Таким образом, вы можете просто перемещать свой исполняемый файл, и все ваши файлы будут внутри него. По сути, вы можете скопировать этот исполняемый файл на сервер, и он будет работать как есть.

Надеюсь, это немного прояснит ситуацию.

Другие вопросы по тегам