Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to install a PHP extension witn Amazon AWS Elastic Beanstalk?

We are using aws elastic beanstalk for our PHP application on EC2 instance. Since we opted for load balancing, it keeps changing the instance time and again.

I am wondering if we install a PHP plugin, will it be affected by change of instance or it will be available in new instance as well?

Asking this question because we have observed everytime instance is changed by elastic beanstalk, our application is redeployed.

We need to install Geoip plugin. How to install it without affecting it on instance change ?

like image 343
user2053100 Avatar asked Aug 02 '16 21:08

user2053100


Video Answer


2 Answers

If you keep the env settings saved, you will always have the same EC2 settings when executing your app.

I prefer to do this kind of customizing using code (you can do this using the AWS Console too). So, create a file in your source root, with the following path: .ebextensions/php-modules.config with these contents (ps: I'm using this in production with no problem):

commands:
    01_redis_install:
        # run this command from /tmp directory
        cwd: /tmp
        # don't run the command if phpredis is already installed (file /etc/php.d/redis.ini exists)
        test: '[ ! -f /etc/php.d/redis.ini ] && echo "redis not installed"'
        # executed only if test command succeeds
        command: |
            wget https://github.com/nicolasff/phpredis/zipball/master -O phpredis.zip \
            && unzip -o phpredis.zip \
            && cd phpredis-phpredis-* \
            && phpize \
            && ./configure \
            && make \
            && make install \
            && echo extension=redis.so > /etc/php.d/redis.ini

This is for install php-redis, but you can use the same approach to geoip as well.

For more information: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_PHP.container.html#php-configuration-namespace

Source of the example: http://qpleple.com/install-phpredis-on-amazon-beanstalk/

like image 66
Tulio Faria Avatar answered Sep 19 '22 01:09

Tulio Faria


YAML

packages:
    yum:
        php70-pecl-redis.x86_64: []
like image 43
user857276 Avatar answered Sep 18 '22 01:09

user857276