2013-03-17 12 views
4

Я пытаюсь настроить мой AWS Elastic Beanstalk работать с Монго, все, что мне нужно сделать, это установить драйвер Монго для PHP и обновить файл php.iniустановка PHP модуль из Elastic Beanstalk

Чтобы сделать это, обычно я бы SSH в EC2 и запустить:

sudo pecl install mongo 

Но это потребовало бы использовать пользовательский AMI, который Isnt лучший путь.

Лучше использовать конфигурационные файлы для установки программного обеспечения, требуемого для стандартного AMI.

Так как это сделать, я сделал следующий: созданного .ebextensions каталога созданного файл mongo.config

в нем я поместил следующее:

packages: 
pecl: install mongo 

Однако после развертывания, я получить следующее сообщение об ошибке:

"option_settings" in one of the configuration files failed validation. More details to follow. 

и

'null' values are not allowed in templates 

Так что мне интересно, как этот конфигурационный файл нужно выложить, чтобы установить расширение mongo?

Я прочитал информацию здесь: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

, но я не совсем понимая, как сделать эту конкретную задачу

Помощь будет оценена, спасибо! :)

ответ

2

Я понял это и думал, что поделюсь тем, что нашел. Благодаря Hudku (http://blog.hudku.com/2013/02/innocuous-looking-evil-devil.html#elastic-beanstalk.config) за отличную статью:

1) Создание myapp.config 2) введите следующую команду в это

packages: 
    yum: 
     dos2unix: [] 


container_commands: 
    01-command: 
     command:  rm -rf /myapp/ebextensions 

    02-command: 
     command:  mkdir -p /myapp/ebextensions 

    03-command: 
     command:  cp -R .ebextensions/* /myapp/ebextensions/ 

    04-command: 
     command:  dos2unix -k /myapp/ebextensions/mongo.sh 

    05-command: 
     command:  chmod 700 /myapp/ebextensions/mongo.sh 

    06-command: 
     command:  bash /myapp/ebextensions/mongo.sh 

Затем создайте файл mongo.sh и положить в него что-то вроде:

#!/bin/bash 

if [ ! -f /mongostatus.txt ]; 
then 
    pecl install mongo 
    echo "mongo extension installed" > /mongostatus.txt 
    apachectl restart 
fi 

Это установит расширение mongo php и перезапустит apache, поэтому установка повлияет.

1

Я просто осуществить то же самое, благодаря ответу выше, и понял, это можно сделать с меньшим количеством линий и меньше файлов для тех, кто заинтересован ...

# ~/project/.ebextensions/project.config 
# Logger messages can be viewed in /var/log/messages 

files: 
    "/tmp/test.sh": 
     content: | 
      # This file will be created and can then 
      # be executed by a command call below. 
      logger TEST FILE CALLED 

commands: 
    01-command: 
     command: logger CALLING TEST FILE; sh /tmp/test.sh; 
3

pecl не является допустимым менеджер пакетов на Amazon Linux и поэтому не может использоваться под ключом packages конфигурации .ebextensions.

Для установки пакета PECL достаточно добавить одну команду под ключ commands.Чтобы избежать этого Beanstalk пытается установить расширение в два раза на последующих внедрений добавить команду PHP консоли к test ключа, который проверяет, если расширение уже установлено:

commands: 
    install_mongo_driver: 
    command: pecl install mongo 
    test: "php -r \"exit(extension_loaded('mongo') ? 1 : 0);\"" 

Если test результат true, т.е. exit(0), то выполняется command - иначе нет. Обратите внимание, что код выхода 0 означает «Нет ошибок» в контексте оболочки.

См. Также описание на http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-commands.