Introduction
The LEMP stack, consisting of Linux, Nginx, MariaDB, and PHP-FPM, is a powerful combination for hosting dynamic websites and applications. CentOS/RHEL, known for its stability and security, is an ideal choice for setting up such an environment. This guide will provide detailed instructions on installing and configuring Nginx, MariaDB, and PHP-FPM, with an emphasis on a specific PHP version to meet the requirements of various applications.
1. Preliminary System Update
- Update your system packages:
sudo dnf updatesudo dnf upgrade - Enable the EPEL repository:
sudo dnf install epel-release
2. Installing Nginx
- Install Nginx:
sudo dnf install nginx - Start and enable the Nginx service:
sudo systemctl start nginxsudo systemctl enable nginx - Verify the Nginx installation:
sudo systemctl status nginx
3. Installing MariaDB
- Install MariaDB:
sudo dnf install mariadb-server - Start and enable MariaDB:
sudo systemctl start mariadbsudo systemctl enable mariadb - Secure your MariaDB installation:
sudo mysql_secure_installation
4. Installing PHP and PHP-FPM
- Install a specific version of PHP and PHP-FPM (for example, PHP 7.4):
sudo dnf install php74 php74-php-fpm php74-php-mysqlnd - Start and enable PHP-FPM:
sudo systemctl start php74-php-fpmsudo systemctl enable php74-php-fpm
5. Configuring Nginx to Use PHP-FPM
- Edit the Nginx configuration file:
sudo nano /etc/nginx/conf.d/default.conf - Configure Nginx to process PHP with PHP-FPM:
location ~ \.php$ { fastcgi_pass unix:/var/run/php74-php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } - Restart Nginx:
sudo systemctl restart nginx
6. Testing PHP Processing
- Create a PHP test file:
sudo nano /usr/share/nginx/html/info.php - Insert PHP code and save:
<?php phpinfo(); ?> - Access http://your_server_ip/info.php to see the PHP info page.
7. Configuring the Firewall
- Allow HTTP and HTTPS traffic if firewalld is enabled:
sudo firewall-cmd --permanent --add-service=httpsudo firewall-cmd --permanent --add-service=httpssudo firewall-cmd --reload
8. Securing Your Server
- Keep your packages updated.
- Use robust passwords for all services.
- Consider SSL certificates for HTTPS.
Conclusion
You have now successfully set up a LEMP stack on CentOS/RHEL with Nginx, MariaDB, and a specific version of PHP-FPM. This environment is ideal for deploying a range of web applications, offering reliability and performance. Regular maintenance and security measures are essential to ensure the smooth functioning of your server.
How did it make you feel?

nice article!