我已经使用WSGI开发了一个简单的Python Web服务,并希望使用Elastic Beanstalk将其部署到AWS云。我的问题是我无法使在Elastic Beanstalk配置中指定的所有选项都可以在云中正确配置。
对于部署,我使用Elastic Beanstalk CLI实用程序。我已经运行eb init
命令并设置了所需的参数。之后,.elasticbeanstalk
在我的源代码树中创建了一个名为目录。它具有两个用于部署的配置文件,即config
和optionsettings
。其他选项中的后一个包含必须/etc/httpd/conf.d/wsgi.conf
在实例上更新的WSGI配置。经过一些调整后,文件具有以下设置:
[aws:elasticbeanstalk:应用程序:环境] DJANGO_SETTINGS_MODULE = PARAM1 = PARAM2 = PARAM4 = PARAM3 = PARAM5 = [aws:elasticbeanstalk:container:python] WSGIPath = handler.py NumProcesses = 2 StaticFiles = / static = NumThreads = 10 [aws:elasticbeanstalk:container:python:staticfiles] / static =静态/ [aws:elasticbeanstalk:hostmanager] LogPublicationControl =假 [aws:autoscaling:launchconfiguration] InstanceType = t1.micro EC2KeyName = zmicier-aws [aws:elasticbeanstalk:应用程序] 应用程序运行状况检查URL = [aws:autoscaling:asg] 最大大小= 10 最小大小= 1 自定义可用区= [aws:elasticbeanstalk:monitoring] 自动终止不正常的实例= true [aws:elasticbeanstalk:sns:topics] 通知端点= 通知协议=电子邮件
事实证明,启动环境或更新环境时,并未考虑所有这些选项。因此,当我更新NumThreads
或时NumProcesses
,各个参数wsgi.conf
将按预期更改。但是,无论我写到WSGIPath
和StaticFiles
参数如何,都无法自动更改的相应值wsgi.conf
,它们仍然
Alias /static /opt/python/current/app/
WSGIScriptAlias / /opt/python/current/app/application.py
这让我发疯。而且,当我使用文件git aws.push
的以下内容来部署我的应用程序时.ebextensions/python.config
,在其中指定的任何选项都不会影响部署。
option_settings: -名称空间:aws:elasticbeanstalk:container:python option_name:WSGIPath 值:mysite / wsgi.py -名称空间:aws:elasticbeanstalk:container:python option_name:NumProcesses 价值:5 -名称空间:aws:elasticbeanstalk:container:python option_name:NumThreads 价值:25 -名称空间:aws:elasticbeanstalk:容器:python:staticfiles option_name:/ static / 值:app / static /
我想知道如何强制AWS使用我在配置中指定的所有参数,即WSGI路径和我的静态数据的路径。