Saya telah mengembangkan layanan web Python sederhana menggunakan WSGI dan ingin menyebarkannya ke cloud AWS menggunakan Elastic Beanstalk. Masalah saya adalah saya tidak bisa membuat semua opsi yang saya tentukan di konfigurasi Elastic Beanstalk untuk dikonfigurasi dengan benar di cloud.
Untuk penyebaran, saya menggunakan utilitas CLI Elastic Beanstalk. Saya telah menjalankan eb init
perintah dan mengatur parameter yang diperlukan. Setelah ini, direktori bernama .elasticbeanstalk
dibuat di pohon sumber saya. Ini memiliki dua file konfigurasi yang digunakan untuk penyebaran, yaitu config
dan optionsettings
. Yang terakhir di antara opsi-opsi lain berisi konfigurasi WSGI yang harus diperbarui /etc/httpd/conf.d/wsgi.conf
pada instance. Setelah beberapa penyesuaian saya file memiliki pengaturan berikut:
[aws: elasticbeanstalk: aplikasi: lingkungan] DJANGO_SETTINGS_MODULE = PARAM1 = PARAM2 = PARAM4 = PARAM3 = PARAM5 = [aws: elasticbeanstalk: container: python] WSGIPath = handler.py NumProcesses = 2 StaticFiles = / static = NumThreads = 10 [aws: elasticbeanstalk: wadah: python: staticfiles] / static = static / [aws: elasticbeanstalk: hostmanager] LogPublicationControl = false [aws: autoscaling: launchconfiguration] InstanceType = t1.micro EC2KeyName = zmicier-aws [aws: elasticbeanstalk: aplikasi] URL Pemeriksaan Kesehatan Aplikasi = [aws: autoscaling: asg] MaxSize = 10 MinSize = 1 Zona Ketersediaan Khusus = [aws: elasticbeanstalk: monitoring] Secara otomatis Hentikan Instans Tidak Sehat = true [aws: elasticbeanstalk: sns: topik] Pemberitahuan Titik Akhir = Protokol Pemberitahuan = email
Ternyata tidak semua opsi ini dipertimbangkan ketika saya memulai lingkungan atau memperbaruinya. Jadi, ketika saya memperbarui NumThreads
atau NumProcesses
, parameter masing-masing bisa berubah wsgi.conf
seperti yang diharapkan. Tapi apa pun yang saya tulis ke WSGIPath
dan StaticFiles
parameter, saya tidak dapat secara otomatis mengubah nilai masing-masing wsgi.conf
, mereka tetap
Alias /static /opt/python/current/app/
WSGIScriptAlias / /opt/python/current/app/application.py
yang membuatku gila. Selain itu, ketika saya menyebarkan aplikasi saya menggunakan git aws.push
dan memiliki konten .ebextensions/python.config
file berikut , tidak ada opsi yang saya tentukan di dalamnya yang mempengaruhi penyebaran.
option_settings: - namespace: aws: elasticbeanstalk: container: python option_name: WSGIPath nilai: mysite / wsgi.py - namespace: aws: elasticbeanstalk: container: python option_name: NumProcesses nilai: 5 - namespace: aws: elasticbeanstalk: container: python option_name: NumThreads nilai: 25 - namespace: aws: elasticbeanstalk: container: python: staticfiles option_name: / static / nilai: aplikasi / statis /
Saya bertanya-tanya apa yang harus saya lakukan untuk memaksa AWS menggunakan semua parameter yang saya tentukan dalam konfigurasi, yaitu Jalur WSGI dan jalur ke data statis saya.