Запуск tuna как сервис
Фоновый запуск полезен, если вы хотите организовать постоянный доступ извне к службам или панели управления на удалённом компьютере.
Создание и управление сервисами
Создание и управление сервисами доступно во всех поддерживаемых платформах.
Для создания работы с сервисами используется команда tuna service или tuna svc.
Все актуальные флаги, подсказки и примеры можно посмотреть вызвав справку:
tuna service --help
tuna service install --help
tuna service start --help
tuna service restart --help
tuna service stop --help
tuna service uninstall --help
Создание сервиса
В Windows нужно выполнять команды в PowerShell от имени администратора, в Linux и FreeBSD потребуется sudo или root пользователь. В macOS сервис создаётся под текущим пользователем и привилегии не нужны.
Команда tuna service install указывает, что нужно зарегистрировать новый сервис. Можно создать несколько сервисов с разными именами, передавая имя через флаг --name или переменную окружения TUNA_SERVICE_NAME, по умолчанию tuna. По сле -- описывается команда которая будет запускаться в сервисе.
tuna service install -- tuna --config=С:\Users\Administrator\AppData\Local\tuna\tuna.yml http 8080 --subdomain=web
В примере выше явно передан полный путь к конфигурационному файлу, это может быть не обходимо так как сервис создаётся из под администратора, а файл с токеном находится в профиле текущего пользователя. С большей вероятностью это потребуется в Windows, Linux и FreeBSD и не потребуется в macOS. Также вы можете передать токен явно в аргументах:
tuna service install --name=tuna-web -- tuna http 8080 --subdomain=web --token=<tt_ваш_токен>
Для большей безопасности в Linux, FreeBSD и macOS токен будет вырезан из аргументов запуска и передан к ак переменная окружения, так что вы не увидите токен в списке процессов.
Так как в Windows, Linux и FreeBSD сервис создаётся от привилегированного пользователя, по умолчанию процесс будет также запущен от него, в целях безопасности не рекомендуется запускать tuna от привилегированного пользователя. Поэтому вы можете указать явно пользователя от имени которого будет запускаться процесс с помощью флага --userили переменную окружения TUNA_SERVICE_INSTALL_USER. В Windows также может потребоваться передать и пароль пользователя с помощью флага --passwordили переменную окружения TUNA_SERVICE_INSTALL_PASSWORD.
tuna service install --user=ubuntu -- tuna http 8080 --subdomain=web --token=<tt_ваш_токен>
Запуск сервиса
Запуск осуществляется командой tuna service start.
Пример с передачей имени:
tuna service start --name=tuna-web
Перезапуск сервиса
Перезапуск осуществляется командой tuna service restart.
Пример с передачей имени:
tuna service restart --name=tuna-web
Проверка статуса сервиса
Проверка статуса осуществляется командой tuna service status.
Пример с передачей имени:
tuna service status --name=tuna-web
Остановка сервиса
Остановка осуществляется командой tuna service stop.
Пример с передачей имени:
tuna service stop --name=tuna-web
Удаление сервиса
Удаление осуществляется командой tuna service uninstall.
Пример с передачей имени:
tuna service uninstall --name=tuna-web
Отладка и поиск проблем
Если сервис не работает или работает некорректно, в первую очередь необходимо проверить журналы сервиса. Tuna представляет лишь верхнеуровневую обвязку для создания и запуска сервиса, способ отладки будет зависеть от вашей системы.
- Windows
- macOS
- Linux
- FreeBSD
Для управления службой tuna в Windows, можно воспользоваться инструментом Службы (Services).
В списке служб найдите tuna (или имя вашей службы).
Щелкните правой кнопкой мыши на службу и выберите нужное действие: Запустить, Остановить или Перезапустить.
Для просмотра журналов службы tuna, можно воспользоваться инструментом Просмотр событий (Event Viewer) или PowerShell. В Просмотре событий откройте Windows Logs > Application или System, чтобы найти журналы, связанные с вашей службой.
Просмотр журналов через PowerShell:
Get-EventLog -LogName System -Source tuna
По умолчанию macOS имеет политики управления энергией, которые заставляют компьютер засыпать и тогда сервис станет недоступным, но это поведение можно настроить, если вы хотите использовать компьютер с macOS в режиме сервера.
Посмотреть текущий план питания можно с помощью команды pmset -g.
Для постоянной работы в фоне выставьте следующие значения:
sudo pmset -a sleep 0
sudo pmset -a autorestart 1
sudo pmset -a networkoversleep 1
sudo pmset -a tcpkeepalive 1
sudo pmset -a powernap 0
sudo pmset -a womp 1
При создании сервиса будет создан файл <имя_сервиса>.plist в директории ~/Library/LaunchAgents.
Для управления сервисом используйте команду launchctl.
Для просмотра журналов откройте приложение Console из Applications > Utilities,
перейдите к разделу system.log или используйте поисковую строку для поиска по ключевым словам, таким как tuna.
Просмотр журналов в терминале:
log show --predicate 'process == "tuna"' --info
Отладка описана только для systemd, если вы используете дистрибутив с sysvinit или openrc мы предполагаем, что вы опытный пользователь Linux и сможете самостоятельно отладить работу сервиса.
При создании сервиса будет создан файл <имя_сервиса>.service в директории /etc/systemd/system.
Для управления сервисом используйте команду systemctl.
Просмотр журналов:
sudo journalctl -xe -f -u <имя_сервиса>
При создании сервиса будет создан файл <имя_сервиса> в директории /usr/local/etc/rc.d/.
Для управления сервисом используйте команду service.
По умолчанию stdout и stderr должен собираться в системный журнал.
Запуск сервиса в Docker Compose
В качестве альтернативы можно использовать запуск сервиса с Docker Compose
Создайте compose.yml файл с описанием сервиса:
---
name: tuna
services:
web:
image: yuccastream/tuna:latest
command: http 3000 --subdomain=web
restart: always
network_mode: "host"
environment:
- TUNA_TOKEN=<ваш_токен>
Опция network_mode: "host", аналог --net=host, по умолчанию доступна только в Linux.
Чтобы это заработало в Windows и macOS требуется включить эту бета функцию в Docker Desktop.
Чтобы включить эту функцию, перейдите на вкладку Features in development в Settings , а затем выберите Enable host networking.
Запуск сервиса:
docker compose up -d
Остановка сервиса:
docker compose down -v
Просмотр журналов:
docker compose -f web