Introduction

Apache is a most widely used web server in Linux platforms and is one of the best stacks to host PHP applications. With the release of Apache httpd 2.4, there is a Apache proxy module (mod_proxy_fcgi.) introduced and integrated by default with Apache. Also From release 5.3.3 onward, PHP now includes the fastCGI process manager (php-fpm) in the stock source code.

So in short we can install and enable those php and Apache related packages in a Linux server and setup to run Apache with PHP-FPM. In this setup Apache will send all the PHP files for processing to PHP-FPM and PHP-FPM will return the rendered output to the browser. using this stack, a website can load faster and handle more concurrent connections while using fewer resources. Using PHP-FPM we can run each PHP application on a separate process and can assign resource limitations.

In this blog article we configure Apache with php-fpm on Centos7. After that we can run php code using only stock Apache and php binaries. No need to configure anything like suphp, mod_php or suexec. You can also refer this article if you have the newer Centos 8. So lets get started.

Section 1. Prerequisites

In this section we are preparing our CentOS 7 server for the setting up Apache php-fpm. For that  the first thing is we need a domain name in which your DNS configured to point to your CentOS 7 server IP.  Creating DNS A record depends on our domain DNS. So do it as per your environment.

After that Disable SELinux in the server by issuing below command.

Copy to Clipboard

Next is Allow ports 80,443 on firewalld or Iptables. We can use below commands for that.

Copy to Clipboard

Next is Updating  system packages by using below command.

Copy to Clipboard

Next is Install epel repository by using below command. This is necessary for getting latest packages.

Copy to Clipboard

Now Install the “Development Tools” group and the “yum-utils” packages using below commands.

Copy to Clipboard

Section 2. Install Apache

With the prerequisites completed, we are now proceeding with the installation of Apache web service in this section. For that issue below command.

Copy to Clipboard

Section 3. Install PHP

In this section we are installing the php 7.4 packages along with php-fpm.

Copy to Clipboard

Section 4. Configure Apache

In this section we are preparing our Apache web service to work with php-fpm. For that first create  two directories using below command.

Copy to Clipboard

After that create a file Named training.conf using below command.

Copy to Clipboard

Add below content in above training.conf file. In that we are using our website name as training.supporthost.in. Replace that name with your own domain name. Save the file content.

Copy to Clipboard

After that Create Below Directories  and files.

Copy to Clipboard

Now allow Apache  to read the conf files from the “/etc/httpd/sites-enabled” folder.  For that we are going to add following line at the end of Apache configuration file “/etc/httpd/conf/httpd.conf”.

Copy to Clipboard

Section 5. Issue SSL certificate.

In this section we are issuing SSL certificate for our website using let’s Encrypt certbot client. For that first install the certbot client package using below command.

Copy to Clipboard

Now issue the SSL for our website using below command. The command we followed are certbot  with standalone option.

Copy to Clipboard

Section 6. Configure php-fpm

In this section we are configuring our php-fpm service to work with our website.

For that  go the folder named /etc/php-fpm.d and create a file named training.conf .

Copy to Clipboard

Now Add below content in training.conf file.

Copy to Clipboard

Now Execute Below commands and create necessary files, website user and folders.

Copy to Clipboard

Finally restart the Apache and php-fpm service using below two commands.

Copy to Clipboard

Conclusion.

This concludes the installation and configuration Apache with php-fpm. Now create a phpinfo page under our website document root and visit  the phpinfo page url in the browser , we can see FPM/FastCGI in the ServerAPI field. Take a look at the below screenshot. This means that right now our Apache is configured to use with php-fpm. I hope this article is informative. Leave your thoughts at the comment box.

Share This Story, Choose Your Platform!