Magento installeren op CentOS 8

Magento is een van de populairste open-source e-commerce platforms waarmee je in enkele minuten e-commerce websites en online winkels kunt opzetten. Het is geschreven in PHP, gebaseerd op Zend Framework en gebruikt het Entity Attribute Value (EAV) databasemodel om gegevens op te slaan. Het heeft een eenvoudige en gebruikersvriendelijke interface waarmee je je online winkel kunt aanpassen en je producten en diensten gemakkelijk kunt verkopen.

In deze handleiding laten we je zien hoe je het Magento eCommerce platform op CentOS 8 kunt installeren met Let’s Encrypt gratis SSL.

Vereisten

  • Een server die CentOS 8 draait met 2 GB RAM.
  • Een geldige domeinnaam gericht met je server IP.
  • Een root wachtwoord is op de server ingesteld.

Installeer de LEMP server

Installeer eerst Nginx webserver, MariaDB databaseserver, PHP en andere vereiste PHP bibliotheken door het volgende commando uit te voeren:

dnf install nginx mariadb-server php php-cli php-mysqlnd php-opcache php-xml php-gd php-soap php-bcmath php-intl php-mbstring php-json php-iconv php-fpm php-zip unzip git -y

Als alle pakketten geïnstalleerd zijn, start je de Nginx, MariaDB en PHP-FPM dienst en zet je ze aan om te starten na een herstart van het systeem met het volgende commando:

systemctl start nginx
 systemctl start mariadb
 systemctl start php-fpm
 systemctl enable nginx
 systemctl enable mariadb
 systemctl enable php-fpm

Vervolgens moet je het php.ini bestand bewerken en enkele instellingen aanpassen:

nano /etc/php.ini

Verander de volgende regels:

memory_limit =512M
upload_max_filesize = 200M
zlib.output_compression = On 
max_execution_time = 300 
date.timezone = Asia/Kolkata

Sla het bestand op en sluit het als je klaar bent.

Database configureren

MariaDB is standaard niet beveiligd, dus je zult hem eerst moeten beveiligen. Voer het volgende script uit om de MariaDB te beveiligen:

mysql_secure_installation

Beantwoord alle vragen zoals hieronder aangegeven:

Enter current password for root (enter for none): 
Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Als je klaar bent, log je in op MariaDB shell met het volgende commando:

mysql -u root -p

Geef je root wachtwoord wanneer daarom gevraagd wordt en maak dan een database en gebruiker voor Magento a hieronder getoond:

MariaDB [(none)]> CREATE DATABASE magentodb;
 MariaDB [(none)]> GRANT ALL ON magentodb.* TO [email protected] IDENTIFIED BY 'password';

Spoel vervolgens de privileges door en verlaat de MariaDB shell met het volgende commando:

MariaDB [(none)]> flush privileges;
 MariaDB [(none)]> exit;

Configureer PHP-FPM voor Magento

Vervolgens moet je de PHP-FPM pool voor je Magento instantie instellen. Je kunt die configureren door het volgende bestand aan te maken:

nano /etc/php-fpm.d/magento.conf

Voeg de volgende regels toe:

[magento]
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen = /run/php-fpm/magento.sock
pm = ondemand
pm.max_children =  50
pm.process_idle_timeout = 10s
pm.max_requests = 500
chdir = /

Bewaar en sluit het bestand en herstart dan de PHP-FPM dienst om de veranderingen door te voeren:

systemctl restart php-fpm

Magento downloaden

Download eerst de nieuwste versie van Magento uit de Git repository met het volgende commando:

cd /var/www/html
 wget https://github.com/magento/magento2/archive/2.3.zip

Eenmaal gedownload pak je het gedownloade bestand uit zoals hieronder:

unzip 2.3.zip

Verplaats vervolgens de uitgepakte map naar magento2 zoals hieronder getoond:

mv magento2-2.3 magento2

Vervolgens moet je de Composer installeren om de PHP afhankelijkheden voor Magento te installeren.

Je kunt de Composer installeren met het volgende commando:

curl -sS https://getcomposer.org/installer | php
 mv composer.phar /usr/local/bin/composer

Verander vervolgens de directory in magento2 en installeer alle Magento afhankelijkheden met het volgende commando:

cd /var/www/html/magento2
 composer update
 composer install

