/ bin / sh: 1: exec: gunicorn: bulunamadı
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
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).