Systemd を使用して Gunicorn Web サービスを実行する際に問題があります。
以下は実行用に作成されたファイルです。
シェルスクリプトファイル(/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ソリューションを好むことができます。