Puncte:0

Creați un serviciu Systemd în Ubuntu pentru a rula MKDocs

drapel ye

Rulez un server cu MKDocs pentru documentare.

Pentru a utiliza MKDocs din directorul în care se află proiectul, trebuie să rulați mkdocs serve -a 192.168.3.107:8080 pentru a o face să pornească.

Pana acum foloseam /usr/bin/tmux new-session -d -s „MKDOCS” „cd /root/mkdocs && mkdocs serve -a 192.168.3.107:8080” să ruleze în fundal, dar aceasta este o soluție foarte sommară și aș dori să o rulez ca Service Systemd.

Am incercat asa ceva dar nu merge:

[Unitate]
Descriere=serviciu mkdocs
ConditionPathExists=/root/mkdocs
[Serviciu]
Tip=simplu
Utilizator=rădăcină
WorkingDirectory=/usr/local/bin
ExecStart=/root/mkdocs serve -a 192.168.3.107:8080
RemainAfterExit=da

[Instalare]
WantedBy=multi-user.target

După ce rulez serviciul cu start, starea arată:

root@server:~/mkdocs# starea serviciului mkdocs
â mkdocs.service - serviciu mkdocs
     Încărcat: încărcat (/etc/systemd/system/mkdocs.service; dezactivat; prestabilit furnizor: activat)
     Activ: eșuat (Rezultat: cod de ieșire) din miercuri 2022-02-02 13:54:44 CET; acum 3min 46s
    Proces: 379585 ExecStart=/root/mkdocs serve -a 192.168.3.107:8080 (cod=exit, status=203/EXEC)
   PID principal: 379585 (cod=ieșit, stare=203/EXEC)

Primesc jurnalctl -xe arată:

-- Identificatorul postului este 368094.
02 februarie 13:54:44 server.domain.local systemd[379585]: mkdocs.service: Nu s-a putut executa comanda: Permisiune refuzată
02 februarie 13:54:44 server.domain.local systemd[379585]: mkdocs.service: a eșuat la pasul EXEC generarea /root/mkdocs: permisiunea refuzată
-- Subiect: Procesul /root/mkdocs nu a putut fi executat
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
-- 
-- Procesul /root/mkdocs nu a putut fi executat și a eșuat.
-- 
-- Numărul de eroare returnat de acest proces este ERRNO.
02 februarie 13:54:44 server.domain.local systemd[1]: mkdocs.service: Proces principal ieșit, cod=ieșit, stare=203/EXEC
-- Subiect: Procesul unității a ieșit
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
-- 
-- Un proces ExecStart= aparținând unității mkdocs.service a ieșit.
-- 
-- Codul de ieșire al procesului este „ieșit”, iar starea sa de ieșire este 203.
02 februarie 13:54:44 server.domain.local systemd[1]: mkdocs.service: a eșuat cu rezultatul „exit-code”.
-- Subiect: Unitatea a eșuat
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
-- 
-- Unitatea mkdocs.service a intrat în starea „eșuat” cu rezultatul „cod de ieșire”.

Am acordat directorului permisiuni complete cu chmod -R 777 /root/mkdocs cu toate acestea, primesc aceeași eroare.

Sper că cineva mă poate ajuta să funcționeze. Mulțumesc

EDITAȚI | ×:

Am schimbat calea, voi încă 777 de permisiuni, așa că codul acum este:

cu toate acestea încă nu funcționează, primesc:

root@server:/test# systemctl daemon-reload
root@server:/test# systemctl porniți mkdocs.service
root@server:/test# stare sistemctl mkdocs.service
â mkdocs.service - serviciu mkdocs
     Încărcat: încărcat (/etc/systemd/system/mkdocs.service; dezactivat; prestabilit furnizor: activat)
     Activ: eșuat (Rezultat: cod de ieșire) din miercuri 2022-02-02 14:17:24 CET; acum 4s
    Proces: 380128 ExecStart=/test mkdocs serve -a 192.168.3.107:8080 (cod=exit, status=203/EXEC)
   PID principal: 380128 (cod=ieșit, stare=203/EXEC)

