LAMP Stack is known as Linux, Apache, MySQL, and PHP. This is the popular web server environment for hosting PHP web applications on Fedora systems. This tutorial helps you to install Apache, MySQL, and PHP on the Fedora system.
Prerequisites
Login to your Fedora system and open a terminal. Now upgrade the current packages to the latest version by running the following command.
sudo dnf update
Apache Installation
Apache is the most popular web server widely used by Linux systems. Run below command to install the Apache server using the DNF tool.
sudo dnf install httpd
Now enable the Apache service and start it using the systemctl command
sudo systemctl enable httpd.service sudo systemctl start httpd.service
Then verify httpd service is running properly:
sudo systemctl status httpd.service
MariaDB Installation
MariaDB is an alternative to MySQL is the default database for the Fedora system. You can install it from official yum repositories by running the following command.
sudo dnf install mariadb-server
Don’t like MariaDB? Use this tutorial to install MySQL on Fedora.
Now enable MariaDB service and start it
sudo systemctl enable mariadb.service sudo systemctl start mariadb.service
After completing the installation process, run the secure installation script to secure MariaDB instance.
sudo mysql_secure_installation
Follow the onscreen instructions. The default password is none. Change your root account password and Press Y for all other operations to apply improved security.
- Enter current password for root (enter for none): [ PRESS ENTER ]
- Set root password? [Y/n] y
- New password: [ ENTER PASSWORD HERE ]
- Re-enter new password: [ RE-ENTER PASSWORD HERE ]
- 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
Now check the MariaDB service status.
sudo systemctl status mariadb
PHP Installation
PHP is the most popular programming language. It’s widely used for website development. You can simply run below command to install the latest available PHP version using DNF.
sudo dnf install php php-common
You may also require some modules as per your requirements. Install the required PHP modules on your system.
sudo dnf install php-mysqlnd php-xml php-json php-gd php-mbstring
Verify the current active PHP version on your system
php -v PHP 7.2.17 (cli) (built: Apr 18 2019 14:12:38) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
Add Firewall Rules
As per our readers comment. I am including the below steps to enable firewall access for HTTP(80) and HTTPS(443). To understand about FirewallD read our next tutorial.
sudo firewall-cmd –permanent –add-service=http sudo firewall-cmd –permanent –add-service=https
Then reload the firewalld daemon to apply the above changes.
sudo systemctl reload firewalld
Test Setup
To test the installation, create a phpinfo() function file under default document root directory. The Apache default document root on Fedora is /var/www/html.
sudo vim /var/www/html/phpinfo.php
Add following content:
1 2 3 | <?php phpinfo(); ?> |
Now access phpinfo.php file using your system IP address in a web browser. To find your system ip use command
nmcli -p device show
Access below url with the IP found in above command:
http://192.168.1.100/phpinfo.php
How can i change the default directory to be like a folder public_html in home instead of /var/www/html?
Some of the commands were slightly different on my version of Fedora, dunno why I’m new to Fedora.
These are what I had to type in for the firewall settings:
firewall-cmd –permanent –add-service=http
firewall-cmd –permanent –add-service=https
and then I had to restart apache like Lucas abouve
sudo systemctl restart httpd
In Fedora 33 I had to use
sudo firewall-cmd –add-service=http –add-service=https ––permanent
sudo systemctl stop firewalld
sudo systemctl start firewalld
I followed all these steps but I am stuck in the final tep where the page is taking too long to load and is not displaying the phpinfo page. I get a connection timed out , 192.168.1.100 taking too long to respond message.
Your ip address might not be 192.168.1.100
Type “nmcli -p device show” to get this information, it can be something like 127.0.0.1
Thank you so much
Ah c’mon. It’s a dash dash / hyphen hyphen
Trying again:
It’s — before permanent and add-service
CentOS 7:
firewall-cmd –permanent –add-service=http
firewall-cmd –permanent –add-service=http
firewall-cmd –permanent –add-service=http
firewall-cmd –permanent –add-service=https
systemctl reload firewalld
those three commands save my day… especially the last one … reloading the firewall daemon … *doh*
You’re using the incorrect syntax
firewall-cmd –zone=public –add-service=http –permanent
firewall-cmd –zone=public –add-service=https –permanent
systemctl reload firewalld
Tanks!!
Great tutorial!
In my machine when I went to “http://192.168.1.100/phpinfo.php” i saw the php source code.
To solve the problem I restarted the apache running this command on therminal.
$ sudo systemctl restart httpd
Apart from this, everything was ok.
Disculpa con la ip funciona sin ningún problema, pero porque al poner localhost no se muestra nada?
thank you