【问题标题】:How to run scripts automatically after deployment in AWS using EB CLI?使用 EB CLI 在 AWS 中部署后如何自动运行脚本?
【发布时间】:2015-06-17 14:42:31
【问题描述】:

我正在尝试在 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

基本上我的 wsgi.conf 文件中需要“WSGIApplicationGroup %{GLOBAL}”,否则我会得到 504。我正在使用基于 Amazon Linux 2014 构建的自定义 AMI,并且我正在使用 EB CLI 进行部署。但是,每当我部署 wsgi.conf 并且它不包含我之前添加的行时,我需要手动 SSH 到 EC2 实例并自己执行此任务。它在每次部署时都会产生开销,并且一旦我们扩大规模(克隆或创建实例也会重置它),它也是不可行的。那么有没有办法在每次部署后自动完成?

wsgi.conf 的内容是固定的,所以基本上我可以很容易地制作一个脚本来创建它,但问题是如何自动触发脚本?

PS:我是 AWS 新手

【问题讨论】:

标签: apache amazon-web-services amazon-ec2 amazon-elastic-beanstalk wsgi


【解决方案1】:

您需要使用名为 .ebextensions 的 AWS Elastic Beanstalk 功能:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

在您的情况下,您不能使用 FilesCommands 部分,因为:

命令按名称的字母顺序处理,它们运行 之前应用程序和网络服务器设置和应用程序 版本文件被提取。

您需要使用 Container_commands 部分:

它们运行应用程序和网络服务器已经设置并且 应用程序版本文件已被提取,但在 应用程序版本已部署。

示例 .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 部分替换原始文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-14
    • 2021-03-11
    • 2016-09-13
    • 1970-01-01
    • 2019-03-01
    • 2014-11-09
    • 2016-11-18
    • 2015-07-30
    相关资源
    最近更新 更多