簡體   English   中英

從Elastic Beanstalk安裝PHP模塊

[英]installing PHP module from Elastic Beanstalk

我正在嘗試配置我的AWS Elastic Beanstalk以使用mongo,我需要做的就是為PHP安裝mongo驅動程序並更新php.ini文件

要做到這一點,通常我會進入EC2並運行:

sudo pecl install mongo

但這需要使用自定義AMI,這不是最好的方法。

最好使用配置文件來安裝標准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

但我不太了解如何完成這項具體任務

感謝幫助,謝謝! :)

pecl不是Amazon Linux上的有效包管理器,因此不能在.ebextensions配置的packages鍵下使用。

要安裝PECL包,只需在commands鍵下添加一個commands 為避免Beanstalk嘗試在后續部署中安裝兩次擴展,請在test密鑰中添加一個PHP控制台命令,以檢查是否已安裝擴展:

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

如果test結果為true ,即exit(0) ,則執行command - 否則不執行。 請注意,退出代碼0表示shell上下文中的“無錯誤”。

另請參閱http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-commands中的說明。

我已經弄清楚了,並認為我會分享我發現的東西。 感謝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,以便安裝生效。

由於上面的答案,我剛剛完成了同樣的事情,並且發現它可以用更少的行和更少的文件為感興趣的人完成...

# ~/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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM