Ako nainštalovať Magento eCommerce Suite na Rocky Linux 9 s Elasticsearch


Na tejto stránke

  1. Predpoklady
  2. Krok 1 - Nakonfigurujte bránu firewall
  3. Krok 2 - Nainštalujte PHP a jeho rozšírenia
  4. Krok 3 - Nainštalujte Composer
  5. Krok 4 - Nainštalujte MariaDB
  6. Krok 5 – Nakonfigurujte MariaDB
  7. Krok 6 - Nainštalujte Nginx
  8. Krok 7 – Nainštalujte SSL
  9. Krok 8 - Nainštalujte Elasticsearch
  10. Krok 9 - Nainštalujte server Redis
  11. Krok 10 - Stiahnite si Magento
  12. Krok 11 - Nainštalujte Magento
  13. Krok 12 – Nakonfigurujte PHP-FPM
  14. Krok 13 – Nakonfigurujte SELinux
  15. Krok 14 - Nakonfigurujte Nginx
  16. Krok 15 - Zakážte dvojfaktorové overenie
  17. Krok 16 – Vstúpte do Administračného portálu
  18. Krok 17 – Povoľte a nakonfigurujte dvojfaktorové overenie
  19. Záver

Magento je open-source platforma elektronického obchodu napísaná v PHP. Spoločnosť Adobe ju získala v roku 2018. Ponúka sa aj ako komerčný a cloudový produkt. Magento môžete použiť na vytváranie vysokokapacitných profesionálnych nákupných webových stránok. Ponúka oboje – režim jednej predajne aj viac predajní. Dodáva sa s množstvom modulov na rozšírenie jeho funkčnosti.

V tomto návode nainštalujeme edíciu komunity Magento s otvoreným zdrojovým kódom. Ponúka všetky funkcie, ktoré potrebujete na zriadenie profesionálneho internetového obchodu. Nainštalujeme tiež Elasticsearch, aby sme prehľadávali katalóg produktov, Redis pre reláciu a vyrovnávaciu pamäť súborov a poskytovali ich pomocou servera Nginx.

Predpoklady

    Server so systémom Rocky Linux 9 s minimálne 2 GB RAM. V závislosti od vašich požiadaviek možno budete potrebovať viac pamäte RAM.

    Používateľ bez oprávnenia root s oprávneniami sudo.

    Plne kvalifikovaný názov domény (FQDN) pre server, magento.example.com

    Uistite sa, že je všetko aktualizované.

    $ sudo dnf update
    

    Niekoľko balíkov, ktoré váš systém potrebuje.

    $ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
    

    Niektoré z týchto balíkov už môžu byť vo vašom systéme nainštalované.

Krok 1 - Nakonfigurujte bránu firewall

Prvým krokom je konfigurácia brány firewall. Rocky Linux používa Firewalld Firewall. Skontrolujte stav brány firewall.

$ sudo firewall-cmd --state
running

Firewall pracuje s rôznymi zónami a verejná zóna je predvolená zóna, ktorú budeme používať. Uveďte všetky služby a porty aktívne na bráne firewall.

$ sudo firewall-cmd --permanent --list-services

Mal by zobrazovať nasledujúci výstup.

cockpit dhcpv6-client ssh

Povoliť porty HTTP a HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Znova skontrolujte stav brány firewall.

$ sudo firewall-cmd --permanent --list-services

Mali by ste vidieť podobný výstup.

cockpit dhcpv6-client http https ssh

Ak chcete povoliť zmeny, znova načítajte bránu firewall.

$ sudo firewall-cmd --reload

Krok 2 - Nainštalujte PHP a jeho rozšírenia

Rocky Linux 9 sa štandardne dodáva s PHP 8.1. Ak chcete vždy zostať na najnovšej verzii PHP alebo ak chcete nainštalovať viacero verzií PHP, musíme použiť úložisko REMI.

Prvým krokom je získať úložisko Epel.

$ sudo dnf install epel-release -y

Ďalej nainštalujte úložisko Remi.

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Skontrolujte dostupné streamy PHP.

