Điểm:0

Tạo một dịch vụ Systemd trong Ubuntu để chạy MKDocs

lá cờ ye

Tôi đang chạy một máy chủ có MKDocs để làm tài liệu.

Để sử dụng MKDocs từ thư mục chứa dự án, bạn cần chạy mkdocs phục vụ -a 192.168.3.107:8080 để làm cho nó bắt đầu.

Cho đến nay tôi đã sử dụng /usr/bin/tmux phiên mới -d -s "MKDOCS" "cd /root/mkdocs && mkdocs phục vụ -a 192.168.3.107:8080" để nó chạy ở chế độ nền nhưng đây là một giải pháp rất sơ sài và tôi muốn chạy nó dưới dạng Dịch vụ systemd.

Tôi đã thử một cái gì đó như thế này nhưng nó không hoạt động:

[Đơn vị]
Mô tả=dịch vụ mkdocs
Điều kiệnPathExists=/root/mkdocs
[Dịch vụ]
Loại = đơn giản
Người dùng = root
WorkingDirectory=/usr/local/bin
ExecStart=/root/mkdocs phục vụ -a 192.168.3.107:8080
RemainafterExit=có

[Cài đặt]
WantedBy=multi-user.target

Sau khi tôi chạy dịch vụ khi bắt đầu, trạng thái hiển thị:

root@server:~/mkdocs# dịch vụ trạng thái mkdocs
â mkdocs.service - dịch vụ mkdocs
     Đã tải: đã tải (/etc/systemd/system/mkdocs.service; đã tắt; giá trị đặt sẵn của nhà cung cấp: đã bật)
     Hoạt động: không thành công (Kết quả: mã thoát) kể từ Thứ Tư 2022-02-02 13:54:44 CET; 3 phút 46 giây trước
    Quá trình: 379585 ExecStart=/root/mkdocs serve -a 192.168.3.107:8080 (code=exited, status=203/EXEC)
   PID chính: 379585 (mã=đã thoát, trạng thái=203/EXEC)

Tôi nhận được chương trình journalctl -xe:

-- Định danh công việc là 368094.
Ngày 02 tháng 2 13:54:44 server.domain.local systemd[379585]: mkdocs.service: Không thể thực thi lệnh: Quyền bị từ chối
Ngày 02 tháng 2 13:54:44 server.domain.local systemd[379585]: mkdocs.service: Thất bại ở bước sinh sản EXEC /root/mkdocs: Quyền bị từ chối
-- Chủ đề: Không thể thực thi tiến trình /root/mkdocs
-- Xác định bởi: systemd
-- Hỗ trợ: http://www.ubuntu.com/support
-- 
-- Quá trình /root/mkdocs không thể thực thi và bị lỗi.
-- 
-- Số lỗi do quy trình này trả về là ERRNO.
Ngày 02 tháng 2 13:54:44 server.domain.local systemd[1]: mkdocs.service: Quá trình chính đã thoát, mã=đã thoát, trạng thái=203/EXEC
-- Chủ đề: Quá trình đơn vị đã thoát
-- Xác định bởi: systemd
-- Hỗ trợ: http://www.ubuntu.com/support
-- 
-- Quá trình ExecStart= thuộc đơn vị mkdocs.service đã thoát.
-- 
-- Mã thoát của quy trình là 'đã thoát' và trạng thái thoát của nó là 203.
Ngày 02 tháng 2 13:54:44 server.domain.local systemd[1]: mkdocs.service: Không thành công với kết quả là 'mã thoát'.
-- Chủ đề: Đơn vị thất bại
-- Xác định bởi: systemd
-- Hỗ trợ: http://www.ubuntu.com/support
-- 
-- Đơn vị mkdocs.service đã chuyển sang trạng thái 'không thành công' với kết quả là 'mã thoát'.

Tôi đã cấp quyền đầy đủ cho thư mục với chmod -R 777/root/mkdocs tuy nhiên tôi vẫn gặp lỗi tương tự.

Hy vọng, ai đó có thể giúp tôi làm cho nó hoạt động. Cảm ơn bạn

CHỈNH SỬA:

Tôi đã Thay đổi đường dẫn, vẫn sẽ có 777 quyền, vì vậy mã bây giờ là:

tuy nhiên nó vẫn không hoạt động, tôi nhận được:

root@server:/test# systemctl daemon-reload
root@server:/test# systemctl start mkdocs.service
root@server:/test# systemctl status mkdocs.service
â mkdocs.service - dịch vụ mkdocs
     Đã tải: đã tải (/etc/systemd/system/mkdocs.service; đã tắt; giá trị đặt sẵn của nhà cung cấp: đã bật)
     Hoạt động: không thành công (Kết quả: mã thoát) kể từ Thứ Tư 2022-02-02 14:17:24 CET; 4 giây trước
    Quá trình: 380128 ExecStart=/kiểm tra mkdocs phục vụ -a 192.168.3.107:8080 (mã=đã thoát, trạng thái=203/EXEC)
   PID chính: 380128 (mã=đã thoát, trạng thái=203/EXEC)

