Задать вопрос
@danforth

Как запускать скомпилированные бинарники Golang под Ubuntu?

Написал небольшую программу на Go, использовал net/http пакет. Вся задача сводится к тому, чтобы слушать 80 порт и отвечать на запросы (а-ля hello, world). Использую пакет log для обработки ошибок запуска веб сервера. Права на бинарник: 777, владелец тот, от кого запускаю.
2016/11/20 11:11:27 Cannot start and listen:  listen tcp :80: bind: permission denied

Вот список вопросов:
  1. Как правильно запускать данный бинарник, если он требует root прав (sudo)?
  2. Как обеспечить стабильную работу моей программы на Go? Я хочу, чтобы моя программа автоматически запускалась при запуске сервера, а тажке при падении (например в случае высокой нагрузки), чтобы она автоматически рестартилась
  3. Лучший способ запускать веб-сайты написанные на Go?
  • Вопрос задан
  • 2264 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@bnytiki
К Go это отношения не имеет.

Под Linux слушать 80-й порт (а точнее все порты меньше 1024) может только приложение с правами root.

Можно например, прокинуть через nginx. Тем более, что nginx будет очень хорош для статики и для защиты от медленных клиентов.

Лучший способ запускать веб-сайты написанные на Go?


Есть куча вариантов. Конечная цель - хоть как-то запускать приложение, в т.ч. при перезагрузки компьютера.

Например, можешь превратить в демона (осторожно, программа Go так просто в демона не превращается https://habrahabr.ru/post/187668/ поэтому проще будет использовать сторонние готовые пакеты для демонизации программы на go )

Модно-молодежный метод - через Docker/rkt - также написанные на Go.

Еще более модный-молодежный метод - через шедулер, предназначенный для кластеров, например Hashicorp Nomad (который, кстати, сам тоже на Go написан).

Вот тут написано как запускать сам Nomad https://github.com/hashicorp/nomad/tree/master/dist

Если обойтись без Docker и Nomad - тем же рецептом можно воспользоваться для вашего приложения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы