/ bin / sh: 1: exec: gunicorn: nie znaleziono

Dec 16 2020

Próbuję wdrożyć prostą aplikację django w silniku aplikacji w chmurze Google. Aplikacja ma podstawowe serwery wsgi i asgi, na których wsgi obsługuje żądania HTTPS, a asgi obsługuje żądania Websocket. Postępuję zgodnie z samouczkiem Google App Engine, aby wdrożyć aplikację, która została pomyślnie skompilowana i wdrożona. Jednak nie może znaleźć zainstalowanych pakietów we wdrożonym obszarze roboczym.

Oto kroki, które podążam

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

Requirements.txt mają gunicorn i daphne, a także są instalowane.

Jest to błąd, który pojawia się, gdy otwieram wdrożoną aplikację w przeglądarce.

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

Tak wygląda mój plik 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

Próbowałem również, przekazując dokładną ścieżkę w punkcie wejścia, tj . Punkt wejścia: gunicorn -b: $ PORT main: aplikacja, ale otrzymałem ten sam błąd

Wzywam gcloud app deploy w moim virtualenv, ale po wdrożeniu nie jest w stanie odczytać zainstalowanych pakietów, tj. Daphne i gunicorn. Oba działają całkowicie dobrze w środowisku lokalnym w tym samym katalogu z tymi samymi pakietami.

Odniosłem się do tych pytań, to i to, i wypróbowałem odpowiedzi, ale nic nie działało.

Odpowiedzi

1 MuhammadZeeshan Dec 16 2020 at 16:01

Silnik aplikacji GAE wymaga pliku Requirements.txt w tym samym katalogu co app.yaml.

Mój plik Requirements.txt znajdował się w podfolderze, dlatego silnik aplikacji Google nie mógł zainstalować gunicorn. Instalowałem wymagania lokalnie i przekazywałem zainstalowane wymagania podczas wdrażania, ale wydaje się, że nie ma potrzeby instalowania ich lokalnie (z wyjątkiem testowania zmian na serwerze lokalnym).