How to Setup Magento Community Edition in CentOS 7

This tutorial is all about installing Magento Community Edition in CentOS 7 Operating System.  Magento is an Open Source eCommerce software now owned by eBay, Inc. Due to its opensource support base, it has become a very popular open-source product to run any types of eCommerce website.

Magento employs the MySQL relational database management system, the PHP programming language, and elements of the Zend Framework.

As it is free to install and use, it helps to host an awesome eCommerce site on the go with low cost. Now, no need to spend thousands of dollars on custom and proprietary software. This quick tutorial is a complete guide on setting up Magento on your LAMP stack. The LAMP stack is a collection of opensource applications that makes it possible run scripts written in PHP which includes, Apache, MySQL and PHP out of Linux. Here are the steps below on how we can setup Magento Community Edition in CentOS 7.

1. Installing LAMP Stack

Before we start, we'll need to make sure if we have LAMP Stack installed on our server or machine or not. If its installed we can simply skip this step and goto next step else need to follow this step too.

a) Installing Apache Web Server

First of all, we'll gonna install Apache Web Server. To install it, we need to run the following command in a shell or terminal.

$ sudo yum install httpd

installing httpd

After installing run the following command to start the server.

$ sudo systemctl start httpd.service

Now, If we want Apache2 to automatically start up everytime we reboot the server, we'll run the commands below.

$ sudo systemctl enable httpd.service

httpd service

After running the above commands, we'll want to open Apache2 default configuration file using a text editor and find the lines between </Directory “/var/www/”> </Directory> and we'll change the value to look like the block below.

$ sudo nano /etc/httpd/conf/httpd.conf

configure httpd

After we edit the file and complete the above task, we'll need to save the file and then exit it.

b) Installing MariaDB Server

Now, after we install Apache Web Server, we'll go for MariaDB Server for our Database of Magento. To install MySQL Server in our CentOS 7 Server, we'll run the following commands.

$ sudo yum install mariadb-server mariadb

install mariadb server

After the installation is completed, we'll want to start the server.

$ sudo systemctl start mariadb.service

And we also want to make MariaDB Server to startup automatically in every reboot.

$ sudo systemctl enable mariadb.service

start mariadb

Now, to configure and setup our mysql server, run the following command.

$ mysql_secure_installation

mysql secure installation

mysql installation

When you run the above command, it will prompt you to create a new password for the database root user, and also to enable some secure options. Always choose Y for yes when prompted.

c) Installing Php5 and its modules

After we successfully installed Apache Web Server and MySQL Database server, we'll go for installing Php5 and other Php modules. To install them, we'll need to run the following command in a shell or a terminal.

$ sudo yum install php php-gd php-mysql php-tidy php-xmlrpc php-common php-cli php-xml

installing php5

Magento requires php-mcrypt, but that packages isn’t available in CentOS 7 default repository so, we'll need to add other repositories that contain the package in order to use.  So, we'll need to add a new repository and then install php-mcrypt on our system.

 $ cd /tmp/ && wget
$ sudo yum install epel-release-7-5.noarch.rpm
$ rpm --import
$ rpm -ivh

As we have added our new repository for installing php-mcrypt, we'll now install it by running the command below.

$ sudo yum install php-mcrypt

installing php-mcrypt

After installing them, we'll open its configuration file and increase the memory limit for PHP scripts to about 512MB.  Run the commands below to open the file.

$ sudo nano /etc/php.ini

Then we'll change the memory limit to 512MB, then save the file and exit.

memory_limit = 512M

php memory limit

2. Downloading Magento Community Edition

Now, as we have successfully installed our LAMP Stack in our Centos 7 Server. Now, we'll install our Magento Community Edition in over our LAMP Server to make it workable. The Magento Community Edition can be easily and freely download from the offical download site also. To download and extract over our Apache Web Server, we'll want to run the following commands in a terminal or shell.

$ cd /tmp/ &&  wget

downloading magento

Now, we'll extract the download compressed zip file.

$ sudo unzip magento*.zip

extracting magento

We'll then copy the extracted files to our Apache Web Server's Webroot ie /var/www/html/ .

$ sudo cp -rf magento/* /var/www/html/

Now, we need to fix the ownership of the Apache Web Server Webroot. To do that we'll need to run the following command.

$ sudo chown -R apache:apache /var/www/html/

Next, we'll also need to fix the permission of the files so that Magento will work fine.

$ sudo chmod -R 755 /var/www/html/

fixing file permissions

3. Configuring Magento Database

After we complete extracting our magento to Apache Web Server's Webroot, we'll need to create a new database for Magento. And we'll also need to create a new database user for Magento. To do that, we'll need to run the commands below to logon to the database as the root user.

$ mysql -u root -p

Next, run the SQL statement below to create a database called magento.


Then run the commands below to create a new database user called magentouser.

> CREATE USER magentouser@localhost;

Then grant all access and privileges to the new database to the database user by running the commands below.

> GRANT ALL ON magento.* TO magentouser@localhost IDENTIFIED BY 'mypassword';


creating database

Note: Please replace the database name, user and password with your to avoid security issues. This details will be used later to setup Magento in web interface.

After we are done, we'll then configure firewall.

 4. Configuring Firewall

After completing above steps, we'll need to restart our Apache2 Web Server so that all the changes will take effect correctly.

$ sudo systemctl restart httpd.service

Next, we'll need to open the Firewall Port for HTTP Traffic.

$ sudo firewall-cmd --permanent --zone=public --add-service=http
$ sudo firewall-cmd --permanent --zone=public --add-service=https
$ sudo firewall-cmd --reload

configuring firewall

5. Web Interface

Finally, we'll now need to browse our favourite browser to the Server's IP address or domain ie http://ip-address .

magento installation wizard

If everything went cool as shown above, we should see the Magento Installation Wizard in our browser.

magento localization

Click Continue then the Localization page will open, change its settings according to one's need then click Continue again.

magento database configuration

Now, enter the database name, username and password we created before in step 3 .

magento homepage

If everything was done correctly, Magento should be installed.

To login to Admin Dashboard of Magento, please go to the url http://ip-address/index.php/admin and enter the requried credential created during installation of Magento through web interface. We'll see something like this.

magento admin panel

If you run into Magento cannot write to /media/downloadable and /app/etc folder, run the commands below to fix SELinux issues.

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


Hurray! We have successfully installed our latest Magento Community Edition. Magento is an awesome PHP script for better eCommerce Website. It is the world's most famous script used for creating beautiful Online Sales Commerce sites. It is pretty easy to install as we have illustrated above. This script is also available in Cpanel's  Softaculous Scripts too.  So, if you have any questions, suggestions, feedback please write them in the comment box below. Thank you ! Enjoy Magento :-)

Arun Pyasi 6:00 am


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


  1. Adding comment manually, from our fellow reader who send us thru email

    From CertDepot

    You shouldn't promote the chcon command but use the restorecon command.
    # restorecon -R /var/www/html
    In addition, it is advisable to apply the following command:
    # setsebool -P httpd_unified 1