Setup PHP 7.0 with Apache2.4 in Amazon Linux 1

In this article, I will show you how you can install PHP 7.0 with Apache 2.4 in Amazon Linux 1, which will help you to start your blog site or custom PHP project. But before that, let’s discuss what is PHP and Apache.

What is PHP

According to Wikipedia, PHP is a general-purpose scripting language especially suited to web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1994; the PHP reference implementation is now produced by The PHP Group.

So, PHP is a widely used language for writing web-based applications. A lot of widely used CMS is built on PHP which includes, WordPress, Joomla, Drupal, Magento, and many more. There are many Frameworks of PHP available like Laravel, Symphony, CodeIgniter, etc., which are used to build scalable web applications. So if you planning to become a web developer then chances are you need to know PHP a lot. And also as a DevOps, you need to ensure that your server environment is ready for the correct version of PHP according to your application.

Next comes on Apache, The Apache HTTP Server, colloquially called Apache, is a free and open-source cross-platform web server software, released under the terms of Apache License 2.0. Apache is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation.

So apache is a web server that really works well with PHP and it’s optimized for PHP. So if you are building an application with PHP then chances are that its web server will be Apache. In this example below, we will show how can we install PHP7.0 with Apache 2.4 in Amazon Linux 1. Our whole example here is based on an assumption is that we are using Amazon Linux 1 as the operating system. If you are something else like Ubuntu / CentOS / Redhat, then please check out our other articles.

How to Install PHP 7.0 with Apache 2.4

First you create an EC2 instance by following our other article here. After that please connect to the instance using Putty or Terminal.

After you have connected to the instance, please run the following commands.

sudo yum update -y
sudo yum install -y httpd24 
sudo yum install -y php70 php70-mysqlnd php70-mbstring php70-mcrypt php70-zip php70-intl php70-gd
sudo service httpd start
sudo chkconfig httpd on

Explanation of the each line is given below

1. sudo yum update -y

YUM (Yellowdog Updater Modified) is an open-source command-line as well as graphical based package management tool for RPM (RedHat Package Manager) based Linux systems. It allows users and system administrators to easily install, update, remove, or search software packages on a system. So sudo yum update -y basically updates all packages to its the latest version from a repository list which is managed by Amazon for Amazon Linux 1. This is always a good practice to run “yum update” first before you install any software.

2. sudo yum install httpd24

This basically installs Apache 2.4 on your Linux machine. So there any many variants of Apache available at the moment when I am writing, but we want to be specific on a version of 2.4, so that’s why we run this command.

3. sudo yum install -y php70 …

This single line of code actually installs PHP version 7.0 along with some useful PHP extensions like MySQL, mbstring, and other common PHP extensions. Here we also applied the same strategy to fix a version of 7.0 in the installation time. If your application requires a different version then go check out our other articles where we have shown how you can install a different PHP version.

4. sudo service httpd start

This single line of command starts the Apache server on your machine, and now if you browse your IP address then you might see the default Apache page, which means that you have successfully installed Apache and it’s running properly. If you don’t see the Apache default page but rather you an error page of ‘Connection timeout’ then something is wrong and please go through the process again. Also, check out the ‘security group’ settings and see if PORT 80 and PORT 443 are open for all or not. You need to open port 80/443 publicly to have viewed view the pages that Apache delivers.


5. sudo chkconfig httpd on

This command actually sets Apache to start automatically when the server reboots. This is really important to remember otherwise you need to manually start your Apache server when the system reboots.

Some bonus commands

Some additional commands which you can run to make the setup more secure and reusable.

sudo groupadd www
sudo usermod -a -G www ec2-user
sudo usermod -a -G www apache
sudo chown -R ec2-user /var/www
sudo chgrp -R www /var/www
sudo chmod 2775 /var/www
find /var/www -type d -exec sudo chmod 2775 {} +
find /var/www -type f -exec sudo chmod 0664 {} +

What is does is, it creates a group “WWW” and then assigns both user “ec2-user” and “apache” under this group. This helps with accessing files because now they are on same group and you can easily give permissions to files/folders to be accessible from both users.

Conclusion

In summary, I can say that PHP is one of the most popular languages when it comes to web development. It’s super-fast, secure, and easy to use. With a combination of PHP and Apache, it’s unbeatable in terms of performance. Many many popular CMS is written on PHP for this reason and if you want to set up a blog or e-commerce site then chances are that it’s already developed in PHP. So learning how to install PHP with Apache in AWS can be really handy and I would definitely suggest practicing this by yourself so that you can become an expert on it.

Atiqur Rahman

I am MD. Atiqur Rahman graduated from BUET and is an AWS-certified solutions architect. I have successfully achieved 6 certifications from AWS including Cloud Practitioner, Solutions Architect, SysOps Administrator, and Developer Associate. I have more than 8 years of working experience as a DevOps engineer designing complex SAAS applications.

Leave a Reply