How to Install Magento on Rocky Linux and AlmaLinux

Written in PHP, Magento is a popular open-source, and versatile eCommerce platform that provides businesses with an online shopping cart. It leverages various PHP frameworks such as Symfony and Laminas to enhance its functionality and usability.

Magento provides you with an Administrator’s control panel that helps you create your online shop, manage product catalog, monitor transactions and invoices, and keep track of customers’ purchase behavior among many other tasks.

Without much further ado, let’s embark on installing Magento on Rocky Linux and AlmaLinux.


To successfully install Magento, first of all, need to have a LAMP stack installed on:

Also, ensure that you have a fully qualified domain name (FQDN) pointing to the public IP address of the server. In this guide, we will use the domain.

Lastly, ensure you have SSH access with a sudo user configured.

Step 1: Install Additional PHP Modules and Other Dependencies

We will start off with the installation of php modules which are a requirement for the installation of Magento.

$ sudo dnf install php-mysqlnd php-xml php-cli php-soap php-pd php-opcache php-iconv php-bcmath php-gd o  php-intl php-mbstring php-json  php-zip unzip wget -y

Once installed, head over and edit the php.ini configuration file.

$ sudo vim /etc/php.ini

Ensure that the values provided below reflect what you have. Of course, set your date.timezone value accordingly to correspond to your timezone.

memory_limit = 1024M
upload_max_filesize = 256M
zlib.output_compression = on
max_execution_time = 18000
date.timezone = Europe/London

Save the changes and exit.

Next, you need to install the PHP sodium extension – libsodium. This is a module that provides encryption functionalities in an easy and effective manner. To install the module, we need to install the EPEL repository which provides additional packages and dependencies to support its installation.

To install EPEL, execute the command:

$ sudo dnf install

Next, install additional dependencies.

$ sudo dnf install php-cli libsodium php-pear php-devel libsodium-devel make

With all the packages and dependencies in place, install the libsodium PHP module by running the following commands in that order.

$ sudo pecl channel-update
$ sudo pecl install libsodium

Head back to the php.ini file.

$ sudo vim /etc/php.ini 

Append the following line.

Save and exit.

To verify if PHP sodium was installed run the command:

$ php -i | grep sodium
Verify PHP Sodium Module
Verify PHP Sodium Module

Great! Now proceed to the next step.

Step 2: Create Database for Magento

The next step involves the creation of a database and a database user for Magento. Therefore, log in to the MariaDB database server:

$ sudo mysql -u root -p

Create a database and a database user by running the following SQL queries.

CREATE USER 'magento_user'@'localhost' IDENTIFIED BY 'password';

Next, Grant privileges to the database user on the Magento database.

GRANT ALL ON magento_db.* TO 'magento_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Finally, enable the changes to take effect by reloading grant tables.


Below is a summary of the SQL queries.

Create Magento Database
Create Magento Database

Step 3: Install and Configure Elasticsearch in Linux

The next step is to install Elasticsearch. This is an open-source distributed search and analytics engine based on Apache Lucene. It is used to search, store and analyze huge volumes of data fast and conveniently.

Elasticsearch is written in Java, and as a prerequisite, we need to install Java first. We are going to install OpenJDK 11 which is the latest stable version of OpenJDK.

$ sudo dnf install openjdk-11-jdk -y

Once the installation of OpenJDK is complete, verify the version of Java installed.

$ java -version
Check Java Version
Check Java Version

Next, import the Elasticsearch GPG key.

$ sudo rpm --import

Once done, create a repository for Elasticsearch.

$ sudo vim /etc/yum.repos.d/elasticsearch.repo

Paste the following content.

name=Elasticsearch repository for 7.x packages

Save the changes and exit the Elasticsearch repository file.

Now use the DNF package manager to install elasticsearch.

$ sudo dnf install elasticsearch

Some additional configuration is required for Elasticsearch. So edit the elasticsearch.yml file.

$ sudo vim etc/elasticsearch/elasticsearch.yml

Uncomment the lines below and ensure that the directive is set to my-application node-1 /var/lib/elasticsearch

Save the changes and exit the file.

