システムが再起動または起動するたびに、複数のgunicornサーバーを自動的に実行したいと考えており、バックグラウンドでも、これらのサーバーは通常フラスコサーバーです。
問題
- システムサービスを手動で起動している間はgunicornサーバーを実行できますが、後述の最初のサーバーのみを実行し、その後次のサービスを開始しません。
- システムを再起動または起動するたびに、サービスは自動的に起動しません。
Start.sh
base_gunicorn=/X/Y/anaconda3/envs/msclone/bin/gunicorn
cd ${base_path}"/ms/some_service1/"
${base_gunicorn} -b 0.0.0.0:8000 -w 1 --log-file some_service1.log wsgi:app >/dev/null 2>&1 &
cd ${base_path}"/ms/some_service2/"
${base_gunicorn} -b 0.0.0.0:8001 -w 1 --log-file some_service2.log wsgi:app >/dev/null 2>&1 &
myservice.service
[Service]
ExecStart=/X/Y/start.sh
RestartSec=2
答え1
#gunicorn1.サービス [提供する] ランタイムディレクトリ=gunicorn1 ユーザー=グニコン タイプ=シンプル 作業ディレクトリ=/X/Y/anaconda3/envs/ms/some_service1/ ExecStart=/X/Y/anaconda3/envs/msclone/bin/gunicorn -b 0.0.0.0:8000 -w 1 wsgi:app 再開秒= 2
#gunicorn2.service [提供する] ランタイムディレクトリ=gunicorn2 ユーザー=グニコン タイプ=シンプル 作業ディレクトリ=/X/Y/anaconda3/envs/ms/some_service2/ ExecStart=/X/Y/anaconda3/envs/msclone/bin/gunicorn -b 0.0.0.0:8001 -w 1 wsgi:app 再開秒= 2
docoに従って適切なソケットユニットを作成します。Wanted-By=
これらの機能を有効/無効にする機能を[install]
コンセントデバイスセクションに配置します。これはソケットユニットサービスデバイスではなく、自動起動が必要です - 再びdocoに従って。
追加読書
- ジョナサンデボインポラード(2016)。 」2つのサービスがある場合は、両方のサービスを定義します。」。
systemd
恐怖の家。一般的な答え。 - http://docs.gunicorn.org/en/stable/deploy.html#systemd