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.
Prerequisites:
- 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):
mysql_secure_installation
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> FLUSH PRIVILEGES; 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 https://getcomposer.org/installer | 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/myMagentoSite.com
directory using the following command:
sudo git clone https://github.com/magento/magento2.git /var/www/myMagentoSite.com
Navigate to the Magento directory:
cd /var/www/myMagentoSite.com
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=http://myMagentoSite.com/ --db-host=localhost --db-name=magento --db-user=magento --db-password=my_strong_password --admin-firstname=First --admin-lastname=Last [email protected]myMagentoSite.com --admin-user=admin --admin-password=my_strong_password123 --language=en_US --currency=USD --timezone=America/Chicago --use-rewrites=1
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/myMagentoSite.com
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 myMagentoSite.com
(You should change this to your domain name)::
sudo nano /etc/nginx/sites-available/myMagentoSite.com
Then paste the following content into the file:
upstream fastcgi_backend { server unix:/run/php/php7.2-fpm.sock; } server { server_namemyMagentoSite.com
www.myMagentoSite.com
; listen 80; set $MAGE_ROOT /var/www/myMagentoSite.com; set $MAGE_MODE developer; # or production access_log /var/log/nginx/myMagentoSite.com-access.log; error_log /var/log/nginx/myMagentoSite.com-error.log; include /var/www/myMagentoSite.com/nginx.conf.sample; }
Activate the server block by creating a symbolic link :
sudo ln -s /etc/nginx/sites-available/myMagentoSite.com /etc/nginx/sites-enabled/myMagentoSite.com
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 http://myMagentoSite.com/admin_1kd5tz
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.