2016-01-13 6 views
0

Я запускаю приложение на beanstalk AWS и устраняю проблему, которую у меня есть. Часть развертывания создаст сценарий оболочки и выполнит его. Когда команда выполняется, первая строка работает нормально. Это простая команда «cat file.txt >> /etc/httpd/file.conf».AWS Beanstalk - запуск сценария оболочки, где команда не выполняется успешно

Во второй строке мне нужно найти строку текста и поместить ее в файл, и она никогда не пройдет успешно. Я могу запустить скрипт вручную как 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 

Кто-нибудь знает, почему команда sed не работает в сценарии оболочки при Beanstalk развертывает?

+0

Вы можете уточнить вопрос? выполняется команда 'sed', но не работает или весь скрипт не выполняется? Кроме того, этот файл является файлом '.config'? – Tal

+0

Beanstalk выполняет сценарий оболочки и запускает первую часть. Команда sed также запускается, но не выполняется, потому что файл не был изменен. Затем я могу взять скрипт, который был написан на сервере, и запустить его вручную, и команда sed будет работать, будет ли я работать как пользователь ec2 с sudo или root. – nocode

+0

Может ли быть, что вы запускаете этот скрипт до того, как файл вставлен на место или заменен тем, который был там установлен во время развертывания? Попробуйте запустить его как команду контейнера. – Gustaf

ответ

1

Поэтому я не понимал, что наша компания поддерживает план поддержки AWS и связывается с ними. Файл, который я пытался изменить, также поставлен в beanstalk. Таким образом, в то время как технически мой файл обновлялся, Beanstalk затем подталкивал их поставленный файл в производство. Вы можете запустить эту команду в экземпляре beanstalk:

[[email protected] ~]# /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" 
} 

И файл, который я пытался обновить, является последним. Мне нужно запустить мою команду против этого файла, и Amazon затем подтолкнет ее.

 Смежные вопросы

  • Нет связанных вопросов^_^