Ngày 02 tháng 2 14:17:24 server.domain.local systemd[1]: Bắt đầu dịch vụ mkdocs.
Ngày 02 tháng 2 14:17:24 server.domain.local systemd[380128]: mkdocs.service: Không thể thực thi lệnh: Quyền bị từ chối
Ngày 02 tháng 2 14:17:24 server.domain.local systemd[380128]: mkdocs.service: Thất bại ở bước sinh sản /kiểm tra EXEC: Quyền bị từ chối
Ngày 02 tháng 2 14:17:24 server.domain.local systemd[1]: mkdocs.service: Quá trình chính đã thoát, mã=đã thoát, trạng thái=203/EXEC
Ngày 02 tháng 2 14:17:24 server.domain.local systemd[1]: mkdocs.service: Không thành công với kết quả là 'mã thoát'.

tạp chí -xe trình diễn:

-- Đơn vị mkdocs.service đã chuyển sang trạng thái 'không thành công' với kết quả là 'mã thoát'.
Ngày 02 tháng 2 14:20:32 server.domain.local systemd[1]: Bắt đầu dịch vụ mkdocs.
-- Chủ đề: Công việc bắt đầu cho đơn vị mkdocs.service đã kết thúc thành công
-- Xác định bởi: systemd
-- Hỗ trợ: http://www.ubuntu.com/support
-- 
-- Công việc bắt đầu cho đơn vị mkdocs.service đã kết thúc thành công.
-- 
-- Định danh công việc là 368972.
Ngày 02 tháng 2 14:20:32 server.domain.local systemd[380164]: mkdocs.service: Không thể thực thi lệnh: Quyền bị từ chối
Ngày 02 tháng 2 14:20:32 server.domain.local systemd[380164]: mkdocs.service: Thất bại ở bước sinh sản /kiểm tra EXEC: Quyền bị từ chối
-- Chủ đề: Không thể thực thi quy trình /kiểm tra
-- Xác định bởi: systemd
-- Hỗ trợ: http://www.ubuntu.com/support
-- 
-- Quá trình /test không thể thực thi và thất bại.
-- 
-- Số lỗi do quy trình này trả về là ERRNO.
Ngày 02 tháng 2 14:20:32 server.domainlocal systemd[1]: mkdocs.service: Quá trình chính đã thoát, mã=đã thoát, trạng thái=203/EXEC
-- Chủ đề: Quá trình đơn vị đã thoát
-- Xác định bởi: systemd
-- Hỗ trợ: http://www.ubuntu.com/support
-- 
-- Quá trình ExecStart= thuộc đơn vị mkdocs.service đã thoát.
-- 
-- Mã thoát của quy trình là 'đã thoát' và trạng thái thoát của nó là 203.
Ngày 02 tháng 2 14:20:32 server.domain.local systemd[1]: mkdocs.service: Không thành công với kết quả là 'mã thoát'.
-- Chủ đề: Đơn vị thất bại
-- Xác định bởi: systemd
-- Hỗ trợ: http://www.ubuntu.com/support
-- 
-- Đơn vị mkdocs.service đã chuyển sang trạng thái 'không thành công' với kết quả là 'mã thoát'.

nó không có ý nghĩa gì vì các quyền là 777.

lá cờ uz
Jos
Tại sao nó không hoạt động? Bạn dường như đang đi đúng hướng. Điều gì xảy ra với `sudo systemctl start mkdocs` hoặc `sudo systemctl status mkdocs`?
lá cờ ye
@Jos Tôi đã chỉnh sửa câu hỏi gốc với nhiều thông tin hơn, cảm ơn vì đã xem qua
lá cờ uz
Jos
Đó là một vấn đề về quyền. Tệp thực thi có quyền không phù hợp hoặc bạn không bắt đầu dịch vụ với `sudo`. Trong mọi trường hợp, `/root` không phải là một vị trí rất tốt cho các tệp thực thi của máy chủ.
lá cờ ye
@Jos Tôi đã cập nhật bài đăng bằng EDIT, tôi đã thay đổi đường dẫn và cấp 777 quyền, nhưng vẫn gặp sự cố. hy vọng bạn có thể xem qua. Cảm ơn. Tôi tin rằng vấn đề là cách tôi đã viết lệnh. Tôi phải ở trong thư mục chứa tài liệu và chạy mkdocs, được tìm thấy: whereis mkdocs mkdocs: /usr/local/bin/mkdocs /usr/share/man/man1/mkdocs.1.gz
lá cờ ye
@guiverc Tôi đã cập nhật các thẻ, tôi thực sự đang thử nghiệm vào ngày 20.04
Điểm:0
lá cờ ye

Tôi đã cố gắng sửa nó bằng cách tạo tập lệnh: /root/mkdocs/run.sh

#!/bin/bash
cd /root/mkdocs
mkdocs phục vụ -a 192.168.3.107:8080

Và thay đổi dịch vụ thành:

[Đơn vị]
Mô tả=dịch vụ mkdocs
Điều kiệnPathExists=/root/mkdocs
[Dịch vụ]
Loại = đơn giản
Người dùng = root
WorkingDirectory=/usr/local/bin
ExecStart=/usr/bin/env bash /root/mkdocs/run.sh
RemainafterExit=có

[Cài đặt]
WantedBy=multi-user.target

Tôi sẽ để lại câu trả lời này trong trường hợp ai đó tìm kiếm nó trong tương lai. tập tin cần phải được đặt trong /etc/systemd/system/mkdocs.service

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.