Запуск 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
При создании сервиса будет создан файл <имя_сервиса>.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