How to Install LAMP (Linux, Apache, MariaDB and PHP) on Fedora 23 Server and Workstation

If you ever wanted to host your own website or just want to try your PHP programming skills, you will most definitely have stumbled upon LAMP.

For those of you, who don’t know what LAMP is, this is a stack of web service software. LAMP uses the first letter of each package included in it – Linux, Apache, Mysql/MariaDB and PHP.

Install LAMP in Fedora 23
Install LAMP in Fedora 23

In this article, we will show you how to install LAMP (Linux, Apache, MySQL/MariaDB and PHP) in Fedora 23 Server and Workstation.

I will assume that you have already completed the installation of Fedora 23 Server and Workstation, which basically completes the “Linux” part. But if you haven’t completed the Fedora install yet, you can check our guides here:

  1. How to Install Fedora 23 Workstation
  2. Installation of Fedora 23 Server and Administration with Cockpit

Before we start the installation of the rest of the packages, we recommend to update your packages with the following command:

$ sudo dnf update
Update Fedora 23 Packages
Update Fedora 23 Packages

Now we can safely proceed to the installation of the rest of the packages. For easier understanding and follow up, the article will be separated in three parts, one for each package.

Step 1: Installing Apache Web Server

1. Apache web server is the most used web server on the internet. It’s powering millions of websites and is one of the most reliable solutions you can get for a web server. There are plenty of modules that can help you customize the functionality of Apache and also security modules such as mod_security to protect your web sites.

To install Apache in Fedora 23, you can simply run the following command:

$ sudo dnf install httpd
Install Apache Web Server in Fedora 23
Install Apache Web Server in Fedora 23

2. Once the install is complete, there are few more things to be done. First we will setup Apache to automatically start upon system boot and then we will start and verify the status of Apache.

For that purpose, run the following series of commands:

$ sudo systemctl enable httpd.service
$ sudo systemctl start httpd
$ sudo systemctl status httpd
Enable, Start and Verify Apache Server
Enable, Start and Verify Apache Server

3. To allow access to the web server over HTTP and HTTPS, you will need to allow access to it in the system firewall. For that purpose, add the following rules in the fedora firewall:

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo systemctl reload firewalld
Enable Access to Apache on Firewall in Fedora 23
Enable Access to Apache on Firewall in Fedora 23

4. Now it’s time to check if Apache is running. Find your system’s IP address with command such as:

$ ip a | grep inet
Find Fedora 23 Server IP Address
Find Fedora 23 Server IP Address

5. Now copy/paste that IP address in your browser. You should see the following page:

Check Apache Default Page
Check Apache Default Page

The default Apache directory is:


If you need to have files accessible over web, you should place the files in that directory.

Step 2: Installing MariaDB Server

6. MariaDB is a relational database server. It has been forked by the MySQL creator, due to concerns over Oracles acquisition of the MySQL project.

MariaDB is meant to remain free under the GPU general public license. It’s community developed and is slowly becoming the preferred database server by most of the recently released distributions.

To install MariaDB in Fedora 23, run the following command:

# dnf install mariadb-server
Install MariaDB in Fedora 23
Install MariaDB in Fedora 23

7. When the install finishes, configure MariaDB to automatically start after system boot and then start and verify the status of MariaDB with the following commands:

# systemctl enable mariadb
# systemctl start mariadb
# systemctl status mariadb
Enable and Start MariaDB
Enable and Start MariaDB
Check MariaDB Status
Check MariaDB Status

8. There are few settings that need to be adjusted in order to secure your MariaDB installation. To change this settings, we recommend running the following command:

# mysql_secure_installation

This action will start a series of questions that you will need to answer in order to improve the security of your MySQL server.

Here is what you will need to do.

  1. When asked for MySQL root password, leave empty. There is no password by default.
  2. After that you will be asked to enter the new “root” password for MariaDB. Make sure to select a strong one.
  3. After that, you will be prompted if you wish to remove the MariaDB anonymous user. This user is not needed, so your should be “y” for yes.
  4. Next, you will need to disallow remote access to the databases from root. The reason behind that is that you can later create separate users for each database that will be able to access the required databases.
  5. Continuing further, you will be asked whether or not you wish to remove the “test” database that was created upon installation of MariaDB. This database is not needed so you can safely remove it.

Finally reload the database privileges and you are done.

Enter MariaDB Root Password
Enter MariaDB Root Password
MySQL Secure Installation
MySQL Secure Installation

Step 3: Installing PHP

9. PHP is a programming language used on most of the websites over the internet. It’s used for creating dynamic websites. To give you an idea of what sites you can build with PHP, I will tell you that is built on PHP.

To install PHP in Fedora 23, you will need to run the following command:

# dnf install php php-common
Install PHP in Fedora 23
Install PHP in Fedora 23

10. Next install required PHP modules to run PHP/MySQL applications using following command.

# dnf install php-mysql php-pdo php-gd php-mbstring
Install PHP Modules
Install PHP Modules

11. Once the installation is complete, restart Apache so it can start using PHP:

# systemctl restart httpd

12. Now let’s test our settings. Create a file called info.php in the following directory: /var/www/html. You can use command such as:

# cd /var/www/html/
# nano info.php

