Full stack проект на Go за неделю. День 4: Запускаем бэкенд

Full stack проект на Go за неделю. День 4: Запускаем бэкенд

Это четвёртая часть материала. Первая часть. Вторая часть. Третья часть.

В этой части мы наконец запустим наше приложение! Но для этого ему нужен сервер — нам нужно выбрать архитектуру и операционную систему, а затем установить приложение.

Выбор платформы

При выборе платформы нужно учесть множество параметров, вот только часть из них:

  • Опыт команды
  • Предложения вендоров
  • Поддерживаемые языки и т.д.

Выбор платформы целиком за вами, а мы остановимся на сервере amd64 с установленной Ubuntu — основываясь на нашем опыте и предложениях Digital Ocean.

Сборка бэкенда

В сети есть много материалов по начальной настройке сервера, мы не будем поднимать этот вопрос. Единственное, не забудьте о нескольких вещах: отключите доступ по ssh для root, держите систему всегда обновлённой и не ставьте больше приложений, чем необходимо.

Собрать приложение в Go проще простого:

$ go build
И всё! После этой команды в папке проекта появится исполняемый файл, это и есть наше приложение.

Постойте! Я выполняю сборку на моём MacBook и соответственно бинарный файл будет собран для моей платформы, а нам нужно собрать его под Ubuntu linux.

Для этого перед сборкой добавим пару переменных среды:

$ GOARCH=amd64 GOOS=linux go build
Вуаля! У нас теперь есть бинарник для linux. Осталось установить его на сервер.

Установка на сервер

После настройки сервера у нас должен быть доступ к нему по SSH. Скопируем приложение с помощью команды scp:

$ scp currencyconverter user@server.ip.address:.

Запуск приложения

После загрузки приложения на сервер нам осталось только запустить его — так же, как и любое другое приложение под linux:

$ ssh user@server.ip.address
server$ ./currencyconverter

Готово. Наш бэкенд запущен и работает, но на адресе и порте по-умолчанию. Изменим это и запустим его на всех адресах с портом 80, как любой другой веб-сервер (для этого нужен root доступ, воспользуемся командой sudo):

server$ sudo GFS_CURRENCY_HOST=0.0.0.0 GFS_CURRENCY_PORT=80 ./currencyconverter
Теперь мы можем открыть наш браузер и перейти на http://localhost/currencies (если запустили на локальной машине), мы должны увидеть JSON-вывод с курсами валют, относительно курса EUR.

Автозапуск при загрузке системы

Самое лёгкое решение этой задачи — переложить её на cron. Предположим, что наш бинарник лежит в /home/user — с помощью команды crontab edit под root (sudo crontab -e, так как приложению необходимы права root) добавим следующую строку:

@reboot GFS_CURRENCY_HOST=0.0.0.0 GFS_CURRENCY_PORT=80 nohup /home/user/currencyconverter &
Теперь даже после перезапуска сервера наше приложение будет так же работать и обрабатывать запросы.

Что дальше?

Завтра мы настроим continious integration и continious deployment, таким образом наше приложение будет автоматически обновляться при каждом обновлении кодовой базы.

Продолжение.

Leave a Comment