Magento 2 installeren met Nginx en Let’s Encrypt op Ubuntu 18.04

Magento is een veel gebruikte Open Source e-commerce software en content management systeem voor e-commerce websites, gebaseerd op het PHP Zend Framework. Het gebruikt MySQL of MariaDB als database backend. De ontwikkeling van Magento werd in 2008 gestart door Varien.

In deze handleiding laat ik je zien hoe je Magento 2 installeert met Nginx, PHP 7.1 FPM, en MySQL als database. Ik zal ubuntu 18.04 (Bionic Beaver) gebruiken als server besturingssysteem. Als je nog geen minimale server opstelling hebt, bekijk dan deze handleiding om een goede basis opstelling te krijgen.

Vereisten

  • Ubuntu 18.04
  • 2GB of meer RAM geheugen
  • Root voorrechten

Wat we zullen doen

  1. Nginx installeren op Ubuntu 18.04
  2. Installeren en instellen van PHP-FPM 7.1
  3. Installeren en instellen van MySQL server
  4. Magento 2 installeren en configureren
    1. Installeer PHP Composer
    2. Magento 2 downloaden
    3. Installeer Magento onderdelen
    4. Genereer SSL Letsencrypt
    5. Configureer Nginx Virtuele Host voor Magento
    6. Magento Na-Installatie
  5. Testen van

Stap 1 – Installeer Nginx op Ubuntu 18.04 LTS

In deze handleiding zullen we de Nginx webserver gebruiken voor onze Magento installatie.

Meld je aan op de server, update het archief, en upgrade alle pakketten.

sudo apt update
sudo apt upgrade

Installeer nu de Nginx webserver met het onderstaande apt commando.

sudo apt install nginx -y

Nadat de installatie voltooid is, start je de Nginx service en zet je hem aan om elke keer bij het opstarten van het systeem te starten.

systemctl start nginx
systemctl enable nginx

Is de Nginx webserver geïnstalleerd, controleer hem dan met het netstat commando en controleer of de HTTP poort 80 op de stand ‘LISTEN’ staat. Een andere manier is door curl commando te gebruiken zoals hieronder.

netstat -plntu
curl -I localhost

Installeer Nginx webserver

Stap 2 – Installeer en configureer PHP-FPM 7.1

Na de Nginx webserver installatie zullen we PHP 7.1 op de server installeren, omdat Magento nog geen PHP 7.2 ondersteunt. We installeren PHP-FPM met alle uitbreidingen die voor Magento 2 nodig zijn.

Lijst van PHP extensies die nodig zijn voor de Magento 2 installatie:

  • bc-math
  • ctype
  • curl
  • dom
  • gd, ImageMagick 6.3.7 (of later) of beide
  • intl
  • mbstring
  • mcrypt
  • hash
  • openssl
  • PDO/MySQL
  • SimpleXML
  • zeep
  • spl
  • libxml
  • xsl
  • zip
  • json
  • iconv

Voor deze gids zullen we PHP-FPM pakketten installeren uit de PPA repository. We zullen de ‘ondrej/php’ repository gebruiken.

Installeer het ‘software-properties-common’ pakket en voeg de ‘ondrej/php’ repository toe met onderstaande commando’s.

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y

Installeer PHP 7.1

Installeer nu PHP-FPM 7.1 met alle benodigde uitbreidingen.

sudo apt install php7.1-fpm php7.1-mcrypt php7.1-curl php7.1-cli php7.1-mysql php7.1-gd php7.1-xsl php7.1-json php7.1-intl php-pear php7.1-dev php7.1-common php7.1-mbstring php7.1-zip php7.1-soap php7.1-bcmath -y

Als de installatie voltooid is, controleer je de PHP versie en geïnstalleerde uitbreidingen met PHP commando’s.

php -v
php -me

Controleer de PHP installatie

Vervolgens configureren we het php.ini bestand voor de PHP-FPM en PHP-CLI.

Bewerk de php.ini bestanden met vim.

vim /etc/php/7.1/fpm/php.ini
vim /etc/php/7.1/cli/php.ini

Verander de waarde van die regels als hieronder.

memory_limit = 512M
max_execution_time = 180
zlib.output_compression = On

Sla op en sluit af.

Start nu de PHP-fpm dienst opnieuw op en zet hem aan om telkens bij het opstarten van het systeem te starten.

systemctl restart php7.1-fpm
systemctl enable php7.1-fpm

De installatie en configuratie van PHP-FPM 7.1 is voltooid, controleer de dienst met het commando netstat.