Enter the following code:


Now save the file. Go back to your browser and enter the following:


You should now be able to see the PHP info page that you just created:

Check PHP Information
Check PHP Information


Your installation of the LAMP stack on Fedora 23 is now complete and you can start creating your awesome web projects. If you liked the article or simply have a question, please do not hesitate to submit your comment in the section below.

Hey TecMint readers,

Exciting news! Every month, our top blog commenters will have the chance to win fantastic rewards, like free Linux eBooks such as RHCE, RHCSA, LFCS, Learn Linux, and Awk, each worth $20!

Learn more about the contest and stand a chance to win by sharing your thoughts below!

Marin Todorov
I am a bachelor in computer science and a Linux Foundation Certified System Administrator. Currently working as a Senior Technical support in the hosting industry. In my free time I like testing new software and inline skating.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.


Leave a Reply
  1. The following php-mysql didn’t work out of that command.

    # dnf install php-mysql php-pdo php-gd php-mbstring
  2. Nicely explained. Any chance you will update this for the new version of Fedora? Also Is the process of install PHP on Debian same? I have been using a platform, Cloudways, where there is no need to install it manually. But I think it will be a good thing if I know how to do it manually.

    • @Ahmad,

      Yes, Fedora 25 is latest version of Fedora 23 with minor changes, so using these instructions you can easily install LAMP on Fedora 25 without any issues.

  3. Hi..

    Great Work Dude :)

    I install apache, mysql and php as your instruction and succeeded. Now I want to know which is the url for phpmyadmin.

    I started all the service, and run the file info.php and it show information about php but when I try to run http://my-server-ip/phpmyadmin it says not found.

    Help me with this BTW Article is great and worked successfully.. I am using fedora 24 workstation edition.

    Thank You;

    • @Francisco,

      What do you mean by automatic starter? could you describe it more clearly? or if I am not wrong, you want to disable auto starting of Apache or Mysql? if yes, here is the command to disable them.

      # systemctl disable httpd
      # systemctl disable mariadb
  4. Thank you so much for you play by play instructions. Most people do not do this as well as you do. They just assume readers know certain things and they continue leaving steps out….but you did not. So thank you and I hope you keep writing for us, some of us really need the help because we are new to linux but we hate windows so we are trying to break free and papers like this help us do that.

    • Thanks for your kind words David. If there are any specific tutorials you would like to see on Tecmint please let us know and we will do our best to cover them for you.

  5. Nice everything worked well accept the php info file it only gives me a grey screen? however the php install said it completed successfully. I’m really disapointed that fedora doesn’t incluid a gui for: package management, mariadb, Apache. As a part time user having to remember command line details is really unrealistic.

    • Hia Pat. Could you please check if anyting is written in the apache error log? Share the lines with us in here.

  6. Hi
    Im using fedora server 23 with XAMPP PHP 7.0.5 and I want to upgrade PHP 7.0.6.
    How do you advise me to do?
    php settings lose? risk sites not to go?

    • @Lulian,

      I think you should just update the XAMPP, it will automatically upgrade PHP to most recent version, check out XAMPP official docs for upgrading PHP..

  7. thanks for posting, this is a great tutorial and very well written! Not sure if it was just an issue for me, but I had to reload the firewalld service as it didn’t quite enforce the service rules dynamically without a reload … (sudo systemctl reload firewalld).

    • @Lewerk,

      Thanks for finding this article useful for you, yes you were correct, after enabling HTTP, we need to reload firewalld service to take new changes into effect. As per your suggestion, we’ve included the reload command in the article.

  8. Setup went fine, however when I go to access a PHP page I get an error
    Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0
    Fatal error: Unknown: Failed opening required ‘/var/www/html/edwinphp/demo/57_get.php’ (include_path=’.:/usr/share/pear:/usr/share/php’) in Unknown on line 0

    Not sure what causes this

    • @Adam,
      It seems some permission issue on edwinphp directory, just grant the correct permission to this directory and then try again..

  9. Hi Marin,

    I really hope you can help me.

    Your tutorial is brilliant.

    When I install everything like you say above but when I go to the http://localhost I don’t get the test page but if I create a test.html I can see that.

    The main thing is that PH doesn’t seem to work it either shows a blank page or open the page as code or tries to download it as a file.

    I have asked all over and search everywhere but stuck.

    • Hello John,

      Can you please tell me if you have installed LAMP on Fedora Server or Desktop? Please check if the following line is present in the Apache configuration file:

      AddHandler application/x-httpd-php .html .htm

  10. Hi Marin,
    I’ve been using ansible for a while but haven’t looked to get it working on fedora 22/23. Here’s how simple on centos/redhat ubuntu etc
    enjoy. re: Rackspace Heat template to setup a LAMP stack on a single Linux server
    LAMP manual installs
    Red Hat:
    yum install python-pip git python-devel python-virtualenv gcc -y
    virtualenv /root/lampenv
    . /root/lampenv/bin/activate
    pip install paramiko PyYAML jinja2 httplib2 ansible
    git clone
    cd lamp/site-cookbooks/LAMP/files/default/lamp
    ansible-playbook -i hosts site.yml


Got Something to Say? Join the Discussion...

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.