/ bin / sh:1:exec:gunicorn:見つかりません

Dec 16 2020

シンプルなdjangoアプリをGoogleCloud AppEngineにデプロイしようとしています。アプリには基本的なwsgiサーバーとasgiサーバーがあり、wsgiはHTTPSリクエストを処理し、asgiはWebSocketリクエストを処理します。Google App Engineチュートリアルに従ってアプリをデプロイすると、正常にビルドおよびデプロイされます。ただし、デプロイされたワークスペースにインストールされているパッケージを見つけることができません。

これらは私が従うステップです

gcloud init
virtualenv myenv
source activate myenv/bin/activate
pip install -r requirements.txt
gcloud app deploy

Requirements.txtにはgunicornとdaphneがあり、それらもインストールされます。

これは、デプロイされたアプリをブラウザーで開いたときに発生するエラーです。

2020-12-15 20:48:25 my-service[20201216t014451]  /bin/sh: 1: exec: gunicorn: not found

これは私のapp.yamlファイルがどのように見えるかです

runtime: python38
service: my-service
instance_class: F2

entrypoint: gunicorn -b :$PORT main:app
handlers:
  - url: /.*
    script: auto
    secure: always

inbound_services:
- warmup

automatic_scaling:
  min_instances: 1
  min_idle_instances: 1
  max_instances: 2
  max_idle_instances: 1

また、エントリポイント、つまりエントリポイントで正確なパスを渡してみました:gunicorn -b:$ PORT main:appが、同じエラーが発生しました

virtualenv内でgcloudapp deployを呼び出していますが、デプロイされると、インストールされているパッケージ、つまりdaphneとgunicornを読み取ることができません。これらは両方とも、同じパッケージの同じディレクトリ内のローカル環境で完全に正常に機能します。

私はこれらの質問をこれとこれを参照して答えを試しましたが、何も機能しませんでした。

回答

1 MuhammadZeeshan Dec 16 2020 at 16:01

GAEアプリエンジンには、app.yamlと同じディレクトリにrequirements.txtファイルが必要です。

私のrequirements.txtファイルはサブフォルダーにありました。そのため、Google AppEngineはgunicornをインストールできませんでした。要件をローカルにインストールし、デプロイ中にインストールされた要件を渡していましたが、ローカルにインストールする必要はないようです(ローカルサーバーで変更をテストする場合を除く)。