IntroductionMagento is an eCommerce open source software, and a content management system for eCommerce websites. It uses MySQL 5.6+ or MariaDB as possible databases, and it’s compatible with both NGINX and Apache web servers. It also requires PHP7+ and some of its extensions.
This tutorial demonstrates how to install Magento 2 on an Ubuntu 16.04 server using NGINX and MySQL.
Update the server# apt update
Install NGINXNGINX is available on Ubuntu repository, so you can easily install it with apt:
# apt install nginx
Install PHPSince you are likely hoping that the site will be accessed by many visitors, it’s better to install PHP-FPM (FastCGI Process Manager), which has various features. So, install it and the extensions required by Magento:
# apt install php7.0-mcrypt php7.0-fpm php7.0-curl php7.0-mysql php7.0-cli php7.0-xsl php7.0-json php7.0-intl php7.0-dev php-pear php7.0-mbstring php7.0-common php7.0-zip php7.0-gd php-soap
Install curl as well:
# apt install curl libcurl3
Editing PHP settingsModify the two configuration files:
/etc/php/7.0/fpm/php.ini – FPM configuration;
/etc/php/7.0/cli/php.ini – PHP-CLI configuration file;
In both, add the following lines (or edit if already existing):
memory_limit = 2G
max_execution_time = 3600
opcache.save_comments = 1
zlib.output_compression = On
Save, exit and restart PHP-FPM so that changes will be applied:
# systemct restart php7.0-fpm
Install and configure MySQLTo install MySQL, execute the following command:
# apt install -y mysql-server mysql-client
Next, set up a root account for it:
# mysql_secure_installation
Set root password? [Y/n]
New password:
Re-enter new password:
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n]
If importing a large numbers of products into Magento is required, just increase the value for the max_allowed_packet option using the following code:
# $EDITOR /etc/mysql/mysql.cnf
There, search for the mentioned line, and modify as follow:
[mysql]
max_allowed_packet=64M
Save, exit and restart MySQL:
# systemctl restart mysql
Next, start a MySQL command prompt:
# mysql -u root -p
Create a new user and database:
mysql> CREATE DATABASE magento_db;
mysql> CREATE USER 'magentousr'@'localhost' IDENTIFIED BY 'user_strong_password';
mysql> GRANT ALL PRIVILEGES ON 'magento_db.*' TO 'magentousr'@'localhost' IDENTIFIED BY 'user_strong_password';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
Downloading MagentoMagento 2 will be installed in the /var/www/magento2 directory. The installation requires PHP Composer. Install PHP Composer by executing the following command:
# curl -sS https://getcomposer.org/installer | php
Move the composer.phar file to /usr/local/bin:
mv composer.phar /usr/local/bin/composer
Test that everything is going smoothly so far with:
# composer -v
This should print out the composer version.
To obtain Magento (the Community Edition, in this tutorial), first go to
https://www.magentocommerce.com/magento-connect/ and create an account there. Next, follow
My Account > Developer > Secure Keys, and generate new keys.
Now it’s time to download Magento. On a terminal, execute the following command:
# composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition /var/www/magento2
During this process, use the public key for username and the private key for the password.
Configure a Virtual HostCreate a new Virtual Host file:
# $EDITOR /etc/nginx/sites-available/magento
In the Host File, paste the following configuration:
upstream fastcgi_backend {
server unix:/run/php/php7.0-fpm.sock;
}
server {
listen 80;
server_name www.myecommerce.com;
set $MAGE_ROOT /var/www/magento2;
set $MAGE_MODE developer;
include /var/www/magento2/nginx.conf.sample;
}
Magento already contains an NGINX configuration file, so it’s not necessary to create one.
Save and exit.
Next, activate the virtual host:
# ln -s /etc/nginx/sites-available/magento /etc/nginx/sites-enabled/
Restart NGINX:
# systemctl restart nginx
Install MagentoIn /var/www/magento2 there is a binary file named magento. This will be used for installing Magento 2.
Execute:
# /var/www/magento2/bin/magento setup:install --backend-frontname="admin" \
--key="cja8Jadsjwoqpgk93670Dfhu47m7rrIp"\
--db-host="localhost" \
--db-name="magento_db" \
--db-user="magentousr" \
--db-password="usr_strong_password" \
--language="en_US" \
--currency="USD" \
--timezone="My/Timezone" \
--use-rewrites=1 \
--use-secure=0 \
--base-url="http://www.myecommerce.com" \
--base-url-secure="https://www.myecommerce.com" \
--admin-user=admin \
--admin-password=admin_password \
--admin-email=admin@myecommerce.com \
--admin-firstname=admin \
--admin-lastname=user \
--cleanup-database
At the end:
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin
Final configuration The last step is a “graphical configuration” through a web browser. Go to
www.myecommerce.com/admin, and log in with the admin credentials you created during the installation process.
After signing in the Magento Dashboard should appear, signifying that everything went well. The ecommerce web site is now ready to be filled with products!