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 솔루션을 선호할 수 있습니다.