netstat -pl | grep php

En je krijgt het PHP-fpm sokken bestand zoals hieronder.

Controleer de PHP-FPM socket

Stap 3 – Installeer en configureer de MySQL server

De Magento software vereist MySQL 5.6.x, en de Magento 2.1.2 of later vereisen de MySQL 5.7.x. In deze handleiding installeren we de nieuwste MySQL server 5.8 op het Ubuntu 18.04 systeem.

Installeer MySQL 5.8 met het onderstaande apt commando.

sudo apt install mysql-server mysql-client -y

Nadat de installatie voltooid is, start je de MySQL service en zet je hem aan om elke keer bij het opstarten van het systeem te starten.

systemctl start mysql
systemctl enable mysql

Nu zullen we het MySQL root wachtwoord configureren met ‘mysql_secure_installation’ commando.

mysql_secure_installation

In deze MySQL 5.8 versie is er een beveiligingsverbetering voor het MySQL wachtwoordbeleid. Je moet het wachtwoordbeleid kiezen – 0 voor het LOW beleid, 1 voor het MEDIUM beleid, en 2 voor een STRONG wachtwoordbeleid.

Voor deze gids gebruiken we het ‘MEDIUM’ wachtwoordbeleid, en het is aan te bevelen het ‘STRONG’ wachtwoordbeleid te gebruiken op de produktieserver.

Kies nummer ‘1’ en druk op Enter, typ dan je nieuwe MySQL ‘root’ wachtwoord.

Beveiligde MySQL installatie

 Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
 Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
 Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

Het MySQL root wachtwoord is ingesteld.

Nu maken we een nieuwe database voor onze Magento installatie. We maken een nieuwe databank met de naam ‘magentodb’ met als gebruiker ‘magentouser’ en als wachtwoord ‘[email protected]#’.

Log in op de MySQL shell met de root gebruiker.

mysql -u root -p

Voer nu onderstaande MySQL queries uit om de database en de gebruiker aan te maken.

create database magentodb;
create user [email protected] identified by '[email protected]#';
grant all privileges on magentodb.* to [email protected] identified by '[email protected]#';
flush privileges;

De MySQL server installatie en configuratie voor de Magento installatie is voltooid.

Maak een MySQL database en gebruiker voor Magento

Stap 4 – Installeer en configureer Magento 2

In deze stap installeren we Magento 2.2.4 nieuwste versie uit de Github repository. We installeren de PHP composer voor het installeren van de Magento componenten, downloaden Magento van Github repository, configureren Nginx virtual host voor Magento, en installeren Magento met de web-gebaseerde post installatie.

– Installeer PHP Composer

Installeer PHP Composer op ubuntu 18.04 met het onderstaande apt commando.

sudo apt install composer -y

Controleer nadat de installatie voltooid is de versie van Composer die op het systeem geïnstalleerd is.

composer -V

Installeer PHP componist

De nieuwste versie PHP Composer is geïnstalleerd.

– Download Magento 2

Ga naar de ‘/var/www’ directory en download de Magento archief broncode van Github met het wget commando.

cd /var/www/
wget https://github.com/magento/magento2/archive/2.2.4.tar.gz

Pak nu het Magento archiefbestand uit en hernoem de directory naar ‘magento2’.

tar -xf 2.2.4.tar.gz
mv magento2-2.2.4/ magento2/

De Magento broncode is gedownload, en de ‘/var/www/magento2’ directory wordt de web root voor de Magento site.

– Installeer Magento onderdelen

Installeer Magento componenten met behulp van de PHP composer. Ga naar de ‘magento2’ directory en installeer alle voor Magento benodigde PHP componenten met het ‘composer’ commando.

cd /var/www/magento2
composer install -v

Als de installatie voltooid is, krijg je het resultaat zoals hieronder.

Controleer de componist versie

– SSL genereren met Letsencrypt

We zullen onze Magento installatie beveiligen met SSL van Letsencrypt. Installeer de Letsencrypt met het onderstaande apt commando.

sudo apt install letsencrypt -y

Nadat de installatie voltooid is, stop je de nginx dienst.

systemctl stop nginx

Genereer nu de SSL certificaten voor de domeinnaam met certbot commando zoals hieronder.

certbot certonly --standalone -d magento.hakase-labs.pw

Typ je e-mail adres, accepteer de Letsencrypt TOS en typ dan ‘N’ voor e-mail delen.