Vervolgens moet je de Magento crontab maken om taken in te plannen. Je kunt het aanmaken met het volgende commando:

./bin/magento cron:install

Je kunt de crontab verifiëren met het volgende commando:

crontab -l

Je zou de volgende uitvoer moeten krijgen:

#~ MAGENTO START f73db5f5dcf223372d4c9fab56bef0c1730eece898fad5cbee0c313b46b0dd1f
* * * * * /usr/bin/php /var/www/html/magento2/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/html/magento2/var/log/magento.cron.log
* * * * * /usr/bin/php /var/www/html/magento2/update/cron.php >> /var/www/html/magento2/var/log/update.cron.log
* * * * * /usr/bin/php /var/www/html/magento2/bin/magento setup:cron:run >> /var/www/html/magento2/var/log/setup.cron.log
#~ MAGENTO END f73db5f5dcf223372d4c9fab56bef0c1730eece898fad5cbee0c313b46b0dd1f

Geef vervolgens de juiste permissies aan de magento2 directory:

chown -R nginx:nginx /var/www/html/magento2
 chmod -R 755 /var/www/html/magento2

Configureer Nginx voor Magento

Vervolgens moet je een Nginx virtual host bestand voor Magento maken. Je kunt het aanmaken met het volgende commando:

nano /etc/nginx/conf.d/magento.conf

Voeg de volgende regels toe:

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

server {
    listen 80;
    server_name magento.linuxbuz.com;

    set $MAGE_ROOT /var/www/html/magento2;
    set $MAGE_MODE developer;

    access_log /var/log/nginx/magento-access.log;
    error_log /var/log/nginx/magento-error.log;

    include /var/www/html/magento2/nginx.conf.sample;
}

Sla het bestand op en sluit het als je klaar bent. Herstart dan Nginx en de PHP-FPM dienst om de veranderingen door te voeren:

systemctl restart php-fpm
 systemctl restart nginx

Configureer SELinux en Firewall

Standaard is SELinux ingeschakeld in CentOS 8. Je zult dus SELinux moeten instellen om Magento correct te laten werken.

Je kunt SELinux instellen met het volgende commando:

semanage permissive -a httpd_t

Vervolgens moet je een firewall regel maken om HTTP en HTTPS diensten van externe netwerken toe te staan. Je kunt die toestaan met het volgende commando:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
 firewall-cmd --reload

Beveilig Magento met Let’s Encrypt SSL

Magento is nu geïnstalleerd en geconfigureerd. Het is tijd om het te beveiligen met Let’s Encrypt gratis SSL.

Om dat te doen moet je de certbot client op je server downloaden. Je kunt de juiste toestemming downloaden en instellen door het volgende commando uit te voeren:

wget https://dl.eff.org/certbot-auto
 mv certbot-auto /usr/local/bin/certbot-auto
 chown root /usr/local/bin/certbot-auto
 chmod 0755 /usr/local/bin/certbot-auto

Voer nu het volgende commando uit om een SSL certificaat voor je Magento website te verkrijgen en te installeren.

certbot-auto --nginx -d magento.linuxbuz.com

Het bovenstaande commando installeert eerst alle vereiste afhankelijkheden, zoals hieronder te zien is:

