How to Install Magento on Ubuntu 18.04

In this guide, we will show you how to install Magento 2 on an Ubuntu 18.04 VPS using MySQL, Nginx, and PHP-FPM 7.2.

Magento is a modern and feature-rich open-source eCommerce web application. Magento is fully customizable to meet any user’s requirements, allowing them to create and launch a fully functional eCommerce store in minutes. Magento is written in PHP and uses MySQL/MariaDB as a database backend.

This guide should work on other Linux VPS systems as well, but it was tested and written for an Ubuntu 18.04 VPS.


  • An Ubuntu 18.04 VPS
  • Access to the root user, or access to a user account with sudo privileges

Before we begin, you’ll need to log into your server and update your system’s software packages.

ssh [email protected]Server_IP -p Port_Number

Remember to replace Server_IP and Port_Number with your server’s respective IP address and SSH port number.

Run the following commands to update your system and install all necessary packages:

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install curl nano git

Step 1: Install MySQL and Create a Database

Run the following command to install the latest MySQL 5.7 server from the official Ubuntu repositories:

sudo apt-get install mysql-server

Once the installation is complete, issue the following command to improve the security of your MySQL server installation (we recommend answering with ‘Y’ to every prompt):


Next, we need to create a MySQL database and user for the new Magento installation.

Login to the MySQL console:

sudo mysql

Run the following commands to create a new database, user, and to grant privileges for the database to the user:

mysql> CREATE DATABASE magento;
mysql> GRANT ALL PRIVILEGES ON magento.* TO 'magento'@'localhost' IDENTIFIED BY 'my_strong_password';
mysql> \q

Remember to replace my_strong_password with an actual strong password.

Step 2: Install PHP 7.2, Composer and Required PHP Modules

Since version 2.3 Magento 2 is fully compatible with PHP 7.2.

To install the latest stable version of PHP 7.2 and all necessary modules, run:

sudo apt-get install php7.2-fpm php7.2-common php7.2-gd php7.2-mysql php7.2-curl php7.2-intl php7.2-xsl php7.2-mbstring php7.2-zip php7.2-bcmath php7.2-soap php7.2-opcache

Set the recommended PHP settings:

sudo sed -i "s/memory_limit = .*/memory_limit = 768M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 128M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.2/fpm/php.ini

Composer is a PHP dependency manager that allows you to install PHP packages. The composer will pull in all of the required libraries and dependencies you need for this project.

curl -sS | php
sudo mv composer.phar /usr/local/bin/composer

Step 3: Install Magento

At the time of writing this tutorial, the latest stable version is Magento 2.3.0.

Clone the Magento repository to the /var/www/ directory using the following command:

sudo git clone /var/www/

Navigate to the Magento directory:

cd /var/www/

Run Composer to install all Magento dependencies:

sudo composer install

The command can take some time to complete. Once completed, you’ll see the following output:

Generating autoload files

To continue with the installation, you can either use the installation wizard or the command line. In this guide we will install Magento using the setup:install command.

Run the following command to start the installation. Do not forget to set the correct MySQL database information.

sudo bin/magento setup:install \
--base-url= \
--db-host=localhost \
--db-name=magento \
--db-user=magento \
--db-password=my_strong_password \
--admin-firstname=First  \
--admin-lastname=Last \
[email protected] \
--admin-user=admin \
--admin-password=my_strong_password123 \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \

If the installation is successful, you will see something like the message below:

[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_1kd5tz
Nothing to import.

Remember the Magento admin URI – you’ll need it to access your Magento installation later.

Set the correct permissions:

sudo chown -R www-data: /var/www/

Run the following command to create the Magento crontab:

sudo -u www-data php bin/magento cron:install
Crontab has been generated and saved

Step 4: Install and configure Nginx

Install Nginx from the official Ubuntu repositories using the following command:

sudo apt-get install nginx

Create a new Nginx server block called (You should change this to your domain name)::

sudo nano /etc/nginx/sites-available/

Then paste the following content into the file:

upstream fastcgi_backend {
  server   unix:/run/php/php7.2-fpm.sock;

server {
    server_name; listen 80; set $MAGE_ROOT /var/www/; set $MAGE_MODE developer; # or production access_log /var/log/nginx/; error_log /var/log/nginx/; include /var/www/; }

Activate the server block by creating a symbolic link :

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Delete the default Nginx configuration:

sudo rm -f /etc/nginx/sites-enabled/default

Test the Nginx configuration:

sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Restart the nginx server for changes to take effect:

sudo service nginx restart

You should be now able to log in to your Magento back-end by going to using the information you set when running the bin/magento setup:install command.

That’s it. You have successfully installed Magento 2 with MySQL and Nginx on your Ubuntu 18.04 VPS. For more information about how to manage your Magento installation, please refer to the official Magento documentation.

Of course, you don’t have to do any of this if you use one of our Magento VPS Hosting services, in which case you can simply ask our expert Linux admins to setup this for you. They are available 24×7 and will take care of your request immediately.

PS. If you liked this post, please share it with your friends on the social networks using the buttons below, or simply leave a comment down in the comments section. Thanks.