$ dnf module list php -y
Name    Stream              Profiles                                      Summary
php     8.1                 common [d], devel, minimal                    PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name    Stream              Profiles                                      Summary
php     remi-7.4            common [d], devel, minimal                    PHP scripting language
php     remi-8.0            common [d], devel, minimal                    PHP scripting language
php     remi-8.1            common [d], devel, minimal                    PHP scripting language
php     remi-8.2            common [d], devel, minimal                    PHP scripting language
php     remi-8.3            common [d], devel, minimal                    PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Predvolená verzia je 8.1. V čase písania tohto návodu je Magento kompatibilné s PHP 8.2. Preto povoľte úložisko Remiho PHP 8.2.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2

Môžete ho nainštalovať a rozšírenia požadované Magento spustením nasledujúceho príkazu.

$ sudo dnf install php-fpm php-cli php-mysql php-mbstring php-xml php-gd php-bcmath php-zip php-curl php-tidy php-intl php-soap php-opcache php-xsl php-sodium

Overte inštaláciu.

$ php --version
PHP 8.2.15 (cli) (built: Jan 16 2024 12:19:32) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.15, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.15, Copyright (c), by Zend Technologies

Krok 3 - Nainštalujte Composer

Composer je nástroj na správu závislostí pre PHP a je potrebný pre inštaláciu Magento.

Spustite nasledujúce príkazy na stiahnutie binárneho súboru Composer. Magento vyžaduje Composer 2.2 LTS, preto sme príkaz zodpovedajúcim spôsobom upravili.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"

Nainštalujte Composer presunutím binárneho súboru do adresára /usr/local/bin.

$ sudo mv composer.phar /usr/local/bin/composer

Overte inštaláciu kontrolou jej verzie.

$ composer --version
Composer version 2.2.22 2023-09-29 10:53:45

Krok 4 - Nainštalujte MariaDB

Rocky Linux 9 sa dodáva so staršou verziou MariaDB. Preto na inštaláciu použijeme úložisko MariaDB. V čase písania tohto návodu Magento podporuje MariaDB 10.6, čo je to, čo nainštalujeme.

Importujte kľúč GPG od MariaDB.

$ sudo rpm --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY

Vytvorte a otvorte súbor /etc/yum.repos.d/mariadb.repo na úpravu.

$ sudo nano /etc/yum.repos.d/mariadb.repo

Vložte do nej nasledujúci kód.

[mariadb]
name = MariaDB
baseurl = https://rpm.mariadb.org/10.6/rhel/$releasever/$basearch
gpgkey= https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.

$ sudo dnf install MariaDB-server

Skontrolujte verziu MySQL.

$ mysql --version
mysql  Ver 15.1 Distrib 10.6.16-MariaDB, for Linux (x86_64) using  EditLine wrapper

Povoľte a spustite službu MariaDB.

$ sudo systemctl enable mariadb --now

Spustite skript zabezpečenej inštalácie MariaDB.

$ sudo mariadb-secure-installation

Budete požiadaní o heslo používateľa root. Stlačte Enter, pretože sme preň nenastavili žiadne heslo.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):

Ďalej sa vás spýta, či chcete prejsť na metódu autentifikácie soketu Unix. Doplnok unix_socket vám umožňuje použiť prihlasovacie údaje operačného systému na pripojenie k serveru MariaDB. Keďže už máte chránený účet root, pokračujte zadaním n.

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n

Ďalej sa vás spýta, či chcete zmeniť heslo používateľa root. Zadajte Y, aby ste mohli pokračovať ďalej a zmeňte svoje root heslo na silné a bezpečné.

 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

Ďalej sa vám spýtajú určité otázky na zlepšenie zabezpečenia MariaDB. Ak chcete odstrániť anonymných používateľov, zakázať vzdialené prihlásenia root, odstrániť testovaciu databázu a znova načítať tabuľky privilégií, zadajte Y.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Do prostredia MariaDB môžete vstúpiť zadaním sudo mysql alebo sudo mariadb na príkazovom riadku.

Krok 5 – Nakonfigurujte MariaDB

Prihláste sa do prostredia MariaDB.

