【问题标题】:AWS Beanstalk - running shell script where command does not execute successfullyAWS Beanstalk - 运行命令未成功执行的 shell 脚本
【发布时间】:2016-04-19 03:20:23
【问题描述】:

我正在 AWS beanstalk 上运行应用程序并解决我遇到的问题。部分部署将创建一个 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 脚本中不起作用?

【问题讨论】:

  • 你能澄清一下这个问题吗? sed 命令是否已执行但不起作用或整个脚本未执行?另外,这个文件是.config 文件吗?
  • Beanstalk 执行 shell 脚本并运行第一部分。 sed 命令也会运行但不会执行,因为文件没有被修改。然后我可以获取在服务器上编写的脚本并手动运行它,无论我使用 sudo 以 ec2-user 身份还是以 root 身份运行,sed 命令都将起作用。
  • 可能是您在文件放置到位之前运行此脚本,还是被部署期间放置的脚本替换?尝试将其作为容器命令运行。
  • 我想过,但我的 beanstalk 创建了 2 个文件。然后该脚本将执行 2 个操作,并且只执行其中一个操作。第二个,文件被触及。我什至尝试让脚本删除文件并下载我上传到 S3 的文件,但没有做任何事情。

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


【解决方案1】:

所以我没有意识到我们公司有 AWS 支持计划并联系了他们。我试图修改的文件也在 beanstalk 中上演。因此,当我的文件在技术上得到更新时,Beanstalk 将他们的暂存文件推送到生产环境中。您可以在 beanstalk 实例上运行此命令:

[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"
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多