Blog \ How to Setup an Ubuntu Server for Magento 2 Open Source

How to Setup an Ubuntu Server for Magento 2 Open Source

  • Andrii PaschenkoAndrii Paschenko
  • April 06, 2020

    April 06, 2020

In this tutorial, we’ll show you how to install and configure Web Server on Ubuntu OS for Magento 2 Open Source. First of all, you need a VPS server with ssh access. We’ll use the Digital Ocean.

Following the Magento 2 technology stack requirements you need at least 2GB of RAM, non-root user with sudo privileges…

What we need

1. Install MySQL 1. Install Nginx 1. Install php + php-fpm 1. Install Composer Package Manager 1. Install Magento 2 Open Source using Composer

Step 1 - Install MySQL database

For this tutorial, we are going to install an open-source Percona Server 5.7.

$ apt -y install gnupg2
$ wget$(lsb_release -sc)_all.deb
$ dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

Percona repositories should be added. You can check the repository setup in the /etc/apt/sources.list.d/percona-original-release.list file.

Let's check. Perform the below command.

$ cat /etc/apt/sources.list.d/percona-original-release.list

As a result, you should see the list of repositories.

How to Setup an Ubuntu Server for Magento 2 Open Source

After you need to update the local cache and check if Percona Server 5.7 available to install:

$ apt-get update
$ apt-cache search percona-server

How to Setup an Ubuntu Server for Magento 2 Open Source

The percona-server-server-5.7 is available to install, let's install it to our server:

$ apt -y install percona-server-server-5.7

You’ll be prompted to set up a root password. Generate strong password and paste here

How to Setup an Ubuntu Server for Magento 2 Open Source

Once the install has completed, lets go check our mysql server to see if it works.

$ systemctl status mysql

Change the MySQL server configuration

To avoid the server performance issues, try to add the following configuration in /etc/mysql/percona-server.conf.d/mysqld.cnf:

$ vi /etc/mysql/percona-server.conf.d/mysqld.cnf

At the end of the file

performance_schema = off
innodb_file_per_table   = 0
query-cache-size        = 256M
query-cache-limit       = 2097152
innodb-file-per-table   = 1
innodb-flush-method     = O_DIRECT

How to Setup an Ubuntu Server for Magento 2 Open Source

Save and close. To take effect don’t forget restart the mysql service

$ systemctl restart mysql

Create database for your Magento 2 website

First login to your MySQL server

$ mysql -uroot -p

And paste the password for the root user you set earlier.

$ GRANT ALL PRIVILEGES ON magento.* to 'magento_user'@'localhost' identified by 'YourPassword';
$ exit

Change database name magento to name of your database and magento_user to your user name and 'YourPassword' to strong password with digits, special characters, uppercase and lowercase letters, and at least 12-16 characters.

Step 2 - Install PHP 7.3 + php-fpm

In our Ubuntu available to install PHP 7.2. But we need to use the latest. Let’s add new PHP repo to our system

$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update

Magento 2 Open Source requires several PHP extensions to function properly:

$ sudo apt -y install php7.3 php7.3-fpm php7.3-mysql php7.3-soap php7.3-bcmath php7.3-xml php7.3-mbstring php7.3-gd php7.3-common php7.3-cli php7.3-curl php7.3-intl php7.3-zip zip unzip

After the installation is finished

$ systemctl start php7.3-fpm
$ systemctl status php7.3-fpm

It should be Active status running.

Step 3 - Install Composer Package Manager

Install composer to your system by the following commands or you can use official documentation.

$ php -r "copy('', 'composer-setup.php');" && php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ mv composer.phar /usr/bin/composer

Step 4 - Install Nginx web server

Because Ubuntu contains old versions of Nginx, first of all we need to add the latest packages. Lets do that from the official Nginx documentation.

$ sudo apt install curl gnupg2 ca-certificates lsb-release
$ echo "deb `lsb_release -cs` nginx" \
 | sudo tee /etc/apt/sources.list.d/nginx.list

To be sure Nginx mainline was added correctly, we can check with the following command cat /etc/apt/sources.list.d/nginx.list

We should see something like this

How to Setup an Ubuntu Server for Magento 2 Open Source

