/ bin / sh: 1: exec: gunicorn: bulunamadı

Dec 16 2020

Google bulut uygulama motorunda basit bir django uygulaması dağıtmaya çalışıyorum. Uygulama, wsgi'nin HTTPS isteklerine ve asgi'nin websocket isteklerine hizmet verdiği temel wsgi ve asgi sunucularına sahiptir. Uygulamayı dağıtmak için google uygulama motoru eğiticisini takip ediyorum ve uygulama başarıyla oluşturuldu ve dağıtıldı. Ancak, kurulu paketleri dağıtılan çalışma alanında bulamaz.

Bunlar takip ettiğim adımlar

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

Requirements.txt dosyasında gunicorn ve defne vardır ve bunlar da yüklenir.

Bu, dağıtılan uygulamayı tarayıcıda açtığımda aldığım hatadır.

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

App.yaml dosyam böyle görünüyor

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

Ayrıca giriş noktasında tam yolu geçerek denedim, yani giriş noktası: gunicorn -b: $ PORT main: app ancak aynı hatayı aldım

Virtualenv içinde gcloud app deploy'u arıyorum, ancak uygulandığında kurulu paketleri, yani daphne ve gunicorn okuyamıyor. Her ikisi de aynı paketler ile aynı dizinde yerel ortamda tamamen iyi çalışır.

Bu sorulara şuna ve buna değindim ve cevapları denedim ama hiçbir şey işe yaramadı.

Yanıtlar

1 MuhammadZeeshan Dec 16 2020 at 16:01

GAE uygulama motoru, app.yaml ile aynı dizinde gereksinim.txt dosyasına ihtiyaç duyar.

Requirements.txt dosyam bir alt klasördeydi, bu yüzden google uygulama motoru gunicorn yükleyemedi. Gereksinimleri yerel olarak yüklüyordum ve dağıtım sırasında yüklü gereksinimleri geçiyordum, ancak bunları yerel olarak yüklemeye gerek yok gibi görünüyor (değişiklikleri yerel sunucuda test etmek dışında).