Разработка веб-серверов на Golang — от простого к сложному / Хабр

Разработка веб-серверов на Golang — от простого к сложному / Хабр Хостинг

Регистрация в системе и авторизация

Если у вас нету профиля, создайте его, перейдя вот по

. Далее нужно загрузить и установить

. Установив, убедитесь, что у вас в консоли работает команда

heroku

. Если все работает, открываем терминал и вводим следующее:

Создание приложения


Цель поста — показать, как развернуть приложение в облаке, потому я обойдусь простейшим «Hello, World», используя фреймворк martini:

2: создание юнит-файла systemd

На этом этапе нужно создать юнит-файл systemd, чтобы приложение работало в фоновом режиме, даже когда пользователь выходит с сервера. Это обеспечит постоянную работу сервера и сделает вас на шаг ближе к развертыванию в среде производства.

Сначала создайте новый файл goweb.service в каталоге /lib/systemd/system, используя текстовый редактор:

sudo nano /lib/systemd/system/goweb.service

Чтобы установить параметры сервиса, добавьте в файл следующие строки.

Создание файла Procfile

Procfile нужен Heroku для того, чтобы знать, как запускать сервер. Разместим там одну маленькую строчку:

web: hello

Обратите внимание, что если ваш исходник расположен в папке, отличной от папки hello, то и содержимое будет несколько другим:

web: <название папки, в которой расположен код приложения> 

3: nginx как обратный прокси-сервер

На этом этапе нужно создать блок server для Nginx и настроить его как обратный прокси-сервер, чтобы приложение стало доступно в Интернете.

Сначала перейдите в каталог sites-available:

cd /etc/nginx/sites-available

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

sudo nano your_domain

Добавьте следующие строки в файл, чтобы определить настройки для your_domain:

Создание локального репозитория

В папке

4: тестирование приложения

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

В браузере введите:

Godep — сохранение зависимостей

godep — специальный инструмент для управления зависимостями пакета. Он позволит сохранить информацию о пакетах, которые использует наш проект, и их исходный код.

Устанавливаем:

Создание приложения на Heroku и развертывание

Теперь начинается самое интересное. Если вы ушли из папки

Hello, world!


Создать веб-сервер на Go можно очень быстро. Вот пример использования обработчика, который возвращает обещанный выше «Hello, world!».

Добавление нестандартных маршрутов

Дефолтный маршрутизатор, включенный в стандартную библиотеку, хорош, но он очень простой. В большинстве приложений нужна более сложная маршрутизация, включая вложенные и wildcard-маршруты или же процедуру установки шаблонов и параметров путей.

В этом случае стоит использовать пакеты gorilla/mux и go-chi/chi. С последним мы и научимся работать — ниже показан пример.

Дано — файл api/v1/api.go, содержащий маршруты для нашего API:

Какой нужен веб-сервер для go

Работает GO на всех платформах.
Но предварительно должен быть скомпилирован для необходимой платформы. Например можно в Windows скомпилировать код для работы в UNIX системах. Делается это с помощью переменных среды. Предпочтения отдают во многих случаях Ubuntu и Centos всегда лучше ставить свежие.

Если вы пишите свой сервер то Nginx не нужен. Но если вы хотите использовать роутер или балансировщик нагрузки то конечно Nginx поможет. Но надо помнить, что Nginx имеет свои прелести.

База данных — дело требований. Все зависит от поставленных задач и требований к скорости. Нужна самая высокая скорость это Redis, если нужен веб сервис — MongoDB или RethinkDB. Конечно никто не отменял и замечательные MySQL и Postgree если необходима реляционная база или например вы влюблены в триггеры и хранимые процедуры.

Оцените статью
Хостинги