How to Install LEMP Stack on CentOS 6/7

This tutorial will show you how to install Nginx, generate a free Let’s Encrypt SSL certificate, install and secure MySQL and install PHP 7 on CentOS 6/7.

What is a LEMP Stack

LEMP is a set of free software name acronyms that are commonly used together to run dynamic websites or servers.

  • L – Linux operating system
  • E – Nginx a HTTP and reverse proxy server
  • M – MySQL or MariaDB relational database management system
  • P – PHP programming language.

The detailed tutorials that are part of this series are listed at the end of this page.

If you want to read more detailed documentation you can install LEMP Stack on your CentOS 6/7 server by following our Quickstart section.

Requirements

Before, you must have an account with sudo privileges and make sure your CentOS 6/7 server can access the Internet.

Steps to install LEMP stack on CentOS 6/7

Step 1. Installing Nginx

Nginx is not available in the default CentOS 6/7 repository so we will use the EPEL repositories. To add the EPEL repository to your system, use the following command:

sudo yum install epel-release

Now that the EPEL repository is enabled, install the Nginx package with:

sudo yum install nginx

Once it is installed, start and enable the Nginx service by typing:

#centos 6
sudo service nginx start
sudo service nginx enable
#centos 7
sudo systemctl start nginx
sudo systemctl enable nginx

Step 2. Installing MariaDB

The next step is to install the MariaDB packages. To do so type:

sudo yum install mariadb-server

Once MariaDB server is installed, start and enable the service with:

#centos 6
sudo service mariadb.service start
sudo chkconfig mariadb on
#centos 7
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
  • At the time of writing, MariaDB 5.5 is available in the official CentOS 7 repository.
  • If you want to install MySQL instead of MariaDB, check our tutorial for installation instructions.

Step 3. Installing PHP

CentOS 6/7 ships with PHP version 5.4 which is EOL-ed for quite some time so we’ll use the Remi repository to install PHP 7.2.

Run the following command to add the Remi repository to your system:

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Once it is added, install the yum-utils package and enable the remi-php72 repository:

sudo yum install yum-utils
sudo yum-config-manager --enable remi-php72

Now that we have Remi repository enabled, we can install PHP FPM and several most common PHP modules with:

sudo yum install php-fpm php-opcache php-cli php-gd php-curl php-mysql

By default PHP FPM will run as user apache on port 9000. We’ll change the user to nginx and switch from TCP socket to Unix socket. To do so edit the lines highlighted in yellow:

sudo nano /etc/php-fpm.d/www.conf
...
user = nginx
...
group = nginx
...
listen = /run/php-fpm/www.sock
...
listen.owner = nginx
listen.group = nginx

Make sure the /var/lib/php directory has the correct permissions:

chown -R root:nginx /var/lib/php

Save the file, enable and start the PHP FPM service with:

#centos 6
sudo chkconfig php-fpm on
sudo service php-fpm start
#centos 7
sudo systemctl enable php-fpm
sudo systemctl start php-fpm

Step 4. Configuring Nginx to Process PHP Pages

Now that we have all of the LEMP components installed, we can edit the Nginx server block configuration file and add the following lines so Nginx can process PHP files:

server {

    # . . . other code

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Do not forget to restart the Nginx service for the changes to take effect:


#centos 6
sudo service nginx start
#centos 7
sudo systemctl restart nginx

More Information

For more detailed instructions about each step, please consult the following tutorials.

Tutorials

Leave a Reply

Your email address will not be published. Required fields are marked *