我正在尝试在AWS上创建一个Django服务器。我的django应用程序依赖于一些数学python库,如numpy,scipy,sklearn等。但是每次部署后我都需要这个问题
sudo nano /etc/httpd/conf.d/wsgi.conf
---------------------------------------
add this line in the file
WSGIApplicationGroup %{GLOBAL}
---------------------------------------
sudo /etc/init.d/httpd reload
基本上我需要" WSGIApplicationGroup %{GLOBAL}
"在我的wsgi.conf文件中,否则我得到504.我使用基于Amazon Linux 2014构建的自定义AMI,我使用EB CLI进行部署。但是,每当我部署wsgi.conf时,它都会重置并且它不包含我之前添加的行,我需要手动SSH到EC2实例并自己执行此任务。它给每次部署带来了开销,一旦我们扩展它们也是不可行的(克隆或创建实例也会重置它)。那么有没有办法在每次部署后自动完成?
wsgi.conf的内容是固定的,所以基本上我可以轻松创建一个脚本但是问题是如何自动触发脚本?
PS:我是AWS新手
答案 0 :(得分:1)
您需要使用名为.ebextensions的AWS Elastic Beanstalk功能:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
在您的情况下,您无法使用文件或命令部分,因为:
命令按名称按字母顺序处理,然后运行 之前设置应用程序和Web服务器以及应用程序 提取版本文件。
您需要使用 Container_commands 部分:
他们在之后运行应用程序和Web服务器并且已经设置了 应用程序版本文件已被提取,但之前 部署了应用程序版本。
示例 .ebextensions / 01wsgi.config (未经测试: - ))
container_commands:
apache_reload:
command: |
echo "WSGIApplicationGroup %{GLOBAL}" >> /etc/httpd/conf.d/wsgi.conf
/etc/init.d/httpd reload
可以根据需要随意调整我的示例,例如,您可以在某处复制临时wsgi.conf文件,然后替换 Container_commands 部分中的原始文件。