/ bin / sh: 1: exec: gunicorn: tidak ditemukan

Dec 16 2020

Saya mencoba menerapkan aplikasi django sederhana di mesin aplikasi cloud Google. Aplikasi memiliki server wsgi dan asgi dasar di mana wsgi melayani permintaan HTTPS dan asgi melayani permintaan websocket. Saya mengikuti tutorial mesin aplikasi google untuk menerapkan aplikasi dan itu akan dibangun dan diterapkan dengan sukses. Namun, tidak dapat menemukan paket yang diinstal di ruang kerja yang diterapkan.

Ini adalah langkah-langkah yang saya ikuti

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

Requirement.txt memiliki gunicorn dan daphne dan mereka juga terinstal.

Ini adalah kesalahan yang saya dapatkan ketika saya membuka aplikasi yang diterapkan di browser.

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

Seperti inilah tampilan file app.yaml saya

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

Saya juga mencoba dengan melewati jalur yang tepat di entrypoint yaitu entrypoint: gunicorn -b: $ PORT main: app tetapi mendapat kesalahan yang sama

Saya memanggil penerapan aplikasi gcloud di dalam virtualenv saya tetapi ketika diterapkan, ia tidak dapat membaca paket yang diinstal yaitu daphne dan gunicorn. Keduanya bekerja dengan sangat baik pada lingkungan lokal di direktori yang sama dengan paket yang sama.

Saya telah merujuk pada pertanyaan-pertanyaan ini ini dan ini dan mencoba jawabannya tetapi tidak ada yang berhasil.

Jawaban

1 MuhammadZeeshan Dec 16 2020 at 16:01

Mesin aplikasi GAE membutuhkan file requirement.txt dalam direktori yang sama dengan app.yaml.

File requirement.txt saya berada di sub-folder, itulah sebabnya mesin aplikasi google tidak dapat menginstal gunicorn. Saya menginstal persyaratan secara lokal dan melewati persyaratan yang diinstal saat menerapkan, tetapi tampaknya tidak perlu menginstalnya secara lokal (kecuali untuk menguji perubahan di server lokal).