Installed:
  gcc-8.2.1-3.5.el8.x86_64                                                  mod_ssl-1:2.4.37-12.module_el8.0.0+185+5908b0db.x86_64             
  python3-virtualenv-15.1.0-18.module_el8.0.0+33+0a10c0e1.noarch            python36-devel-3.6.8-2.module_el8.0.0+33+0a10c0e1.x86_64           
  redhat-rpm-config-116-1.el8.0.1.noarch                                    augeas-libs-1.10.1-8.el8.x86_64                                    
  libffi-devel-3.1-18.el8.x86_64                                            openssl-devel-1:1.1.1-8.el8.x86_64                                 
  annobin-8.64-1.el8.x86_64                                                 cpp-8.2.1-3.5.el8.x86_64                                           
  dwz-0.12-9.el8.x86_64                                                     efi-srpm-macros-3-2.el8.noarch                                     
  ghc-srpm-macros-1.4.2-7.el8.noarch                                        go-srpm-macros-2-16.el8.noarch                                     
  isl-0.16.1-6.el8.x86_64                                                   libmpc-1.0.2-9.el8.x86_64                                          
  ocaml-srpm-macros-5-4.el8.noarch                                          openblas-srpm-macros-2-2.el8.noarch                                
  perl-srpm-macros-1-25.el8.noarch                                          platform-python-devel-3.6.8-2.el8_0.0.1.x86_64                     
  python-rpm-macros-3-37.el8.noarch                                         python-srpm-macros-3-37.el8.noarch                                 
  python3-rpm-generators-5-4.el8.noarch                                     python3-rpm-macros-3-37.el8.noarch                                 
  qt5-srpm-macros-5.11.1-2.el8.noarch                                       rust-srpm-macros-5-2.el8.noarch                                    
  glibc-devel-2.28-42.el8.1.x86_64                                          glibc-headers-2.28-42.el8.1.x86_64                                 
  kernel-headers-4.18.0-80.11.2.el8_0.x86_64                                keyutils-libs-devel-1.5.10-6.el8.x86_64                            
  krb5-devel-1.16.1-22.el8.x86_64                                           libcom_err-devel-1.44.3-2.el8.x86_64                               
  libkadm5-1.16.1-22.el8.x86_64                                             libselinux-devel-2.8-6.el8.x86_64                                  
  libsepol-devel-2.8-2.el8.x86_64                                           libverto-devel-0.3.0-5.el8.x86_64                                  
  libxcrypt-devel-4.1.1-4.el8.x86_64                                        pcre2-devel-10.32-1.el8.x86_64                                     
  pcre2-utf16-10.32-1.el8.x86_64                                            pcre2-utf32-10.32-1.el8.x86_64                                     
  zlib-devel-1.2.11-10.el8.x86_64                                          

Complete!
Creating virtual environment...
Installing Python packages...
Installation succeeded.

Als alle afhankelijkheden geïnstalleerd zijn, wordt je gevraagd je e-mail adres op te geven en akkoord te gaan met de servicevoorwaarden zoals hieronder getoond:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for magento.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/magento.conf

Vervolgens moet je kiezen of je HTTP verkeer al dan niet naar HTTPS wilt omleiden, zoals hieronder:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2  

Typ 2 en druk op Enter om het Let’s Encrypt SSL certificaat voor je domein te installeren, zoals hieronder:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/magento.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://magento.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=magento.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/magento.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/magento.linuxbuz.com/privkey.pem
   Your cert will expire on 2020-03-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Toegang tot Magento

Magento is nu geïnstalleerd en geconfigureerd. Het is tijd om de Magento installatie wizard te openen.

Open je web browser en typ de URL https://magento.linuxbuz.com. Je wordt doorverwezen naar de Magento welkomstpagina:

Magento installatieprogramma

Klik op de knop Agree and Setup Magento. Je zou de Magento gereedheidscontrole wizard moeten zien:

Controle op systeemgereedheid

Klik nu op de Next knop. Je zou de volgende pagina moeten zien:

Database opzet

Geef je database gegevens op en klik op de Volgende knop. Je zou de volgende pagina moeten zien:

Webconfiguratie

Geef nu je Magento winkel en admin URL op, en klik op de Volgende knop. Je zou de volgende pagina moeten zien:

Configureer valuta, tijdzone en taal

Kies je gewenste tijdzone, valuta, taal en klik op de Next knop. Je zou de volgende pagina moeten zien:

Configureer gebruikersnaam

Geef nu je Magento admin gebruikersnaam en wachtwoord op en klik op de knop Volgende. Je zou de volgende pagina moeten zien:

Ga verder met de installatie

Klik nu op de Install Now knop om de Magento installatie te starten. Als de installatie met succes voltooid is. Je zou de volgende pagina moeten zien:

Installatie geslaagd

Klik nu op de knop Je winkeladres. Je zou je Magento winkel op de volgende pagina moeten zien:

Magento homepage

Om je Magento Admin interface te openen, typ je de URL https://magento.linuxbuz.com/admin_1teqss in je webbrowser. Je wordt doorverwezen naar de Magento Login pagina:

Magento Inloggen

Geef je Magento admin gebruikersnaam en wachtwoord op en klik op de Log in knop. Je zou je Magento admin interface op de volgende pagina moeten zien:

Magento Dashboard

Dat is het voor nu. Je Magento is nu beveiligd met Let’s Encrypt gratis SSL.