$ sudo mariadb

Vytvorte databázu pre Magento.

MariaDB > CREATE DATABASE magento;

Vytvorte si používateľské konto SQL.

MariaDB > CREATE USER 'magentouser'@'localhost' IDENTIFIED BY 'Your_password2';

Udeľte používateľovi všetky privilégiá k databáze.

MariaDB > GRANT ALL PRIVILEGES ON magento.* TO 'magentouser'@'localhost';

Vyprázdniť používateľské práva.

MariaDB > FLUSH PRIVILEGES;

Opustite škrupinu.

MariaDB > exit

Krok 6 - Nainštalujte Nginx

Rocky Linux 9 sa dodáva so staršou verziou Nginx. Na inštaláciu najnovšej verzie musíte použiť oficiálne úložisko Nginx.

Vytvorte a otvorte súbor /etc/yum.repos.d/nginx.repo na úpravu.

$ sudo nano /etc/yum.repos.d/nginx.repo

Vložte do nej nasledujúci kód.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Po dokončení uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.

Budeme inštalovať hlavnú líniu Nginx, takže pre ňu povoľte balík.

$ sudo dnf config-manager --enable nginx-mainline

Nainštalujte Nginx.

$ sudo dnf install nginx -y

Overte inštaláciu.

$ nginx -v
nginx version: nginx/1.25.3

Povoľte a spustite službu servera Nginx.

$ sudo systemctl enable nginx --now

Skontrolujte stav služby.

? nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
    Drop-In: /etc/systemd/system/nginx.service.d
             ??php-fpm.conf
     Active: active (running) since Fri 2024-01-26 06:46:17 UTC; 1s ago
       Docs: http://nginx.org/en/docs/
    Process: 19765 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 19767 (nginx)
      Tasks: 3 (limit: 12225)
     Memory: 3.1M
        CPU: 16ms
     CGroup: /system.slice/nginx.service
             ??19767 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??19768 "nginx: worker process"
             ??19769 "nginx: worker process"

Krok 7 – Nainštalujte SSL

Na vygenerovanie certifikátu SSL musíme nainštalovať Certbot. Použijeme na to inštalačný program balíkov Snapd. Keďže Rocky Linux sa s ním nedodáva, nainštalujte si inštalačný program Snapd. Na fungovanie vyžaduje úložisko EPEL (Extra Packages for Enterprise Linux). Ale keďže sme ho už nainštalovali v kroku 3, môžeme priamo pokračovať.

Nainštalujte balík Snapd.

$ sudo dnf install -y snapd

Povoľte a spustite službu Snap.

$ sudo systemctl enable snapd --now

Nainštalujte hlavný balík Snap a uistite sa, že vaša verzia Snapd je aktuálna.

$ sudo snap install core && sudo snap refresh core

Vytvorte potrebné prepojenia, aby Snapd fungoval.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Nainštalujte Certbot.

$ sudo snap install --classic certbot

Pomocou nasledujúceho príkazu zaistite spustenie príkazu Certbot vytvorením symbolického odkazu na adresár /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Overte, či Certbot funguje správne.

$ certbot --version
certbot 2.8.0

Spustite nasledujúci príkaz na vygenerovanie certifikátu SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email  -d magento.example.com

Vyššie uvedený príkaz stiahne certifikát do adresára /etc/letsencrypt/live/magento.example.com na vašom serveri.

Vygenerujte certifikát Diffie-Hellman group.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Skontrolujte službu plánovača obnovy Certbot.

$ sudo systemctl list-timers

Ako jednu zo služieb naplánovaných na spustenie nájdete snap.certbot.renew.service.

NEXT                        LEFT         LAST                        PASSED    UNIT                         ACTIVATES     
-------------------------------------------------------------------------------------------------------------------------------
Fri 2024-01-26 08:05:24 UTC 1h 1min left Fri 2024-01-26 06:35:00 UTC 29min ago dnf-makecache.timer          dnf-makecache.service
Fri 2024-01-26 14:20:42 UTC 7h left      Thu 2024-01-25 14:20:42 UTC 16h ago   systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fri 2024-01-26 22:37:00 UTC 15h left     -                           -         snap.certbot.renew.timer     snap.certbot.renew.service

