How to Install PHP 8.0 with FPM Module and Nginx on CentOS 8

Screenshot From 2020 12 11 02 49 54

Sure… we have now PHP 8.0.0 on the stack! Yes, with year 2020 at the end of our eyes,, PHP Group has recently been rolled out major update for its PHP language. PHP 8.0 brings many new features, improvements and optimizations than the previous version – PHP 7.4. It’s claimed bring many improvement in the error handling, type stream and consistency.

On our customer server, we have tested many website using PHP 7.3 / PHP 7.4 and it’s trully faster and stable compared to the previous PHP version.

Well, on this today guide i will teach you on how to install and configuring Nginx web server with PHP 8.0 on CentOS 8 machine. I am using $5 Digital Ocean droplet on this testing purpose. So, let’s follow this simple tutorial.

Make sure you have full root access on the server. And if you are Windows user, you can use PuTTy command line terminal to login into your virtual private server. Since i am Linux user, so I can using both PuTTy and default Gnome Linux terminal. 🙂


* Cloud Server with CentOS 8 Machine
* Server IPv4 Address
* Full Root Access
* PuTTy or Gnome Terminal

1.) Login to your server via Terminal.

$ ssh [email protected]

2.) Run system update

Since this is fresh server, so we need to run system update to make sure that the OS having the latest software packages.

$ dnf update

Install the following required packages, since we are using CentOS 8 minimal installation.

$ dnf install nano wget screen telnet curl -y

3.) Install Nginx web server

We can using default CentOS 8 repository in order install Nginx web server on our cloud machine. Simply run the following command.

$ dnf install nginx -y

Check Nginx version

$ nginx -v
$ nginx version: nginx/1.14.1

However, if you want the latest stable or mainline version of Nginx web server, simply add Nginx repository from Official Nginx website.

$ nano /etc/yum.repos.d/nginx.repo

# Nginx stable release

name=nginx stable repo

# Nginx mainline release

name=nginx mainline repo

After we have Nginx installed on the system, don’t forget to enable it and run start command.

$ systemctl enable nginx.service
$ systemctl start nginx.service

4.) Install PHP 8.0 with FPM module (FastCGI Process Manager)

Now let’s install PHP 8.0 on your machine. Since we are using Nginx web server, so we must have PHP-FPM module (FastCGI Process Manager) installed on the machine.

First of all, we should add Epel release 8 and remi repository for CentOS 8 to the virtual machine. Simply run the following command.

$ dnf install epel-release
$ wget
$ rpm -Uvh remi-release-8.rpm

Run system update again:

$ dnf update

Let’s install PHP 8.0 with FastCGI Process Manager.

$ dnf module reset php
$ dnf module install php:remi-8.0
$ dnf install php php-fpm php-cli php-common php-gd php-imap php-mbstring php-mcrypt php-mysqlnd php-pdo php-soap php-tidy php-xml php-xmlrpc php-opcache php-curl php-pear php-xsl php-gmp

5.) Install PHP 8.0 Extensions

For example Zend OPcache if you want to have OPcache installed on your machine. Sure… in term of caching module, i will share on the next following tutorial on how to tune Zend OPcache in order to make your site more faster.

$ dnf install php-opcache
Last metadata expiration check: 0:16:23 ago on Thu 10 Dec 2020 07:43:48 PM UTC.
Dependencies resolved.
Package Architecture Version Repository Size
php-opcache x86_64 8.0.0-1.el8.remi remi-modular 750 k

Transaction Summary
Install 1 Package

Total download size: 750 k
Installed size: 2.6 M
Is this ok [y/N]: y

6.) Configure PHP-FPM 8.0 Pools to Run with Nginx

In order to make Nginx web server can connect properly with PHP 8.0, we should slighly modify PHP-FPM Pools (www.con). Also, you can edit php.ini file if you want make some tweaks to the PHP settings.

$ nano /etc/php.ini

For example, you can change memory_limit variable from 128M to 256M or date.timezone variables.

; Maximum amount of mem
memory_limit = 256M

Now, let’s open PHP-FPM Pools configuration and please take a look at line of “listen = /run/php-fpm/www.sock”. That’s should be included on Nginx serverblock if you want to make your site running on Nginx with PHP8-FPM. :

$ nano /etc/php-fpm.d/www.conf
; Note: This value is mandatory.
listen = /run/php-fpm/www.sock

; Set listen(2) backlog.
; Default Value: 511
;listen.backlog = 511

; Set permissions for unix socket, if one is used. In Linux, read/write

7.) Restart and Enable PHP8-FPM Service

$ systemctl enable php-fpm.service
Created symlink /etc/systemd/system/
$ systemctl restart php-fpm.service

Check your PHP 8.0 version

$ php -v
PHP 8.0.0 (cli) (built: Nov 24 2020 17:04:03) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
[root@centos-s-1vcpu-1gb-nyc3-01 ~]#

Now, we have Nginx web server with PHP8-FPM installed and running on CentOS 8 machine. It’s very easy to learn it, you should having relax time to learn on it and then configuring on your cloud machine itself.