【发布时间】: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