Systemd를 사용하여 Gunicorn 웹 서비스를 시작할 때 문제가 발생했습니다.

Systemd를 사용하여 Gunicorn 웹 서비스를 시작할 때 문제가 발생했습니다.

Systemd를 사용하여 Gunicorn 웹 서비스를 실행하는 데 문제가 있습니다.

아래는 실행을 위해 만든 파일입니다.

쉘 스크립트 파일(/home/ubuntu/mata.sh):

#!/usr/bin/env bash

cd /home/ubuntu/workspace/test-api
/home/ubuntu/workspace/mata_venv/bin/gunicorn --workers=4 app:app --bind 0.0.0.0:xxxx

이것은 내 .service 파일(/lib/systemd/system/mata.service)입니다.

[Unit]
Description=Test API Service
After=multi-user.target
[email protected]

[Service]
User=ubuntu
Type=simple
ExecStart=/home/ubuntu/mata.sh
StandardInput=tty-force

[Install]
WantedBy=multi-user.target

쉘 스크립트를 실행하는 것 자체는 잘 작동하지만 실행하면 systemctl status mata.service다음 메시지가 나타납니다.

Started Test API Service
mata.service: Main process exited, code=exited, status=216/GROUP
mata.service: Unit entered failed state.
mata.service: Failed with result 'exit-code'.

어떤 아이디어가 있나요?

답변1

"Type=simple" 서비스가 없고 "mata.sh" 프로세스가 아니라 "gunicorn" 프로세스에 관심이 있기 때문에 분기된 서비스가 있습니다.

Type=simple 서비스의 경우 [Service]이 섹션을 다음으로 변경합니다.

[Service]
User=ubuntu
Type=simple
WorkingDirectory=/home/ubuntu/workspace/test-api
ExecStart=/home/ubuntu/workspace/mata_venv/bin/gunicorn --workers=4 app:app --bind 0.0.0.0:xxxx
StandardInput=tty-force

... cd가져오기 명령을 사용했습니다 .작업 목록지시하다.

아니면 포크된 서비스로 만드세요:

[Service]
User=ubuntu
Type=forking
ExecStart=/home/ubuntu/mata.sh
StandardInput=tty-force

gunicorn 프로세스가 하위 프로세스(workers=4)를 시작하는 것처럼 보이면 Type=forking 솔루션을 선호할 수 있습니다.

관련 정보