使用 Elastic Beanstalk 将 WSGI 应用程序错误部署到 AWS

Zmi*_*nka 8 mod-wsgi amazon-web-services

与 AWS 论坛的交叉链接

我已经使用 WSGI 开发了一个简单的 Python Web 服务,并希望使用 Elastic Beanstalk 将其部署到 AWS 云中。我的问题是我无法在云中正确配置我在 Elastic Beanstalk 配置中指定的所有选项。

对于部署,我使用 Elastic Beanstalk CLI 实用程序。我已经运行eb init命令并设置了所需的参数。之后,.elasticbeanstalk在我的源代码树中创建了一个名为的目录。它有两个用于部署的配置文件,即configoptionsettings. 其他选项中的后一个包含必须/etc/httpd/conf.d/wsgi.conf在实例中更新的 WSGI 配置。经过我的一些调整后,该文件具有以下设置:

[aws:elasticbeanstalk:application:environment]
DJANGO_SETTINGS_MODULE = 
参数 1 = 
参数 2 = 
参数 4 = 
参数3 = 
参数 5 = 

[aws:elasticbeanstalk:container:python]
WSGIPath = handler.py
NumProcesses = 2
静态文件 = /静态=
线程数 = 10

[aws:elasticbeanstalk:container:python:staticfiles]
/静态=静态/

[aws:elasticbeanstalk:hostmanager]
LogPublicationControl = false

[aws:自动缩放:启动配置]
InstanceType = t1.micro
EC2KeyName = zmicier-aws

[aws:elasticbeanstalk:应用程序]
应用程序健康检查 URL = 

[aws:自动缩放:asg]
最大尺寸 = 10
最小尺寸 = 1
自定义可用区 = 

[aws:elasticbeanstalk:监控]
自动终止运行状况不佳的实例 = true

[aws:elasticbeanstalk:sns:topics]
通知端点 = 
通知协议 = 电子邮件

事实证明,当我启动环境或更新环境时,并未考虑所有这些选项。因此,当我更新NumThreadsor 时NumProcesses,相应的参数会wsgi.conf按预期更改。但是无论我写入WSGIPathStaticFiles参数,我都无法自动更改 的相应值wsgi.conf,它们仍然存在

Alias /static /opt/python/current/app/
WSGIScriptAlias / /opt/python/current/app/application.py
Run Code Online (Sandbox Code Playgroud)

这让我发疯。此外,当我使用文件git aws.push的以下内容部署我的应用程序时.ebextensions/python.config,我在其中指定的任何选项都不会影响部署。

选项设置:
     - 命名空间:aws:elasticbeanstalk:container:python
       option_name:WSGIPath
       值:mysite/wsgi.py
     - 命名空间:aws:elasticbeanstalk:container:python
       option_name: NumProcesses
       值:5
     - 命名空间:aws:elasticbeanstalk:container:python
       option_name:线程数
       值:25
     - 命名空间:aws:elasticbeanstalk:container:python:staticfiles
       选项名称:/静态/
       值:应用程序/静态/ 

我想知道我应该怎么做才能强制 AWS 使用我在配置中指定的所有参数,即 WSGI 路径和我的静态数据的路径。

har*_*gut 0

考虑使用记录在以下位置的 .ebextensions:

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

您可以根据file:需要在主机实例上配置配置文件。然后重新启动/重新加载(如果需要)command: