How to Install LEMP (Linux, Nginx, MariaDB, PHP) on Fedora 30 Server

In this article, we’ll be looking at how to install LEMP stack on Fedora 30 Server. LEMP Stands for:

  • L -> Linux
  • E -> Nginx
  • M -> Maria DB
  • P -> PHP

I am assuming Fedora 30 is already installed on your system.

LEMP-Stack-Fedora30

LEMP is a collection of powerful software setup that is installed on a Linux server to help in developing popular development platforms to build websites, LEMP is a variation of LAMP wherein instead of Apache, EngineX (Nginx) is used as well as MariaDB used in place of MySQL. This how-to guide is a collection of separate guides to install Nginx, Maria DB and PHP.

Install Nginx, PHP 7.3 and PHP-FPM on Fedora 30 Server

Let’s take a look at how to install Nginx and PHP along with PHP FPM on Fedora 30 Server.

Step 1) Switch to root user

First step in installing Nginx in your system is to switch to root user. Use the following command :

pkumar@fedora30-server ~]$ sudo -i
[sudo] password for pkumar:
[root@fedora30-server ~]#

Step 2) Install Nginx, PHP 7.3 and PHP FPM using dnf command

Install Nginx using the following dnf command:

[root@fedora30-server ~]# dnf install nginx php php-fpm php-common -y

Step 3) Install Additional PHP modules

The default installation of PHP only comes with the basic and the most needed modules installed. If you need additional modules like GD, XML support for PHP, command line interface Zend OPCache features etc, you can always choose your packages and install everything in one go. See the sample command below:

[root@fedora30-server ~]# sudo dnf install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -y

Step 4) Start & Enable Nginx and PHP-fpm Service

Start and enable Nginx service using the following command

[root@fedora30-server ~]# systemctl start nginx && systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
[root@fedora30-server ~]#

Use the following command to start and enable PHP-FPM service

[root@fedora30-server ~]# systemctl start php-fpm && systemctl enable php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
[root@fedora30-server ~]#

Verify Nginx (Web Server) and PHP installation,

Note: In case OS firewall is enabled and running on your Fedora 30 system, then allow 80 and 443 ports using beneath commands,

[root@fedora30-server ~]# firewall-cmd --permanent --add-service=http
success
[root@fedora30-server ~]#
[root@fedora30-server ~]# firewall-cmd --permanent --add-service=https
success
[root@fedora30-server ~]# firewall-cmd --reload
success
[root@fedora30-server ~]#

Open the web browser, type the following URL: http://<Your-Server-IP>

Test-Page-HTTP-Server-Fedora-30

Above screen confirms that NGINX is installed successfully.

Now let’s verify PHP installation, create a test php page(info.php) using the beneath command,

[root@fedora30-server ~]# echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
[root@fedora30-server ~]#

Type the following URL in the web browser,

http://<Your-Server-IP>/info.php

Php-info-page-fedora30

Above page confirms that PHP 7.3.5 has been installed successfully. Now let’s install MariaDB database server.

Install MariaDB on Fedora 30

MariaDB is a great replacement for MySQL DB as it is works much similar to MySQL and also compatible with MySQL steps too. Let’s look at the steps to install MariaDB on Fedora 30 Server

Step 1) Switch to Root User

First step in installing MariaDB in your system is to switch to root user or you can use a local user who has root privilege. Use the following command below:

[root@fedora30-server ~]# sudo -i
[root@fedora30-server ~]#

Step 2) Install latest version of MariaDB (10.3) using dnf command

Use the following command to install MariaDB on Fedora 30 Server

[root@fedora30-server ~]# dnf install mariadb-server -y

Step 3) Start and enable MariaDB Service

Once the mariadb is installed successfully in step 2), next step is to start the MariaDB service. Use the following command:

[root@fedora30-server ~]# systemctl start mariadb.service ; systemctl enable mariadb.service

Step 4) Secure MariaDB Installation

When we install MariaDB server, so by default there is no root password, also anonymous users are created in database. So, to secure MariaDB installation, run the beneath “mysql_secure_installation” command

[root@fedora30-server ~]# mysql_secure_installation

Next you will be prompted with some question, just answer the questions as shown below:

Secure-MariaDB-Installation-Part1

Secure-MariaDB-Installation-Part2

Step 5) Test MariaDB Installation

Once you have installed, you can always test if MariaDB is successfully installed on the server. Use the following command:

[root@fedora30-server ~]# mysql -u root -p
Enter password:

Next you will be prompted for a password. Enter the password same password that you have set during MariaDB secure installation, then you can see the MariaDB welcome screen.

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.3.12-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

And finally, we’ve completed everything to install LEMP (Linux, Nginx, MariaDB and PHP) on your server successfully. Please post all your comments and suggestions in the feedback section below and we’ll respond back at the earliest.

1 thought on “How to Install LEMP (Linux, Nginx, MariaDB, PHP) on Fedora 30 Server”

  1. Hi, I followed this guide but got a 404 when loading the php.info() script from the browser.

    This is the error:
    [crit] 30091#0: *12 connect() to unix:/run/php-fpm/www.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.0.2, server: _, request: “GET /info.php HTTP/1.1”, upstream: “fastcgi://unix:/run/php-fpm/www.sock:”, host: “192.168.0.142”

    What am I doing wrong here?

Leave a Comment

Your email address will not be published. Required fields are marked *