<img src=”https://www.howtoforge.com/images/how_to_install_magento_2_with_nginx_and_letsencrypt_on_ubuntu_1804_lts/10.png” alt=”Schakel Let’s encrypt SSL certificaat in” width=”500″ height=”377″ /></p>
<p>Wanneer dat klaar is, krijg je het resultaat zoals hieronder.

SSL cert problemen met succes

De Letsencrypt SSL certificaat bestanden zijn gegenereerd in de ‘/etc/letsencrypt/live’ directory.

– Configureer Nginx Virtuele Host

Ga naar de ‘/etc/nginx/sites-available’ directory en maak met vim een nieuw virtual host bestand ‘magento’.

cd /etc/nginx/sites-available/
vim magento

Plak er de volgende configuratie in.

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

server {
    listen 80;
    listen [::]:80;
    server_name magento.hakase-labs.pw;
    return 301 https://$server_name$request_uri;
}

server {

        listen 443 ssl;
        server_name magento.hakase-labs.pw;

        ssl on;
        ssl_certificate /etc/letsencrypt/live/magento.hakase-labs.pw/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/magento.hakase-labs.pw/privkey.pem;

        set $MAGE_ROOT /var/www/magento2;
        set $MAGE_MODE developer;
        include /var/www/magento2/nginx.conf.sample;
}

Bewaar de configuratie en sluit af.

Activeer nu de virtuele host door de symbolische link voor het Magento virtuele host bestand te maken naar de ‘sites-enabled’ directory.

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

Test het nginx configuratiebestand en controleer of er geen fout optreedt.

nginx -t

Start nu de PHP-FPM en Nginx dienst opnieuw.

systemctl restart php7.1-fpm
systemctl restart nginx

En verander de eigenaar van de Magento web-root directory in de ‘www-data’ gebruiker en groep.

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

De nginx virtuele host voor Magento is toegevoegd.

– Magento Post-Installatie

Open de web browser en typ de Magento URL in. De mijne is:

https://magento.hakase-labs.pw/

Klik bij de ‘Terms and Agreement’ op de knop ‘Agree and Setup Magento’.

Magento web installateur

Controleer nu alle systeem- en serverconfiguratie voor Magento ‘Readlines Check’, en zorg dat het ‘slaagt’ voor alle systeem- en configuratiecontrole zoals hieronder.

Controleer de voorwaarden

Klik nu op de knop ‘Next’.

Database configuratie voor Magento – type al onze database info in en klik op ‘Volgende’.

Database configuratie

Verander voor de web configuratie het ‘winkel adres’ in HTTPS, het ‘Magento Admin Adres’ in de URL van je admin pad en verwijder het vinkje bij ‘Apache Rewrites’, omdat we de Nginx webserver gebruiken.

Webconfiguratie

Klik weer op de knop ‘Volgende’.

Laat de ‘Customize Your Store’ als standaard staan en klik op ‘Next’.

Magento winkel aanpassen

Typ je admin gebruiker en wachtwoord, en klik dan op ‘Next’.

Stel de admin account in

En klik op de knop ‘Install Now’ om Magento te installeren.

Begin Magento installatie

En als de installatie voltooid is, krijg je het ‘succes’ resultaat zoals hieronder.

Magento installatie geslaagd

Nu moeten we schrijftoegang uitschakelen voor de ‘/var/www/magento2/app/etc’ directory. Voer het onderstaande commando uit.

sudo chmod -w /var/www/magento2/app/etc

Magento is geïnstalleerd op de Ubuntu 18.04 Bionic Beaver server.

Stap 5 – Testen

Typ het Magento URL home adres en controleer of je de Magento standaard home pagina krijgt. De mijne is: https://magento.hakase-labs.pw/

Magento homepage

Log nu in op het Magento admin dashboard door de tijdens de installatie gedefinieerde URL ‘admin_hakase’ te bezoeken. De mijne is:

https://magento.hakase-labs.pw/admin_hakase/

Magento backend login

Typ de gebruikersnaam en het wachtwoord, en klik dan op de ‘Sign in’ knop.

En je krijgt het Magento admin dashboard zoals hieronder.

Magento dashboard

Magento 2 is geïnstalleerd op Ubuntu 18.04 met Nginx webserver, MySQL database, en PHP-FPM 7.1.

Extra:

Als je een fout krijgt over een ontbrekende Magento indexer cronjob, dan kun je dat oplossen door het crontab script te genereren met het onderstaande commando:

cd /var/www/magento2
sudo -u www-data php bin/magento cron:install --force

Controleer nu het lijst crontab script voor de ‘www-data’ gebruiker.

crontab -u www-data -l

Magento indexer cronjob instellen

Referentie