Для размещения своего web-приложения в облаке уже существует не мало различных сервисов и хостингов, однако лишь немногие поддерживают работу с Go. Среди них можно обратить внимание на следующие:
- Google App Engine
- Heroku
Некоторые другие сервисы также предлагают поддержку Go, однако на платной основе, что не всегда выгодно для разработчика, например, если он проводит различные эксперименты, изучая особенности языка. Выбрав такие критерии выбора, как простоту развертывания, скорость и удобство, я остановился на Heroku.
Для одного аккаунта Heroku предлагает до 5 приложений на бесплатной основе. Каждому приложению система выделяет 750 бесплатных часов работы в месяц, также следует учитывать, что после часа «простоя» приложение уходит в режим «сна» (Но оно автоматически будет «разбужено» при поступлении запроса к нему).
Регистрация в системе и авторизация
Если у вас нету профиля, создайте его, перейдя вот по этой ссылке. Далее нужно загрузить и установить Heroku Toolbelt. Установив, убедитесь, что у вас в консоли работает команда heroku
. Если все работает, открываем терминал и вводим следующее:
|
|
Создание приложения
Цель поста — показать, как развернуть приложение в облаке, потому я обойдусь простейшим «Hello, World», используя фреймворк martini:
|
|
Исходный код я разместил в файле $GOPATH/github.com/user/hello/server.go
.
Создание файла Procfile
Procfile нужен Heroku для того, чтобы знать, как запускать сервер. Разместим там одну маленькую строчку:
|
|
Обратите внимание, что если ваш исходник расположен в папке, отличной от папки hello
, то и содержимое будет несколько другим:
|
|
Создание локального репозитория
В папке $GOPATH/github.com/user/hello/
выполняем следующие команды:
|
|
В дальнейшем мы будем производить push из локального репозитория на репозиторий Heroku.
Godep — сохранение зависимостей
godep — специальный инструмент для управления зависимостями пакета. Он позволит сохранить информацию о пакетах, которые использует наш проект, и их исходный код.
Устанавливаем:
|
|
Переходим в нашу папку $GOPATH/github.com/user/hello/
и выполняем:
|
|
В итоге будет создана папка Godep
, в которой вы найдете файл Godep.json
со списком зависимостей, а также папку _workspace
с исходными кодами сторонних пакетов.
Делаем коммит:
|
|
Создание приложения на Heroku и развертывание
Теперь начинается самое интересное. Если вы ушли из папки $GOPATH/github.com/user/hello/
, то вернитесь. Теперь в терминале выполняем следующее:
|
|
Команда создаст наше приложение и, используя Go Heroku Buildpack, сохранит информацию о том, как его нужно собирать и развертывать.
Делаем push:
|
|
Почти все, мы выполняем еще одну команду, Heroku запустит приложение, затем откроет браузер и перейдет по адресу работающего приложения:
|
|
Все, приложение запущено на Heroku. В будущем вам нужно будет только поправить зависимости (если начнете использовать новые библиотеки), сделать коммит и push. На мой взгляд весьма быстро, просто и удобно. Вот тут описан похожий способ, но на мой взгляд он немного сложнее.
Bсе ссылки:
Маленькая заметка
В оригинале запись была опубликована тут.