How To Install LEMP Stack on Rocky Linux 8
In this tutorial, we will show you how to install LEMP Stack on Rocky Linux 8. For those of you who didn’t know, The term LEMP is an acronym for Linux, Nginx, MariaDB or MySQL, and PHP. This is a stack that is normally used together to build powerful websites and 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. 8.
Prerequisites
- A server running one of the following operating systems: Rocky Linux 8.
- 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).
- A
non-root sudo user
or access to theroot user
. We recommend acting as anon-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 8
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 update sudo dnf install dnf-utils sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Step 2. Installing Nginx on Rocky Linux 8.
By default, Nginx is available on Rocky Linux 8 base repository. Now run the following command below to install the Nginx webserver to your system:
sudo dnf install nginx
After successfully installation, enable Nginx (to start automatically upon system boot), start the webserver, and verify the status using the commands below:
sudo systemctl enable nginx sudo systemctl start nginx sudo systemctl status nginx
Configure Firewall Rules.
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
Test Nginx Web Server.
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 the following screen:
Step 3. Installing MariaDB on Rocky Linux 8.
By default, MariaDB is not available on Rocky Linux 8 base repository. Now run the following command below to add the MariaDB repository to your system:
sudo nano /etc/yum.repos.d/mariadb.repo
Add the following line:
# MariaDB 10.6 RedHat repository list - created UTC # https://mariadb.org/download/ [mariadb] name = MariaDB baseurl = https://mirror.rackspace.com/mariadb/yum/10.6/rhel8-amd64 module_hotfixes=1 gpgkey=https://mirror.rackspace.com/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1
Then, run the following command to install the MariaDB package on your Rocky Linux:
sudo dnf update sudo dnf install mariadb-server mariadb
Once the installation is complete, now enable MariaDB (to start automatically upon system boot), start, and verify the status using the commands below:
sudo systemctl start mariadb sudo systemctl enable mariadb sudo systemctl status mariadb
Secure MariaDB on Rocky Linux.
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:
mysql_secure_installation
Configure it like this:
- Set root password? [Y/n] y - Remove anonymous users? [Y/n] y - Disallow root login remotely? [Y/n] y - Remove test database and access to it? [Y/n] y - Reload privilege tables now? [Y/n] y
Testing the MariaDB installation.
Now that MariaDB is installed, you can test the connection to your MariaDB server:
mysql -u root -p
mysql
is the name of the command you are using to connect to the MariaDB server.-u
root tells MariaDB that you want to log in as the root user.-p
ensures that you are prompted to enter your password before the MariaDB shell will connect.
Step 4. Installing PHP on Rocky Linux 8.
By default, PHP is available on Rocky Linux 8 base repository. Now run the following command below to reset the default PHP module and enable PHP 8 module using the following command:
sudo dnf module reset php sudo dnf module enable php:remi-8.1
Note: In case you want to enable some other module version of PHP, then just change the version number in the above-given command.
Finally, install PHP packages using the command below:
sudo dnf install php php-mysqlnd php-fpm php-opcache php-gd php-xml php-mbstring
Verify the installation:
php -v
After the installation is complete, start the PHP-fpm service and enable it to run automatically at every boot using the following command:
sudo systemctl enable php-fpm sudo systemctl start php-fpm sudo systemctl status php-fpm
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 restart php-fpm
Testing PHP on Rocky Linux 8:
sudo nano /usr/share/nginx/html/info.php
Add the following file:
<?php phpinfo(); ?>
Save and close the file, then open your browser and access the domain name or server IP followed by info.php
:
http://your-server-ip-address/info.php
Congratulations! You have successfully installed LEMP. Thanks for using this tutorial for installing the LEMP (Nginx, MariaDB, and PHP) Stack on your Rocky Linux 8 system. For additional help or useful information, we recommend you check the official LEMP website.