Рейтинг:0

Создайте службу Systemd в Ubuntu для запуска MKDocs

флаг ye

Я запускаю сервер с MKDocs для документации.

Чтобы использовать MKDocs из каталога, в котором находится проект, вам нужно запустить mkdocs обслуживает -a 192.168.3.107:8080 для того, чтобы заставить его начать.

До сих пор я использовал /usr/bin/tmux новая сессия -d -s "MKDOCS" "cd /root/mkdocs && mkdocs serve -a 192.168.3.107:8080" чтобы он работал в фоновом режиме, но это очень схематичное решение, и я хотел бы запустить его как службу systemd.

Я пытался что-то вроде этого, но это не работает:

[Ед. изм]
Описание=служба mkdocs
ConditionPathExists=/root/mkdocs
[Оказание услуг]
Тип=простой
Пользователь=корень
Рабочий каталог=/usr/local/bin
ExecStart=/root/mkdocs serve -a 192.168.3.107:8080
RemainAfterExit=да

[Установить]
WantedBy=многопользовательская.цель

После того, как я запустил службу с запуском, статус показывает:

root@server:~/mkdocs# статус службы mkdocs
✓ mkdocs.service — служба mkdocs
     Загружено: загружено (/etc/systemd/system/mkdocs.service; отключено; предустановка поставщика: включена)
     Активно: сбой (результат: код выхода) со среды 02.02.2022 13:54:44 CET; 3 мин 46 с назад
    Процесс: 379585 ExecStart=/root/mkdocs serve -a 192.168.3.107:8080 (код=выход, статус=203/EXEC)
   Основной PID: 379585 (код=выход, статус=203/EXEC)

Я получаю журналctl -xe показывает:

-- Идентификатор задания 368094.
02 февраля, 13:54:44 server.domain.local systemd [379585]: mkdocs.service: не удалось выполнить команду: в доступе отказано
02 февраля, 13:54:44 server.domain.local systemd[379585]: mkdocs.service: сбой на этапе создания EXEC /root/mkdocs: разрешение отклонено
-- Тема: Не удалось запустить процесс /root/mkdocs
-- Определено: systemd
-- Поддержка: http://www.ubuntu.com/support
-- 
-- Процесс /root/mkdocs не может быть выполнен и завершается ошибкой.
-- 
-- Этот процесс возвращает номер ошибки ERRNO.
02 февраля, 13:54:44 server.domain.local systemd[1]: mkdocs.service: основной процесс завершен, код = завершен, статус = 203/EXEC
-- Тема: Процесс модуля завершен
-- Определено: systemd
-- Поддержка: http://www.ubuntu.com/support
-- 
-- Процесс ExecStart=, принадлежащий модулю mkdocs.service, завершился.
-- 
-- Код выхода процесса - "выход", а его статус выхода - 203.
02 февраля, 13:54:44 server.domain.local systemd[1]: mkdocs.service: Ошибка с результатом «код выхода».
-- Тема: Неисправность устройства
-- Определено: systemd
-- Поддержка: http://www.ubuntu.com/support
-- 
-- Модуль mkdocs.service перешел в состояние "сбой" с результатом "код выхода".

Я дал каталогу полные права с помощью chmod -R 777 /корень/mkdocs однако я все еще получаю ту же ошибку.

Надеюсь, кто-то может помочь мне заставить его работать. Спасибо

РЕДАКТИРОВАТЬ:

Я изменил путь, все равно будут разрешения 777, поэтому теперь код:

однако это все еще не работает, я получаю:

root@server:/test# systemctl daemon-reload
root@server:/test# systemctl запустить mkdocs.service
root@server:/test# статус systemctl mkdocs.service
✓ mkdocs.service — служба mkdocs
     Загружено: загружено (/etc/systemd/system/mkdocs.service; отключено; предустановка поставщика: включена)
     Активно: сбой (результат: код выхода) со среды 02.02.2022 14:17:24 CET; 4 с назад
    Процесс: 380128 ExecStart=/test mkdocs serve -a 192.168.3.107:8080 (code=exited, status=203/EXEC)
   Основной PID: 380128 (код=выход, статус=203/EXEC)