Vykonajte suchý chod procesu a skontrolujte, či obnovenie SSL funguje správne.

$ sudo certbot renew --dry-run

Ak nevidíte žiadne chyby, všetko je nastavené. Váš certifikát sa automaticky obnoví.

Krok 8 - Nainštalujte Elasticsearch

Elasticsearch používa Magento na vyhľadávanie produktov. Elasticsearch 7.x nainštalujeme pomocou jeho oficiálneho úložiska, pretože je to verzia, ktorá je kompatibilná s Magento 2.4.6, čo je najnovšia dostupná verzia. Na stránke požiadaviek sa spomína aj Elasticsearch 8.5, ale nefunguje správne s Magento.

Importujte kľúč GPG spoločnosti Elasticsearch.

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Vytvorte súbor s názvom elasticsearch.repo v adresári /etc/yum.repos.d/ a otvorte ho na úpravu.

$ sudo nano /etc/yum.repos.d/elasticsearch.repo

Vložte do nej nasledujúci kód.

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

Po dokončení uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.

Nainštalujte Elasticsearch.

$ sudo dnf install --enablerepo=elasticsearch elasticsearch

Elasticsearch využíva veľa pamäte. Jeho používanie musíte obmedziť v závislosti od veľkosti vášho servera. Vytvorte súbor /etc/elasticsearch/jvm.options.d/memory.options a otvorte ho na úpravu.

$ sudo nano /etc/elasticsearch/jvm.options.d/memory.options

Vložte do nej nasledujúci kód. Upravte hodnoty podľa veľkosti vášho servera. Prvá hodnota sa vzťahuje na počiatočnú pamäť a druhá na maximálnu dostupnú pamäť. Pre 1 GB a viac použite formát -Xms1g.

-Xms512m
-Xmx784m

Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y. Toto nakonfiguruje Elasticsearch tak, aby používal 1 GB RAM. Upravte ho podľa svojich požiadaviek a špecifikácií servera.

Spustite a povoľte službu.

$ sudo systemctl enable elasticsearch --now

Skontrolujte, či funguje Elasticsearch.

$ curl http://localhost:9200

Mali by ste vidieť nasledujúci výstup.

