PHP and Git on AWS Elastic Beanstalk

Beanstalk provides a good way of deploying an application in the AWS infrastructure because you have the full control of underlying resources and you only pay for those that you use. It also supports Git, making development of AWS Elastic Beanstalk applications faster.

Elastic Beanstalk, which launched in January 2011, is a Platform service that simplifies application deployment in AWS. Amazon has recently extended Beanstalk with PHP language support. By adding PHP in Beanstalk, Amazon has made clear their move into the platform service landscape. Amazon wants to evolve as an IaaS that offers flexible PaaS, a direction which will undoubtedly tighten the competition in the platform cloud service market.

When Amazon announced Beanstalk’s support for PHP I was curious to know what it would look like. So I decided to give it a try. I hadn’t used my AWS account for a while, so I had to do some account setup tasks, configuring command line tools, etc. In this article I will explain how to set up a PHP application in Beanstalk from scratch.

Sign Up for AWS

First sign up for an AWS account if you don’t have one already. It will ask you to enter Credit Card details to complete the sign-up process. You will get a verification call before activating your account.

Setup AWS Command line tools

AWS provides a set of command line tools for managing the infrastructure. These tools serve as the interface to all the AWS services . You need to set up AWS Developer tools if you want to use Git for deploying applications. Otherwise you can upload the zipped code and deploy from the console. First download Beanstalk CLI to your machine and unzip it to a location of your choice. Navigate to the elasticbeanstalk-cli folder where you will see elasticbeanstalk-cli and AWSDevTools . Elastic Beanstalk CLI is a set of ruby scripts which don’t need to be installed. But you do need to have Ruby (version > 1.8.7 ), JSON Gem, and Git installed on your machine. To install JSON:

Next you need to configure CLI tools with AWSAccessKeyId and AWSSecretKey which are located in your account dashboard.


Create an AWS credential file to store the account credentials:

Next you need to export the environment variable to the credential file:

Create our first PHP application

To set up our PHP application in Elastic Beanstalk, log in to the AWS console and select the Beanstalk tab where you can find the wizard for creating an application


You can either upload the zipped application folder or launch a demo application from here. To start with, select 32 bit Amazon Linux running PHP 5.3 from the drop down and click Launch Application. It will launch an application named “My First Elastic Beanstalk Application”.


You can click on the View Running Version link to see the demo application running. As I have mentioned previously, you can always update the application by uploading it from the console. It’s easier to use Git for application deployment as you can manage it from the command line. When you develop an application, you’ll be continuously modifying and testing it in a local sandbox; once it gets to a comfortable stage, you deploy it to the server. Using Git you can keep a revision of each of the changes and revert back to an earlier version if something goes wrong.

Using Git for deploying application

Before you can actually use Git for deploying applications from a local repository, you need to setup AWSDevTools in the Git repository.

1. Move to the local repository from command line.

2. If you have not initialized Git already, do it using following command:

3. Run repository setup script from inside the repository:

4. Run the following command to set up AWS credentials for this application:

5. This will prompt you to enter the AWS access key, secret Key, and details of the application you’ve just launched from the console:

Remember that the application name and environment should match the name and application environment you were given when creating it from the console. Once you enter these details correctly, the application is ready to deploy using Git. Make the required changes to the application, commit it, and push, done!

Now, if you look at the application URL from your browser, it shows the updated version of your application. Each version you deploy will be listed in the application dashboard, from there you can easily change it to the version of your choice.

The default application we just created will have a predefined configuration which includes:

  • t1.micro EC2 server instance
  • Load balancer
  • Auto scaling with minimum 1 and maximum 4 instances

You can edit these configurations by clicking on “Edit Configuration” link, which will display the following window.

Beanstalk does not have a bundled database support since it runs on EC2 instance which does not have any persistent storage. You will need to follow separate steps if you want to enable databases for the application.

If your application needs environmental settings would normally be set at the OS level, these can now be set from the “Container tab”. There you can set document root, memory limit, etc.


Beanstalk provides a reliable, scalable, cost effective and easy to use way of application deployment in AWS infrastructure. In-fact, it’s nothing but an abstraction of some existing services like EC2, Load balancer, Auto scaling, and SNS. The advantage of Beanstalk over other platform services is that you have the full control of underlying resources. Though platforms like Heroku and PHPFog provide a much simpler interface for managing applications, we will need to rely on AWS for many other services like, SES, DynamoDb, etc. On the other hand, Beanstalk doesn’t add additional charges so you’ll only be paying for the underlying services you use. What is more interesting is the support for Git –  the de facto standard for application deployment in PaaS. Git will make the development workflow faster and easier as you deploy your files to AWS Elastic Beanstalk. The move to support PHP applications and Git repositories is a clear indicator of AWS’ ambitions in the PaaS market.

Related Articles

AWS Elastic Beanstalk – Build PHP Apps Using Git-Based Deployment
Deploying AWS Elastic Beanstalk Applications in PHP Using Git
AWS DevTools

How you log in to Simple Talk has changed

We now use Redgate ID (RGID). If you already have an RGID, we’ll try to match it to your account. If not, we’ll create one for you and connect it.

This won’t sign you up to anything or add you to any mailing lists. You can see our full privacy policy here.


Simple Talk now uses Redgate ID

If you already have a Redgate ID (RGID), sign in using your existing RGID credentials. If not, you can create one on the next screen.

This won’t sign you up to anything or add you to any mailing lists. You can see our full privacy policy here.