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