Now, enable the Elasticsearch service to start on boot time and start the service using the following commands.

$ sudo systemctl enable elasticsearch
$ sudo systemctl start elasticsearch

Then verify the running status of Elasticsearch.

$ sudo systemctl status elasticsearch

Additionally, you can test Elasticsearch by sending a GET request using the curl command as shown.

$ curl -X GET ‘localhost:9200’

You should get the following output in JSON format.

Test Elasticsearch Installation
Test Elasticsearch Installation

This is a confirmation that Elasticsearch was successfully installed.

Step 4: Download and Install Composer in Linux

The next step is to install composer which is a PHP package manager. So, first, download the installer file.

$ sudo curl -sS | php

Then move the file to the /usr/local/bin/ path.

$ sudo mv composer.phar /usr/local/bin/composer

To confirm the installation, execute the command:

$ composer -V
Install Composer in Linux
Install Composer in Linux

Step 5: Download and Install Magento in Linux

The next step is to download the Magento zip file. Currently, the latest version is Magento 2.4.2. Using the wget command-line utility, download the installation file as follows.

$ wget

Once downloaded, extract the contents of the archive file.

$ unzip

Then move the decompressed directory to the document root directory and rename it to magento2 for the sake of simplicity.

$ sudo mv magento2-* /var/www/html/magento2

Then navigate to the magento directory

$ cd /var/www/html/magento2

And use composer to install all the PHP dependencies.

$ sudo /usr/local/bin/composer install

NOTE: You are bound to get an error when using sudo to run composer. This is merely a warning since running composer as root can be risky depending on what is being installed. So just proceed and run it nonetheless.

Composer Install PHP Modules
Composer Install PHP Modules

Once all dependencies are installed, set the following permissions for the magento2 directory.

$ sudo chown -R apache:apache /var/www/html/magento2
$ sudo chmod 755 /var/www/html/magento2

Still in the magento2 directory, invoke the following additional permissions.

$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec 
$ sudo chown -R apache:apache .
$ sudo chmod u+x bin/magento

We are done with setting the permissions now. Let’s proceed and configure Apache for Magento.

Step 6: Create an Apache Virtual Host for Magento

Next, we will configure an Apache virtual host file for Magento installation.

$ sudo vim /etc/httpd/conf.d/magento.conf

Paste the following configuration file.

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/magento2/
DirectoryIndex index.php

<Directory /var/www/html/magento2/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

ErrorLog /var/log/httpd/magento_error.log
CustomLog /var/log/httpd/magento_access.log combined

Save the changes and exit the file.

Then restart the Apache HTTP server

$ sudo systemctl restart httpd

Step 7: Install Magento and Set Up Magento Cron Jobs

To install Magento, run the following command which configures a new user, an admin user, and several other salient variables.

sudo -u apache bin/magento setup:install --admin-firstname="james" --admin-lastname="kiarie" --admin-email="[email protected]" --admin-user="admin" --admin-password="Secure@123" --db-name="magento_db" --db-host="localhost" --db-user="magento_user" --db-password="P@ssword@321" --language=en_US --currency=USD --timezone=Europe/London  --cleanup-database --base-url=http://""

At the very end, you will get the following output providing the admin page path.

Install Magento in Linux
Install Magento in Linux

Before accessing Magento from the browser, configure SELinux policies as shown.

$ sudo restorecon -R /var/www/magento
$ sudo setsebool -P httpd_unified 1

Then, open the browser and type the full URL as shown.

You will be redirected to the following login page. Sign in using the admin credentials as earlier specified and click on ‘Sign In‘.

Magento Login
Magento Login

This ushers you to the Magento dashboard.

Magento Dashboard
Magento Dashboard

From here, you can proceed to create your online shop, manage item prices, invoices and keep track of customer activity among many other tasks. We have successfully installed Magento on Rocky Linux and AlmaLinux.

Ravi Saive
I am an experienced GNU/Linux expert and a full-stack software developer with over a decade in the field of Linux and Open Source technologies

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.

1 Comment

Leave a Reply
  1. What’s your suggestion if someone does not have much technical expertise. So is managed Magento hosting a reliable solution like Cloudways.


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.