{
  "name" : "magento.example.com",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "saBfw0F_Tam6ayGjXr6pEA",
  "version" : {
    "number" : "7.17.17",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "aba4da413a368e296dfc64fb20897334d0340aa1",
    "build_date" : "2024-01-18T10:05:03.821431920Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Krok 9 - Nainštalujte server Redis

Magento používa Redis na ukladanie relácií a vyrovnávacej pamäte. Je to úplne voliteľné a databázu môžete použiť na ukladanie relácií. Ale Redis odvádza lepšiu prácu. Najnovšia verzia Magento funguje s Redis 7.0. Rocky Linux sa dodáva s Redis 6.0, takže na inštaláciu použijeme úložisko Remi.

Úložisko Remi sme už nainštalovali pri inštalácii PHP v kroku 2. Vypíšte všetky dostupné moduly Redis.

$ dnf module list redis
Name                               Stream           Profiles                   Summary                                                                  
redis                              7                common [d]                 Redis persistent key-value database                                    
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name                               Stream           Profiles                   Summary                             
redis                              remi-5.0         common [d]                 Redis persistent key-value database 
redis                              remi-6.0         common [d]                 Redis persistent key-value database 
redis                              remi-6.2         common [d]                 Redis persistent key-value database 
redis                              remi-7.0         common [d]                 Redis persistent key-value database 
redis                              remi-7.2         common [d]                 Redis persistent key-value database 

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Povoliť Redis 7.0.

$ sudo dnf module enable -y redis:remi-7.0

Ak chcete nainštalovať server Redis, zadajte nasledujúci príkaz.

$ sudo dnf install redis

Potvrďte verziu Redis.

$ redis-server -v
Redis server v=7.0.15 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=77c9855172eb54e9

Povoľte a spustite službu Redis.

$ sudo systemctl enable redis --now

Overíme pripojenie služby pomocou nasledujúceho príkazu.

$ redis-cli

Prepnete sa do prostredia Redis.

Prvým krokom je nastavenie hesla pre predvoleného používateľa Redis. Nahraďte Your_Redis_Password silným heslom podľa vlastného výberu. Uistite sa, že pred heslom je znak >.

127.0.0.1:6379> acl setuser default >Your_Redis_Password

Otestujte overenie Redis.

127.0.0.1:6379> AUTH Your_Redis_Password
OK

Pingujte službu.

127.0.0.1:6379> ping
PONG

Ukončite službu zadaním exit.

Krok 10 - Stiahnite si Magento

Vytvorte koreňový webový adresár pre Magento.

$ sudo mkdir /var/www/html/magento -p

Udeľte práva na Magento adresár aktuálnemu užívateľovi.

$ sudo chown $USER:$USER /var/www/html/magento/ -R

Predtým, ako sa posunieme ďalej, potrebujete autentifikačné kľúče vyžadované úložiskom Magento. Navštívte webovú stránku https://commercemarketplace.adobe.com/, kliknite na odkaz Prihlásiť sa vpravo hore a zobrazí sa nasledujúca stránka s výzvou na prihlásenie pomocou vášho Adobe ID.

Kliknutím na tlačidlo Prihlásiť sa pomocou Adobe ID prejdete na nasledujúcu stránku.

Ak máte Adobe ID, zadajte svoje poverenia a pokračujte alebo si tu vytvorte účet. Po vytvorení účtu a prihlásení otvorte adresu URL https://commercemarketplace.adobe.com/customer/accessKeys/. Na túto stránku sa dostanete aj tak, že navštívite svoj profil ( https://commercemarketplace.adobe.com/customer/account/) a kliknete na odkaz Prístupové kľúče.

Kliknutím na tlačidlo Vytvoriť nový prístupový kľúč vytvorte svoj overovací kľúč. Zadajte meno kľúča na identifikáciu.

Poznamenajte si verejný aj súkromný kľúč pre ďalší krok.

Vytvorte súbor ~/.config/composer/auth.json a otvorte ho na úpravy.

$ nano ~/.config/composer/auth.json

Vložte do nej nasledujúci kód. Pre meno používateľa použite verejný kľúč a pre heslo súkromný kľúč.

{
"http-basic": {
        "repo.magento.com": {
                   "username": "<public_key>",
                   "password": "<private_key>"
              }

}
}

Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.

Prepnite sa do adresára /var/www/html/magento.

$ cd /var/www/html/magento

Vytvorte projekt Magento. Všimnite si bodku na konci príkazu. Odkazuje na aktuálny adresár, v ktorom je príkaz spustený.

$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .

Mali by ste vidieť podobný výstup.

Creating a "magento/project-community-edition" project at "./"
Installing magento/project-community-edition (2.4.6-p3)
  - Downloading magento/project-community-edition (2.4.6-p3)
  - Installing magento/project-community-edition (2.4.6-p3): Extracting archive
Created project in /var/www/html/magento/.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 566 installs, 0 updates, 0 removals
  - Locking 2tvenom/cborencode (1.0.2)
  - Locking adobe-commerce/adobe-ims-metapackage (2.2.0)
  - Locking allure-framework/allure-codeception (v2.3.0)
  - Locking allure-framework/allure-php-commons (v2.3.1)
  - Locking allure-framework/allure-phpunit (v2.1.0)
...............................................

Spustite nasledujúce príkazy, aby ste nastavili povolenia súboru a spravili spustiteľný binárny súbor Magento. Tiež nastavte vlastníka adresára Magento na používateľa Nginx, aby mal prístup na webovú stránku.

$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .
$ sudo chmod u+x bin/magento

Krok 11 - Nainštalujte Magento

Uistite sa, že ste v adresári Magento.

$ cd /var/www/html/magento

Ak chcete nainštalovať Magento, spustite nasledujúci príkaz.

$ bin/magento setup:install \
--base-url=http://magento.example.com \
--use-secure=1 \
--base-url-secure=https://magento.example.com \
--use-secure-admin=1 \
--db-host=127.0.0.1 \
--db-name=magento \
--db-user=magentouser \
--db-password=Your_password2 \
--admin-firstname=Navjot \
--admin-lastname=Singh \
[email  \
--admin-user=navjot \
--admin-password=admin_password \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--elasticsearch-host=http://127.0.0.1 \
--elasticsearch-port=9200 \
--session-save=redis \
--session-save-redis-db=0 \
--session-save-redis-password=redis_password \
--cache-backend=redis \
--cache-backend-redis-db=2 \
--cache-backend-redis-password=redis_password \
--page-cache=redis \
--page-cache-redis-db=4 \
--page-cache-redis-password=redis_password

Po dokončení procesu získate podobný výstup.

.......
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_l5pv1h
Nothing to import.

Poznačte si identifikátor URI správcu, ktorý budete neskôr potrebovať na prístup k panelu správy.

Vytvárajte úlohy cronu Magento.

$ php bin/magento cron:install

Overte úlohu cron.

$ crontab -l

Mali by ste vidieť nasledujúci výstup.

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

Krok 12 – Nakonfigurujte PHP-FPM

Otvorte súbor /etc/php-fpm.d/www.conf.

$ sudo nano /etc/php-fpm.d/www.conf

Musíme nastaviť unixového užívateľa/skupinu PHP procesov na nginx. Nájdite v súbore riadky user=apache a group=apache a zmeňte ich na nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx 
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Nájdite v súbore riadky listen.owner=nikto, listen.group=nikto, listen.mode=0660 a zmeňte ich takto odkomentovať ich.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx 
listen.group = nginx 
listen.mode = 0660

Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.

Zvýšte čas vykonania na 180 sekúnd.

$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php.ini

Zvýšte limit pamäte pre PHP-FPM z 128 MB na 512 MB. Limit môžete zvýšiť v závislosti od veľkosti vášho servera a požiadaviek.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php.ini

Magento predvolene nastavuje limit veľkosti súboru pre knižnicu médií na 2 MB. Spustite nasledujúce príkazy na zvýšenie limitu veľkosti súboru na 25 MB.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 25M/g' /etc/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 25M/g' /etc/php.ini

Zapnite kompresiu Zlib.

$ sudo sed -i 's/zlib.output_compression = Off/zlib.output_compression = On/g' /etc/php.ini

Zvýšte konfiguráciu realpath_cache podľa obrázka.

$ sudo sed -i 's/;realpath_cache_size = 4096k/realpath_cache_size = 10M/g' /etc/php.ini
$ sudo sed -i 's/;realpath_cache_ttl = 120/realpath_cache_ttl = 7200/g' /etc/php.ini

Otvorte súbor /etc/php.d/10-opcache.ini na úpravu.

$ sudo nano /etc/php.d/10-opcache.ini

Nájdite riadok ;opcache.save_comments=1 a odkomentujte ho podľa obrázka.

opcache.save_comments=1

Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.

Reštartujte službu PHP-FPM.

$ sudo systemctl restart php-fpm

Zmeňte skupinu adresára PHP sessions na Nginx.

$ sudo chgrp -R nginx /var/lib/php/session

Krok 13 – Nakonfigurujte SELinux

Ak chcete zmeniť kontext zabezpečenia pre adresár Magento, spustite nasledujúce príkazy.

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/app/etc(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/var(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/pub/media(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/pub/static(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/generated(/.*)?'
$ sudo restorecon -Rv '/var/www/html/magento/'

Použite túto politiku, aby ste umožnili vytváranie pripojení k externým hostiteľom.

$ sudo setsebool -P httpd_can_network_connect 1

Použite politiku, aby ste Nginxu umožnili prístup k PostgreSQL.

$ sudo setsebool -P httpd_can_network_connect_db 1

Krok 14 - Nakonfigurujte Nginx

Otvorte súbor /etc/nginx/nginx.conf na úpravu.

$ sudo nano /etc/nginx/nginx.conf

Pridajte nasledujúci riadok pred riadok include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size 64;

Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.

Vytvorte a otvorte súbor /etc/nginx/conf.d/magento.conf na úpravu.

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

Vložte do nej nasledujúci kód.

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

server {
  # Redirect any http requests to https
  listen 80;
  listen [::]:80;
  server_name magento.example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name magento.example.com;

  set $MAGE_ROOT /var/www/html/magento;
  include /var/www/html/magento/nginx.conf.sample;
  client_max_body_size 25m;

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

  # TLS configuration
  ssl_certificate /etc/letsencrypt/live/magento.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/magento.example.com/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/magento.example.com/chain.pem;
  ssl_protocols TLSv1.2 TLSv1.3;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:50m;
  ssl_session_timeout 1d;

  # OCSP Stapling ---
  # fetch OCSP records from URL in ssl_certificate and cache them
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;
}

Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.

Magento prichádza s konfiguračnou šablónou Nginx na adrese /var/www/magento/nginx.conf.sample, ktorú sme zahrnuli do našej konfigurácie. Premenná $MAGE_ROOT ukazuje na webový koreňový adresár Magento, ktorý sme nastavili v našom súbore a ktorý sa používa vo vzorovom konfiguračnom súbore.

Overte syntax konfiguračného súboru Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reštartujte službu Nginx.

$ sudo systemctl restart nginx

Otvorte webovú stránku Magento prostredníctvom adresy URL https://magento.example.com. Mali by ste vidieť nasledujúcu stránku.

Ak sa CSS a JS nenačítajú, spustite nasledujúce príkazy.

$ cd /var/www/html/magento
$ sudo php bin/magento setup:static-content:deploy -f
$ sudo php bin/magento indexer:reindex

Krok 15 - Zakážte dvojfaktorové overenie

Pred prístupom k administračnému panelu musíme deaktivovať štandardne povolenú dvojfaktorovú autentifikáciu. Magento sa pokúša odosielať poštu cez sendmail, aby sa umožnilo dvojfaktorové overenie počas inštalácie, ale keďže sme to nenakonfigurovali, jediný spôsob, ako získať prístup k dashboardu, je najskôr túto funkciu zakázať.

Ak máte na serveri nakonfigurovaný sendmail na odosielanie e-mailov, môžete tento krok preskočiť. Musíme deaktivovať dva moduly Magento pomocou nasledujúcich príkazov, aby sme zakázali dvojfaktorovú autentifikáciu.

$ sudo php /var/www/html/magento/bin/magento module:disable Magento_AdminAdobeImsTwoFactorAuth
$ sudo php /var/www/html/magento/bin/magento module:disable Magento_TwoFactorAuth

Spustite nasledujúci príkaz na vytvorenie tried.

$ sudo php /var/www/html/magento/bin/magento setup:di:compile

Vyčistite aj vyrovnávaciu pamäť.

$ sudo php /var/www/html/magento/bin/magento c:c

Krok 16 – Vstúpte do Administračného portálu

Administračný portál musíte otvoriť pomocou URI, ktoré vám dal inštalačný skript Magento. Ak ste si ho nejako zabudli poznačiť alebo ste ho stratili, môžete identifikátor URI znova získať pomocou nasledujúceho príkazu.

$ php /var/www/magento/bin/magento info:adminuri
Admin URI: /admin_l5pv1h

Otvorte URL https://magento.example.com/admin_l5pv1h vo svojom prehliadači a dostanete nasledujúcu obrazovku.

Zadajte poverenia správcu, ktoré ste poskytli počas inštalácie, a pokračujte kliknutím na tlačidlo Prihlásiť sa. Uvíta vás nasledujúca obrazovka.

Zobrazí sa kontextové okno so žiadosťou o povolenie, aby spoločnosť Adobe zhromažďovala údaje o používaní. Pokračujte kliknutím na tlačidlo Nepovoliť.

Ďalším krokom je konfigurácia SMTP pre e-maily, aby sme mohli znova povoliť dvojfaktorové overenie. Navštívte ponuku Obchody >> Konfigurácia.

Na ľavej strane rozbaľte Ponuku Rozšírené a kliknutím na možnosť Systémy otvorte stránku nastavení e-mailu.

Zrušte začiarknutie políčka Použiť systémovú hodnotu pred možnosťami Transport, Host a Port. Kliknite na rozbaľovaciu ponuku Transport a vyberte SMTP. Pre náš tutoriál používame ako poštovú schránku Amazon SES.

Zadajte svojho hostiteľa SMTP 587 ako port, používateľské meno a heslo, nastavte Auth na LOGIN a nastavte SSL na TLS< v daných poliach. Po dokončení kliknite na tlačidlo Uložiť konfiguráciu. Teraz, keď sme nakonfigurovali nastavenia e-mailu, ďalším krokom je konfigurácia e-mailových ID obchodu, aby sme ich mohli otestovať.

Posuňte zobrazenie nahor, rozbaľte ponuku Všeobecné na tej istej stránke a vyberte možnosť Uložiť e-mailové adresy.

Zrušte začiarknutie predvolených polí E-mail odosielateľa a zadajte e-mailové ID vášho obchodu. Po dokončení kliknite na tlačidlo Uložiť konfiguráciu. Podobne otvorte obrazovku Kontakty, vykonajte rovnaké zmeny a kliknutím na tlačidlo Uložiť konfiguráciu to dokončite.

Zmena možností správcu môže ovplyvniť vyrovnávaciu pamäť a zobrazí sa upozornenie. Spustite nasledujúci príkaz na manuálne vymazanie vyrovnávacej pamäte.

$ sudo php /var/www/html/magento/bin/magento c:c

Ak chcete otestovať e-maily, navštívte stránku obchodu a otvorte stránku Kontaktujte nás. Na prístup k nemu môžete priamo použiť adresu URL https://magento.example.com/contact/. Pošlite testovaciu správu a kliknite na tlačidlo Odoslať. Mali by ste dostať podobný mail.

Krok 17 – Povoľte a nakonfigurujte dvojfaktorové overenie

Teraz, keď sme povolili SMTP mailer, je čas znova povoliť dvojfaktorové overenie. Ak chcete povoliť dvojfaktorové overenie, spustite nasledujúce príkazy.

$ sudo php /var/www/html/magento/bin/magento module:enable Magento_AdminAdobeImsTwoFactorAuth
$ sudo php /var/www/html/magento/bin/magento module:enable Magento_TwoFactorAuth

Aktualizujte nastavenie modulov.

$ sudo php /var/www/html/magento/bin/magento setup:upgrade

Spustite nasledujúci príkaz na vytvorenie tried.

$ sudo php /var/www/html/magento/bin/magento setup:di:compile

Vyčistite aj vyrovnávaciu pamäť.

$ sudo php /var/www/html/magento/bin/magento c:c

Ak nemáte prístup do oblasti správcu, spustite aj nasledujúce príkazy.

Vynútiť nasadenie statického obsahu.

$ sudo php /var/www/html/magento/bin/magento setup:static-content:Deploy -f

Nastavte oprávnenia súboru.

$ cd /var/www/html/magento
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .

Navštívte portál správcu a dostanete nasledujúcu obrazovku.

Budeme používať metódu Google Authenticator. Môžete použiť hardvérový kľúč, ak ho máte. Metóda Google Authenticator funguje s akoukoľvek aplikáciou TOTP vrátane Authy, 1Password, Bitwarden, Microsoft Authenticator atď. Pokračujte kliknutím na tlačidlo Použiť.

Na ďalšej stránke získate QR kód, ktorý naskenujete pomocou aplikácie 2FA. Zadajte podrobnosti do svojej aplikácie a skopírujte vygenerovaný kód do poľa Authenticator code. Kliknutím na tlačidlo Potvrdiť prejdite na ovládací panel správcu.

Záver

Toto uzatvára náš návod na inštaláciu stránky elektronického obchodu Magento na server Rocky Linux 9 so serverom Nginx a Elasticsearch. Ak máte nejaké otázky, napíšte ich do komentárov nižšie.