A LAMP stack is made from four open-source software components: Linux, Apache, MariaDB/MySQL, and PHP. LAMP uses Apache as a web server, Linux as an operating system, MariaDB as a database backend, and PHP as a processing language. Developers and web hosting owners use LAMP to host a website online. It is customizable, so users can replace any component with another open-source solution per their needs.

This post will show you how to install a LAMP stack on Fedora 34.

Step 1 – Install Apache Web Server

Apache web server is the first and most important component of the LAMP server. You can install it using the following commands.

dnf update -y
dnf install httpd -y

Once installed, start and enable the Apache service using the following command.

systemctl start httpd 
systemctl enable httpd

Next, verify the Apache status using the following command.

systemctl status httpd

You will get the following output.

● httpd.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
     Active: active (running) since Thu 2023-04-13 23:01:38 EDT; 1s ago
       Docs: man:httpd.service(8)
   Main PID: 1995 (httpd)
     Status: "Started, listening on: port 80"
      Tasks: 177 (limit: 4666)
     Memory: 14.1M
        CPU: 100ms
     CGroup: /system.slice/httpd.service
             ├─1995 /usr/sbin/httpd -DFOREGROUND
             ├─1996 /usr/sbin/httpd -DFOREGROUND
             ├─1997 /usr/sbin/httpd -DFOREGROUND
             ├─1998 /usr/sbin/httpd -DFOREGROUND
             └─1999 /usr/sbin/httpd -DFOREGROUND

Step 2 – Install MariaDB Database Server

MariaDB is a database server used as a database backend for any web application. You can install the MariaDB server with the following command.

dnf install mariadb-server -y

Next, start and enable the MariaDB server with the following command.

systemctl start mariadb 
systemctl enable mariadb

By default, the MariaDB server listens on port 3306. You can check it with the following command.

ss -antpl | grep 3306

You will get the following output.

LISTEN 0      80                 *:3306            *:*    users:(("mariadbd",pid=4542,fd=20)) 

Next, run the following script to secure the MariaDB installation.

mysql_secure_installation

You will be asked to provide your current password:

Enter current password for root (enter for none): 

Just press the Enter key. You will be asked to change the root password.

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password: 
Re-enter new password: 

Set your new password and press the Enter key. You will be asked to remove the anonymous users:

Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y

Type Y and press the Enter key. You will be asked to disallow root login remotely.

 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y

Type Y and press the Enter key. You will be asked to remove the test database.

 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y

Type Y and press the Enter key. You will be asked to reload the privilege tables.

 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y

Type Y and press the Enter key to finish the process.

 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Step 3 – Install PHP

By default, PHP 7.4 is included in the Fedora 34 default repo. You can install PHP with other extensions using the following command.

dnf install php php-common php-mysqlnd php-curl php-xml php-json php-gd php-mbstring -y

After the successful installation, verify the PHP version with the following command.

php -v

You should see the PHP version in the following output.

PHP 7.4.28 (cli) (built: Feb 15 2022 13:23:10) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.28, Copyright (c), by Zend Technologies

Step 4 – Verify PHP Installation

To verify the PHP installation, create an info.php file.

nano /var/www/html/info.php

Add the following code.

<?php phpinfo(); ?>

Save and close the file, then create an Apache virtual host.

nano /etc/httpd/conf.d/phpinfo.conf

Add the following configuration:

<VirtualHost *:80>
    ServerName phpinfo.example.com
    DocumentRoot /var/www/html/
    DirectoryIndex info.php
    ErrorLog /var/log/httpd/example.com_error.log
    CustomLog /var/log/httpd/example.com_requests.log combined
</VirtualHost>

Save and close the file, then restart the Apache service to apply the changes.

systemctl restart httpd

Now, open your web browser and verify the PHP installation using the URL http://phpinfo.example.com. You should see your PHP information on the following screen.

Verify PHP LAMP

Conclusion

In this post, we explained how to install Apache, MariaDB, and PHP on Fedora 34. We also showed you how to verify the PHP version using the Apache server. You can now try to deploy the LAMP server on dedicated server hosting from Atlantic.Net!