Как установить веб-приложение со всеми внутренними папками, которое построено на 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
Таким образом, вы можете просто перемещать свой исполняемый файл, и все ваши файлы будут внутри него. По сути, вы можете скопировать этот исполняемый файл на сервер, и он будет работать как есть.
Надеюсь, это немного прояснит ситуацию.