In this tutorial, we will show you how to install LEMP Stack on Rocky Linux 9. For those of you who didn’t know, LEMP is an open-source web application stack used to develop web applications. Nginx works as the web server application, MariaDB as the database server, and PHP as the dynamic scripting language that supports multiple frameworks for web applications.
This article assumes you have at least basic knowledge of Linux, know how to use the shell, and most importantly, you host your site on your own VPS. The installation is quite simple and assumes you are running in the root account, if not you may need to add ‘
sudo‘ to the commands to get root privileges. I will show you the step-by-step installation of the LEMP Stack on Rocky Linux. 9.
- A server running one of the following operating systems: Rocky Linux 9.
- It’s recommended that you use a fresh OS install to prevent any potential issues.
- SSH access to the server (or just open Terminal if you’re on a desktop).
non-root sudo useror access to the
root user. We recommend acting as a
non-root sudo user, however, as you can harm your system if you’re not careful when acting as the root.
Install LEMP Stack on Rocky Linux 9
Step 1. The first step is to update your system to the latest version of the package list. To do so, run the following commands:
sudo dnf check-update sudo dnf install dnf-utils
Step 2. Installing Nginx Web Server on Rocky Linux 9.
By default, Nginx is not available on Rocky Linux 9 base repository. Now run the following command below to add Nginx stable repository to your system:
sudo tee /etc/yum.repos.d/nginx-stable.repo<<EOF [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/9/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true EOF
Now, run the following command to install the latest stable version of Nginx to your server:
sudo dnf update sudo dnf install nginx
Once the installation is done, start the Nginx service and enable it to automatically start on reboot all in one go with:
sudo systemctl enable --now nginx
To verify that the latest version of Nginx has been installed, run:
By default, Nginx listens on ports 80 and 443. If any firewall is installed and configured on your server, then you will need to allow both ports via firewalld. You can allow them with the following command:
sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload
You can verify by listing the current firewall settings:
sudo firewall-cmd --permanent --list-all
Now, open your web browser and access the Nginx default page using the URL
http://your-server-ip-address. You should see the Nginx default page on Rocky Linux. :
You can also test that your web page is working from the command line with:
curl -I http://your-ip-address
For additional resources on installing Nginx, read the post below:
Step 3. Installing MariaDB.
By default, MariaDB is available on the Rocky Linux 9 base repository. Simply install the MariaDB package by using the
sudo dnf install mariadb-server mariadb
After the installation is completed, start the service of the Database server and then enable the same, so that it could start itself automatically with the system reboot:
sudo systemctl restart mariadb sudo systemctl status mariadb sudo systemctl enable mariadb
By default, MariaDB is not hardened. You can secure MariaDB using the
mysql_secure_installation script. you should read and below each step carefully which will set a root password, remove anonymous users, disallow remote root login, and remove the test database and access to secure MariaDB:
First, log into the MariaDB shell with the following command:
For additional resources on installing MariaDB Database, read the post below:
Step 4. Installing PHP.
PHP is a popular scripting language that powers the dynamic content of millions of websites and apps. Now we run the commands below to install PHP:
sudo dnf epel-release sudo dnf module enable php:remi-8.1
Once Remi PHP 8.1 module is enabled, you can now install PHP 8.1 and commonly used PHP extensions as follows:
sudo dnf install php php-cli php-fpm php-gd php-curl php-zip php-mbstring php-opcache php-intl php-mysqlnd
After the installation is complete, we need to make one more adjustment to the PHP-FPM service. Let’s now check how to configure Nginx to execute PHP using PHP-FPM:
sudo nano /etc/php-fpm.d/www.conf
Find the lines below for the user and group and change them to Nginx:
user = nginx group = nginx
Save and close the file, then reload the PHP-FPM service:
sudo systemctl enable php-fpm sudo systemctl start php-fpm
Check and verify the installed version:
[firstname.lastname@example.org ~]# php -v PHP 8.1.8 (cli) (built: Nov 10 2022 18:36:33) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.16, Copyright (c) Zend Technologies with Zend OPcache v8.0.15 Copyright (c), by Zend Technologies
Then create a PHP test page to confirm it’s working with the Nginx server:
sudo nano /usr/share/nginx/html/info.php
Add the following file:
<?php phpinfo (); ?>
Save and close the file, then restart your web server so that Nginx knows that it will be serving PHP requests as well:
sudo systemctl restart nginx php-fpm
Once is done, now view the test page on your browser by entering your server IP or domain name followed by
For additional resources on installing PHP, read the post below:
Congratulations! You have successfully installed LEMP. Thanks for using this tutorial for installing the LEMP Stack on your Rocky Linux 9 system. For additional help or useful information, we recommend you check the official LEMP website.