02 februarie 14:17:24 server.domain.local systemd[1]: A început serviciul mkdocs.
02 februarie 14:17:24 server.domain.local systemd[380128]: mkdocs.service: Nu s-a putut executa comanda: Permisiune refuzată
02 februarie 14:17:24 server.domain.local systemd[380128]: mkdocs.service: a eșuat la pasul EXEC spawning /test: Permisiune refuzată
02 februarie 14:17:24 server.domain.local systemd[1]: mkdocs.service: Proces principal ieșit, cod=ieșit, stare=203/EXEC
02 februarie 14:17:24 server.domain.local systemd[1]: mkdocs.service: a eșuat cu rezultatul „exit-code”.

și journalctl -xe spectacole:

-- Unitatea mkdocs.service a intrat în starea „eșuat” cu rezultatul „cod de ieșire”.
02 februarie 14:20:32 server.domain.local systemd[1]: A început serviciul mkdocs.
-- Subiect: O lucrare de pornire pentru unitatea mkdocs.service s-a încheiat cu succes
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
-- 
-- O lucrare de pornire pentru unitatea mkdocs.service s-a încheiat cu succes.
-- 
-- Identificatorul postului este 368972.
02 februarie 14:20:32 server.domain.local systemd[380164]: mkdocs.service: Eșuarea executării comenzii: Permisiune refuzată
Februarie 02 14:20:32 server.domain.local systemd[380164]: mkdocs.service: Eșuat la pasul EXEC spawning /test: Permisiune refuzată
-- Subiect: Procesul/testul nu a putut fi executat
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
-- 
-- Procesul/testul nu a putut fi executat și a eșuat.
-- 
-- Numărul de eroare returnat de acest proces este ERRNO.
02 februarie 14:20:32 server.domainlocal systemd[1]: mkdocs.service: Proces principal ieșit, cod=ieșit, stare=203/EXEC
-- Subiect: Procesul unității a ieșit
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
-- 
-- Un proces ExecStart= aparținând unității mkdocs.service a ieșit.
-- 
-- Codul de ieșire al procesului este „ieșit”, iar starea sa de ieșire este 203.
02 februarie 14:20:32 server.domain.local systemd[1]: mkdocs.service: a eșuat cu rezultatul „exit-code”.
-- Subiect: Unitatea a eșuat
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
-- 
-- Unitatea mkdocs.service a intrat în starea „eșuat” cu rezultatul „cod de ieșire”.

nu are niciun sens, deoarece permisiunile sunt 777.

drapel uz
Jos
De ce nu merge? Se pare că ești pe drumul cel bun. Ce se întâmplă cu `sudo systemctl start mkdocs` sau `sudo systemctl status mkdocs`?
drapel ye
@Jos Am editat întrebarea originală cu mai multe informații, mulțumesc pentru că ai aruncat o privire
drapel uz
Jos
Este o problemă de permisiuni. Executabilul are permisiuni greșite sau nu ați pornit serviciul cu `sudo`. În orice caz, `/root` nu este o locație foarte bună pentru executabilele serverului.
drapel ye
@Jos Am actualizat postarea cu EDIT, am schimbat calea și am dat 777 de permisiuni, dar mai am o problemă. sper ca poti arunca o privire. Mulțumiri. Cred că problema este felul în care am scris comanda. Ar trebui să fiu în directorul în care sunt documentele și să rulez mkdocs, care se găsește: whereis mkdocs mkdocs: /usr/local/bin/mkdocs /usr/share/man/man1/mkdocs.1.gz
drapel ye
@guiverc Am actualizat etichetele, de fapt testez pe 20.04
Puncte:0
drapel ye

Am reușit să o repar creând un script: /root/mkdocs/run.sh

#!/bin/bash
cd /root/mkdocs
mkdocs serve -a 192.168.3.107:8080

Și schimbarea serviciului în:

[Unitate]
Descriere=serviciu mkdocs
ConditionPathExists=/root/mkdocs
[Serviciu]
Tip=simplu
Utilizator=rădăcină
WorkingDirectory=/usr/local/bin
ExecStart=/usr/bin/env bash /root/mkdocs/run.sh
RemainAfterExit=da

[Instalare]
WantedBy=multi-user.target

Vă las acest răspuns în cazul în care cineva îl caută pe viitor. fișierul trebuie să fie locuri în /etc/systemd/system/mkdocs.service

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.