Next step, import an official nginx signing key

$ curl -fsSL | sudo apt-key add -
$ sudo apt-key fingerprint ABF5BD827BD9BF62

The output should be like in screenshot below

How to Setup an Ubuntu Server for Magento 2 Open Source

It’s enough to install nginx with the following commands:

$ sudo apt update
$ sudo apt -y install nginx

Once the install has completed, let's go to enable nginx and check the status.

$ systemctl start nginx
$ systemctl status nginx

You must be able to see the status Active: active (running)

Configure Nginx

Create virtual host

$ vi /etc/nginx/conf.d/magento.conf

Add the following configuration

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

server {

  listen 80;
  server_name yourservername;
  set $MAGE_ROOT /var/www/magento2;
  include /var/www/magento2/nginx.conf.sample;

Save and close.

Delete sample configuration

$ rm /etc/nginx/conf.d/default.conf

Change nginx configration

$ vi /etc/nginx/nginx.conf

Here we are gonna to change nginx user and worker_processes. It is first and second lines in this file. Default settings

user  nginx;
worker_processes  1;

Change to

user  www-data;
worker_processes  auto;

Save and close

For now we cannot restart nginx web server because we don’t have the path /var/www/magento2 where our magento should be located.

Go to the var directory and create the www folder

$ cd /var
$ mkdir www
$ cd www

And now we are able to install Magento 2.

Step 5 - Install Magento 2 Open Source via Composer Package Manager

$ composer create-project --repository-url= magento/project-community-edition magento2

In process it will ask you to add credentials which you can find in your Magento Marketplace account. It will take some time to download the latest Magento modules and all dependencies.

Now, our server and Magento 2 are ready to be installed.

Check of your nginx settings are correct

$ nginx -t

It should be the following output

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

Restart nginx

$ systemctl restart nginx

And change permissions to folders

$ chown -R www-data:www-data magento2/

Go to your domain name you set in /etc/nginx/conf.d/magento.conf.

Magento 2 ready for installation.

How to Setup an Ubuntu Server for Magento 2 Open Source

You can proceed with browser installation which will take some time or use this command

$ cd magento2
$ bin/magento setup:install --base-url= \
--db-host=localhost --db-name=yourdbname \
--db-user=magento_user --db-password=yourdbpassword \
--admin-firstname=Magento --admin-lastname=User \
--admin-user=admin --admin-password=admin123 --language=en_US \
--currency=USD --timezone=America/Chicago --cleanup-database \
--session-save=db --use-rewrites=1

How to Setup an Ubuntu Server for Magento 2 Open Source

That's all. Our Magento 2 Open source is installed and ready to use.

Getting Started with Magento 2

In the Getting Started with Magento 2 you will learn how to install Magento 2 Open Source on your environment.

Sign up and don't miss our awesome Mage Mastery lessons and updates!

Related Posts

Magento 2 Quick Start: Installation using Composer

The tutorial is for those who are looking to get a experience on how to install Magento 2 Open Source on a local development environment. A step-by-step video guide for developers.

How to Configure Varnish 6 and nginx with ssl for Magento 2

In this tutorial, we are going to set up and configure Varnish Cache with nginx and SSL (https) certificate for a Magento 2 Open Source.

Black Friday Sale

Up to 50% OFF on all Mage Mastery Online Courses and Workshops.
Looking for Magento 2 Development Partner?

Hire Pronko Consulting, Magento 2 development and consulting agency

Our Services
If you like this blog post, you may want to watch
Start: September 28, 2020
Max Pronko
Web Icon20 lessons
Clock Icon15 hours
Magento 2 Certified Developer Study Group is an 10-week (1.5 hours/week) instructor-led study group. This study group will help PHP and JavaScript developers evaluate their readiness and prepare for the Magento 2 Certified Associate Developer exam.
Start: September 28, 2020
Max Pronko
Web Icon80 lessons
Clock Icon15 hours
Magento 2 Development Workshop is for those who want to practice and learn how to implement Magento 2 extensions. During the workshop, you will have lots of homework, practical exercises, video lessons, and theory that will give you the required skills for your Magento 2 job.
2020 © Made with ❤ by Max Pronko