02 февраля 14:17:24 server.domain.local systemd[1]: запущена служба mkdocs.
02 февраля 14:17:24 server.domain.local systemd [380128]: mkdocs.service: не удалось выполнить команду: в доступе отказано
02 февраля, 14:17:24 server.domain.local systemd [380128]: mkdocs.service: сбой на шаге EXEC spawning /test: разрешение отклонено
02 февраля, 14:17:24 server.domain.local systemd[1]: mkdocs.service: основной процесс завершен, код = завершен, статус = 203/EXEC
02 февраля, 14:17:24 server.domain.local systemd[1]: mkdocs.service: Ошибка с результатом «код выхода».

и журналctl -xe показывает:

-- Модуль mkdocs.service перешел в состояние "сбой" с результатом "код выхода".
02 февраля, 14:20:32 server.domain.local systemd[1]: запущена служба mkdocs.
-- Тема: Стартовое задание для модуля mkdocs.service успешно завершено
-- Определено: systemd
-- Поддержка: http://www.ubuntu.com/support
-- 
-- Стартовое задание для модуля mkdocs.service успешно завершено.
-- 
-- Идентификатор задания 368972.
02 февраля, 14:20:32 server.domain.local systemd [380164]: mkdocs.service: не удалось выполнить команду: в доступе отказано
02 февраля, 14:20:32 server.domain.local systemd[380164]: mkdocs.service: сбой на шаге EXEC spawning/test: разрешение отклонено
-- Тема: Процесс/тест не может быть выполнен
-- Определено: systemd
-- Поддержка: http://www.ubuntu.com/support
-- 
-- Процесс /test не может быть выполнен и завершается ошибкой.
-- 
-- Этот процесс возвращает номер ошибки ERRNO.
02 февраля, 14:20:32 server.domainlocal systemd[1]: mkdocs.service: основной процесс завершен, код = завершен, статус = 203/EXEC
-- Тема: Процесс модуля завершен
-- Определено: systemd
-- Поддержка: http://www.ubuntu.com/support
-- 
-- Процесс ExecStart=, принадлежащий модулю mkdocs.service, завершился.
-- 
-- Код выхода процесса - "выход", а его статус выхода - 203.
02 февраля, 14:20:32 server.domain.local systemd[1]: mkdocs.service: Ошибка с результатом «код выхода».
-- Тема: Неисправность устройства
-- Определено: systemd
-- Поддержка: http://www.ubuntu.com/support
-- 
-- Модуль mkdocs.service перешел в состояние "сбой" с результатом "код выхода".

это не имеет никакого смысла, так как разрешения 777.

флаг uz
Jos
Почему это не работает? Кажется, ты на правильном пути. Что происходит с `sudo systemctl start mkdocs` или `sudo systemctl status mkdocs`?
флаг ye
@Jos Я отредактировал исходный вопрос, добавив больше информации, спасибо, что заглянули
флаг uz
Jos
Это проблема с разрешениями. Исполняемый файл имеет неправильные разрешения, или вы не запустили службу с помощью `sudo`. В любом случае, `/root` не очень хорошее место для исполняемых файлов сервера.
флаг ye
@Jos Я обновил сообщение с помощью EDIT, я изменил путь и дал разрешения 777, но проблема все еще остается. надеюсь, вы сможете взглянуть. Спасибо. Я считаю, что проблема в том, как я написал команду. Я должен быть в каталоге, где находятся документы, и запускать mkdocs, который найден: где mkdocs mkdocs: /usr/local/bin/mkdocs /usr/share/man/man1/mkdocs.1.gz
флаг ye
@guiverc Я обновил теги, на самом деле я тестирую 20.04.
Рейтинг:0
флаг ye

Мне удалось это исправить, создав скрипт: /root/mkdocs/run.sh

#!/бин/баш
компакт-диск /корень/mkdocs
mkdocs обслуживает -a 192.168.3.107:8080

И изменение службы на:

[Ед. изм]
Описание=служба mkdocs
ConditionPathExists=/root/mkdocs
[Оказание услуг]
Тип=простой
Пользователь=корень
Рабочий каталог=/usr/local/bin
ExecStart=/usr/bin/env bash /root/mkdocs/run.sh
RemainAfterExit=да

[Установить]
WantedBy=многопользовательская.цель

Я оставляю этот ответ на случай, если кто-то поищет его в будущем. файл должен находиться в /etc/systemd/система/mkdocs.service

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.