What are some cheap hosting options for a small web app created in Golang? — Quora

What are some cheap hosting options for a small web app created in Golang? - Quora Хостинг

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

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

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

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

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

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

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

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

cd /etc/nginx/sites-available

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

sudo nano your_domain

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

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

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

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

Hello, world!

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

What are some cheap hosting options for a small web app created in golang?

Something went wrong. Wait a moment and try again.

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


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

Читайте также:  10 лучших FTP хостингов 2022 - Tophosts

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

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

Компиляция

Для работы приложения на сервере хостинга, он должен быть скомпилирован под соответствующую платформу (Linuх). Компилятор Go при компиляции исходного кода в ОС Windows называет исполняемый файл с расширением .exe. В ОС Linux он создает файл без расширения.

Модификация приложения для работы на облачном сервере под управлением linux

Так как наш сайт будет работать на облачном сервере под управлением ОС Linux, то для его работы потребуется предусмотреть следующие особенности:

  • Все пути к файлам, например при рендеринге страниц должны генерироваться через функцию filepath.Join(). Это позволит избежать ошибок с доступом к файлам, если вы разрабатывали приложение на windows, но публиковать и использовать его будете на linux. Например:
pathOk := filepath.Join("public", "templates", "index.html")//ок
pathBad := "public/templates/index.html"//не используйте
t, err := template.ParseFiles(pathOk)
if err != nil { log.Fatal(err)
}

Публикация проекта

Подключаемся по FTP к серверу и в папку “app” закидываем скомпилированный бинарник “main” и (важно!) папку со скриптами, стилями и html шаблонами.

При загрузке на сервер на файл были установлены стандартные права, которые не подразумевают возможность его исполнения (запуска). Чтобы установить права на исполнение, мы должны подключиться к консоли нашего сервера (см. “Открыть терминал” на скриншоте ниже).

В командной строке заходим в директорию проекта (команда “cd app”) где лежит наш бинарник и используем следующую команду: chmod x main

Далее в переменных окружения для APP_PATH устанавливаем путь открываемого приложения и перезапускаем приложение.

На этом все. Ваш проект должен работать! 

Примечание: Если вы работаете через IDE “Goland”, то там поддерживаются возможности, работы с консолью, подключения к хостингу по FTP и установки/изменения прав файлов на хостинге. Описанный процесс публикации там становится в разы легче.

Читайте также:  Аренда выделенных серверов в России

Регистрация, создание сайта и бд на хостинге

Прежде чем приступить к публикации необходимо:

  1. Зарегистрироваться на NetAngels;
  2. Приобрести/перенести домен;
  3. Создать сайт на облачном хостинге. Важно указать, что сайт работает на Python AsyncIO (это не ошибка, данная конфигурация подходит для работы с golang).
  4. В качестве БД выбрать MySQL. Можете выбрать и другую БД, но тонкости подключения к ней на облачном сервере вам придется выяснять отдельно.
  5. После того как сайт будет создан, проведите все необходимые работы с БД (создайте таблицы и убедитесь, что их структура совпадает, с той, которую вы использовали при локальной работе).

Подробно эти шаги не имеет смысла описывать, так как у провайдера есть набор своих инструкций, а цель данной статьи осветить вопрос публикации.

Хостинг для golang mongodb?

Без Монги — Google AppEngine.
Там своя БД — Google Datastore

С Монгой — нужен VPS/VDS.
Можно Vscale.io. Не бесплатно. Но там почасовая оплата. То есть если поднимать только по мере необходимости — это реально копейки.

Можно Heroku. Они предоставляют все что нужно.
Но там специфические требования к архитектуре развертывания.

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