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 initperintah dan mengatur parameter yang diperlukan. Setelah ini, direktori bernama .elasticbeanstalkdibuat di pohon sumber saya. Ini memiliki dua file konfigurasi yang digunakan untuk penyebaran, yaitu configdan optionsettings. Yang terakhir di antara opsi-opsi lain berisi konfigurasi WSGI yang harus diperbarui /etc/httpd/conf.d/wsgi.confpada 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 NumThreadsatau NumProcesses, parameter masing-masing bisa berubah wsgi.confseperti yang diharapkan. Tapi apa pun yang saya tulis ke WSGIPathdan StaticFilesparameter, 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.pushdan memiliki konten .ebextensions/python.configfile 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.