linux - AWS Beanstalk - 在命令未成功执行的情况下运行 shell 脚本

标签 linux amazon amazon-elastic-beanstalk ec2-ami

我正在 AWS beantalk 上运行一个应用程序并解决我遇到的问题。部署的一部分将创建一个 shell 脚本并执行它。命令执行时,第一行工作正常。这是一个简单的“cat file.txt >>/etc/httpd/file.conf”命令。

第二行,我需要搜索一串文本并将其放入文件中,但它从未成功运行。我可以以 root 身份手动运行脚本,没有任何问题。这是文件:

#! /bin/bash
if ! grep -q 'Clickjacking' /etc/httpd/conf/httpd.conf ;
then
    cat /home/ec2-user/httpd-update.conf >> /etc/httpd/conf/httpd.conf
fi

# check if wsgi mod exists and insert into wsgi.conf if necessary
if ! grep -q 'TRACE|TRACK' /etc/httpd/conf.d/wsgi.conf;
then
  sed -i -e '/WSGIProcessGroup wsgi/r /home/ec2-user/wsgi-update.conf' /etc/httpd/conf.d/wsgi.conf
fi
sudo service httpd reload

有谁知道为什么在部署 Beanstalk 时 sed 命令在 shell 脚本中不起作用?

最佳答案

所以我没有意识到我们公司有 AWS 支持计划并联系了他们。我试图修改的文件也在 beanstalk 中上演。因此,虽然从技术上讲,我的文件正在更新,但 Beanstalk 随后将他们暂存的文件投入生产。您可以在 beantalk 实例上运行此命令:

[root@ip-10-0-90-168 ~]# /opt/elasticbeanstalk/bin/get-config container | python -mjson.tool
{
    "app_base_dir": "/opt/python/current",
    "app_deploy_dir": "/opt/python/current/app",
    "app_staging_base": "/opt/python/ondeck",
    "app_staging_dir": "/opt/python/ondeck/app",
    "app_user": "wsgi",
    "app_virtual_env": "/opt/python/run/venv",
    "base_path_dirs": "/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin",
    "bundle_dir": "/opt/python/bundle",
    "env_deploy_config": "/opt/python/current/env",
    "env_staging_config": "/opt/python/ondeck/env",
    "instance_port": "80",
    "python_version": "2.7",
    "source_bundle": "/opt/elasticbeanstalk/deploy/appsource/source_bundle",
    "wsgi_deploy_config": "/etc/httpd/conf.d/wsgi.conf",
    "wsgi_staging_config": "/opt/python/ondeck/wsgi.conf"
}

我试图更新的文件是最后一个。我需要针对该文件运行我的命令,然后亚马逊会推送它。

关于linux - AWS Beanstalk - 在命令未成功执行的情况下运行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34778748/

相关文章:

django - 为什么 Gunicorn 使用端口 8000/8001 而不是 80?

windows - 自动将 linux 文件名重命名为 Windows 中合法的新文件名

email - 从 cli 中删除亚马逊 ses 模板

java - Amazon Elastic Beanstalk Java 如何获取 Oracle JDK

amazon-web-services - 弹性负载均衡器监听器不适用于一个端口

c++ - 在 C++ 中调用手册第 2 节中的函数

amazon-s3 - 顶级域上的 Cloudfront dist

amazon-web-services - Elastic Beanstalk - 如何根据环境和 Sidekiq Worker 运行特定的 ebextensions

amazon-web-services - AWS ELB 从 FaSTLy 健康检查中获得大量 404 错误

linux - 如何删除 "cargo new"创建的项目目录