How to install Apache, MariaDB, PHP (LAMP) on Rocky Linux 9

LAMP stands for Linux, Apache, MySQL/MariaDB and PHP that work together to serve web content also called LAMP stack. Rocky Linux 9 is released and available for public consumption. In this article you will learn how to install Apache, MariaDB and PHP (LAMP) on Rocky Linux 9.

Apache installation

Before installation, update the system.

sudo dnf update

After update, install Apache (httpd).

sudo dnf install httpd nano

Start and enable httpd.

sudo systemctl enable httpd
sudo systemctl start httpd

Check it’s status.

systemctl status httpd

To check if a module is loaded, rewrite for example.

httpd -M | grep rewrite

Or check all the loaded modules.

httpd -M

Modules are loaded from /etc/httpd/conf.modules.d directory.

httpd-status-rocky-linux-9

By default firewall is enabled on Rocky Linux, we will add firewalld rules to allow port 80, 443 etc.

sudo firewall-cmd --zone=public --permanent --add-port 80/tcp
sudo firewall-cmd --zone=public --permanent --add-port 443/tcp

sudo firewall-cmd --reload

Check more info about firewall in the troubleshoot section.

MariaDB installation

Rocky Linux 9 comes with MariaDB 10.5, we will install that for now.

sudo dnf install mariadb-server

Enable/start MariaDB.

sudo systemctl enable mariadb
sudo systemctl start mariadb

Check the status with.

systemctl status mariadb

Secure MariaDB server

MariaDB has a script which runs some pre configured commands to secure the database server.

sudo mysql_secure_installation
secure-mariadb-server-rocky-linux-9

Check the database server details.

mysqladmin -u root -p version

Install Redis

This is optional at this stage, but if you are hosting a web app like Nextcloud etc it is needed.

sudo dnf install redis

Enable at boot time and start.

sudo systemctl enable redis
sudo systemctl start redis

Check it’s status.

systemctl status redis

Redis will be listening on port 6379 on localhost.

Install PHP

Before we install PHP, there are some packages (if you need them) available in EPEL repository which we will enable first.

sudo dnf install epel-release

sudo dnf update

Install some base packages for PHP modules.

sudo dnf install ImageMagick zip unzip

Once done, you can now install PHP.

sudo dnf install php php-gmp php-bcmath php-gd php-json php-mysqlnd php-curl php-intl php-zip php-apcu php-pear php-devel php-sodium

To install imagick, redis, memcache PHP packages from epel repository.

sudo dnf install php-pecl-redis php-pecl-imagick php-pecl-memcache php-pecl-memcached

To check what PHP modules are loaded.

php -m

Next, create a index.php file in /var/www/html.

sudo nano /var/www/html/index.php

Add the following in it.

<?php
phpinfo();

Change owner and group permissions of html directory.

sudo chown -R apache:apache /var/www/html

And finally test and restart Apache.

httpd -t

sudo systemctl restart httpd

To restart php-fpm if you have made any changes to the PHP configurations.

sudo systemctl restart php-fpm

Open a browser and enter the server IP, you will see the following page.

php-info-page-rocky-linux-9

Troubleshooting

How to remove the default page?

Web root is /var/www/html, adding index.php or index.html will overwrite the default page content.
If you still want to remove the default page, just comment out all lines in /etc/httpd/conf.d/welcome.conf.

How to remove a firewall rule?

Let’s say you want to remove port 80 rule. Remember to reload the firewall.
sudo firewall-cmd --zone=public --permanent --remove-port 80/tcp
sudo firewall-cmd --reload

How to check the firewall rules?

You can do so with sudo firewall-cmd --list-all

How to check SELinux and modify it?

sestatus will tell you the status of SELinux.
To change it’s status, modify it in sudo nano /etc/sysconfig/selinux.

Why I am getting 500 internal server error?

This maybe caused by SELinux, allow it to handle.
chcon -t httpd_sys_rw_content_t -R /var/www/html/

Leave a Reply

Your email address will not be published.