Innovate faster and cut risk with PHP experts from Zend Services.
See How Zend Helps Leading Hosting Providers Keep Their Managed Sites on Secure PHP
Learn PHP from PHP experts with free, on-demand, and instructor led courses.
Submit support requests and browse self-service resources.
Deploying a PHP application on AWS may seem daunting at first. While there are a veritable sea of images to choose from, sometimes it can be hard to track down documentation on how to actually install, configure, and deploy your application.
In this blog, we walk through two ways to deploy PHP on AWS, the first via a ZendPHP image, and the second via a Zend Server image. We also discuss some of the basic concepts and ideas you need to have a handle on before you get started. Let's jump in!
Let’s start with a simple vocabulary of common terms that are used when discussing AWS:
To help you understand the different AWS security settings, these security terms will become handy:
The AWS Marketplace has a myriad of full blown application servers with different PHP versions and SAPIs available out of the box; including community PHP, Zend Server, and ZendPHP; on many different operating systems. This makes it quick and simple to spin up an image and drop your PHP application in.
Among the many different application servers available through AWS Marketplace are the images we provide for ZendPHP. We provide images for configurations with Nginx or Apache on Ubuntu, RHEL, Amazon Linux, Debian, and more. There are options to have the license built into the image as well as bring your own license (BYOL).
Deploying a ZendPHP-Based AMI follows the same process as any other AMI with the nuance of using zendphpctl to install and configure PHP.
There are two ways to launch ZendPHP on AWS. First is to use AWS Marketplace website (option A) and launch ZendPHP from there. Second is to use Marketplace inside AWS Console (option B). We will cover both ways here.
The ZendPHP AMIs from AWS Marketplace come with zendphpctl preinstalled and ready to use with our repository preconfigured. Once the instance is up and running, SSH into the instance and use zendphpctl to finish setup:
zendphpctl php install 8.2
zendphpctl ext install –php 8.2 curl dom mysqli sodium openssl imagick xml zip
zendphpctl fpm install 8.2
zendphp-switch to 8.2
The above will install the PHP version of your choice, extensions needed for WordPress, add php-fpm for it, and ensure the vhost uses the correct php-fpm pool.
Note: The ZendPHP AMIs have access to any ZendPHP versions (licenses required for those out of community support), and you simply install the one you need with zendphpctl, as shown above.
In order to get an example application going, simply follow steps 2-3 for Zend Server below, where we cover creating an RDS and launching WordPress.
There are two ways to launch Zend Server on AWS. First is to use AWS Marketplace website (option A) and launch Zend Server from there. Second is to use Marketplace inside AWS Console (option B). We will cover both ways here.
Once you have finished either option A or B, you need to make Zend Server ready for work. We have to bootstrap it using very simple wizard. To do this we open the Zend Server UI which is accessible using a web browser on port 10081 of the instance we just started.
We need to find out either the public DNS (what we use in this guide) or public IP of the instance. We will also need the instance ID to enter Zend Server UI. By default Zend Server UI is protected so you have to enter instance ID as login and password, but once you bootstrap Zend Server and set admin password you won’t have to use it again.
Follow these steps to find “Public DNS” and “Instance ID” of your instance:
Now that we have public DNS name of instance we can open our browser and enter the following address to access Zend Server UI: http://<Public DNS>:10081/
Once you open Zend Server UI you will first be asked to authenticate. Enter “Instance ID” you found earlier as both login and password.
You will then be presented a wizard that will guide you to setup Zend Server in a few very simple steps. Upon finishing wizard and successfully bootstrapping your Zend Server is fully ready to work.
Note: bootstrap process can be fully automated by providing user data to instance.
We have Zend Server, which means that we have fully working and configured web server with PHP. To go on and launch WordPress, we are still need to add a MySQL database server. We, of course, could install and configure it on the same instance with Zend Server, but it’s much simpler to use AWS RDS. RDS provides many database services including MySQL. So let’s setup an RDS instance and configure Security Group to allow access to it:
Now we have to wait till our new DB instance is launched and ready for use. While waiting we can configure our Security Group rules to allow communication between web server and MySQL DB server.
There are two options for configuration here: either allow communication only between web server and MySQL server (more suitable for production environments), or allow anyone to connect to MySQL DB server (more suitable for development environments). In this guide we will cover only second option.
To find MySQL server DNS see how to find endpoint (which is also MySQL DNS) in next step.
Once RDS has finished starting (it can take 10 minutes or even more), you have to find its endpoint. For this follow these steps:
Once we have MySQL endpoint we can deploy the WordPress application. For this do the following:
Once you click “Deploy” application deployment will be started. It should take up to a few minutes to finish (but most of time it finishes in tens of seconds). Once the application status on applications list page changes to “Deployed”, you can access WordPress on http://<Instance Public IP>/
In this blog we looked at two ways to deploy a PHP application on AWS. The first using ZendPHP, and the second using Zend Server. However, there are many other Zend PHP AWS images that we didn't walk through. With image options that include Nginx or Apache on Ubuntu, RHEL, Amazon Linux, Debian, and more, our goal is to make it as easy as possible for teams to deploy PHP applications in the cloud, on premises, or in hybrid environments.
Explore Our AWS ImagesReady to get started deploying your own PHP application on AWS? Explore the Zend AWS listings via the link below.Explore Zend AWS Images
Ready to get started deploying your own PHP application on AWS? Explore the Zend AWS listings via the link below.
Explore Zend AWS Images
Senior Solutions Architect, Perforce Software
Yeshua Hall is the Senior Solutions Architect at Perforce Software. Yeshua is passionate about helping customers overcome complex technical challenges to achieve their team and business goals.