Ինչպես տեղադրել Magento eCommerce Suite-ը Rocky Linux 9-ում Elasticsearch-ով


Այս էջում

  1. Նախադրյալներ
  2. Քայլ 1 - Կարգավորել Firewall-ը
  3. Քայլ 2 - Տեղադրեք PHP-ն և դրա ընդլայնումները
  4. Քայլ 3 - Տեղադրեք Composer-ը
  5. Քայլ 4 - Տեղադրեք MariaDB
  6. Քայլ 5 - Կարգավորեք MariaDB
  7. Քայլ 6 - Տեղադրեք Nginx
  8. Քայլ 7 - Տեղադրեք SSL-ը
  9. Քայլ 8 - Տեղադրեք Elasticsearch-ը
  10. Քայլ 9 - Տեղադրեք Redis սերվերը
  11. Քայլ 10 - Ներբեռնեք Magento-ն
  12. Քայլ 11 - Տեղադրեք Magento-ն
  13. Քայլ 12 - Կարգավորեք PHP-FPM
  14. Քայլ 13 - Կարգավորեք SELinux-ը
  15. Քայլ 14 - Կարգավորեք Nginx-ը
  16. Քայլ 15 - Անջատեք երկու գործոնով իսկությունը
  17. Քայլ 16 - Մուտք գործեք կառավարման պորտալ
  18. Քայլ 17 - Միացնել և կարգավորել երկգործոն նույնականացումը
  19. Եզրակացություն

Magento-ն բաց կոդով էլեկտրոնային առևտրի հարթակ է, որը գրված է PHP-ով: Այն ձեռք է բերվել Adobe-ի կողմից 2018 թվականին: Այն նաև առաջարկվում է որպես առևտրային և ամպի վրա հիմնված արտադրանք: Դուք կարող եք օգտագործել Magento-ն՝ ստեղծելու բարձր հզորությամբ պրոֆեսիոնալ գնումների կայքեր: Այն առաջարկում է և՛ մեկ խանութ, և՛ մի քանի խանութի ռեժիմ: Այն գալիս է բազմաթիվ մոդուլներով՝ իր ֆունկցիոնալությունը ընդլայնելու համար:

Այս ձեռնարկում մենք կտեղադրենք Magento բաց կոդով համայնքի հրատարակությունը: Այն առաջարկում է բոլոր գործառույթները, որոնք անհրաժեշտ են պրոֆեսիոնալ առցանց խանութ ստեղծելու համար: Մենք նաև կտեղադրենք Elasticsearch-ը ապրանքների կատալոգի, Redis-ի նիստի և ֆայլերի քեշի միջոցով որոնելու և այն Nginx սերվերի միջոցով սպասարկելու համար:

Նախադրյալներ

    Rocky Linux 9-ով աշխատող սերվեր՝ նվազագույնը 2 ԳԲ օպերատիվ հիշողությամբ: Ձեզ կարող է անհրաժեշտ լինել ավելի շատ RAM՝ կախված ձեր պահանջներից:

    Ոչ արմատային օգտատեր՝ sudo արտոնություններով:

    Լիովին որակավորված տիրույթի անուն (FQDN) սերվերի համար, magento.example.com

    Համոզվեք, որ ամեն ինչ թարմացվում է:

    $ sudo dnf update
    

    Մի քանի փաթեթներ, որոնք անհրաժեշտ են ձեր համակարգին:

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

    Այս փաթեթներից որոշները կարող են արդեն տեղադրված լինել ձեր համակարգում:

Քայլ 1 - Կարգավորել Firewall-ը

Առաջին քայլը firewall-ի կազմաձևումն է: Rocky Linux-ն օգտագործում է Firewalld Firewall-ը: Ստուգեք firewall-ի կարգավիճակը:

$ sudo firewall-cmd --state
running

Firewall-ը աշխատում է տարբեր գոտիների հետ, և հանրային գոտին լռելյայն է, որը մենք կօգտագործենք: Թվարկեք բոլոր ծառայություններն ու նավահանգիստները, որոնք ակտիվ են firewall-ում:

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

Այն պետք է ցույց տա հետևյալ արդյունքը.

cockpit dhcpv6-client ssh

Թույլատրել HTTP և HTTPS պորտերը:

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

Կրկին ստուգեք firewall-ի կարգավիճակը:

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

Դուք պետք է տեսնեք նմանատիպ արդյունք:

cockpit dhcpv6-client http https ssh

Փոփոխությունները միացնելու համար վերաբեռնեք firewall-ը:

$ sudo firewall-cmd --reload

Քայլ 2 - Տեղադրեք PHP-ն և դրա ընդլայնումները

Rocky Linux 9-ը լռելյայն մատակարարվում է PHP 8.1-ով: Որպեսզի միշտ մնանք PHP-ի վերջին տարբերակում կամ եթե ցանկանում եք տեղադրել PHP-ի մի քանի տարբերակներ, մենք պետք է օգտագործենք REMI պահոցը:

Առաջին քայլը Epel-ի պահոցը գրավելն է:

$ sudo dnf install epel-release -y

Հաջորդը, տեղադրեք Remi պահեստը:

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

Ստուգեք առկա 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

Նախնական տարբերակը 8.1 է: Այս ձեռնարկը գրելու պահին Magento-ն համատեղելի է PHP 8.2-ի հետ: Հետևաբար, միացրեք Remi-ի PHP 8.2 պահեստը:

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

Դուք կարող եք տեղադրել այն և Magento-ի կողմից պահանջվող ընդարձակումները՝ գործարկելով հետևյալ հրամանը.

$ 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

Ստուգեք տեղադրումը:

$ 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

Քայլ 3 - Տեղադրեք Composer-ը

Կոմպոզիտորը PHP-ի համար կախվածության կառավարման գործիք է և պահանջվում է Magento-ի տեղադրման համար:

Կոմպոզիտորի երկուականը ներբեռնելու համար գործարկեք հետևյալ հրամանները: Magento-ն պահանջում է Composer 2.2 LTS, այնպես որ մենք համապատասխանաբար փոփոխել ենք հրամանը:

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

Տեղադրեք Composer-ը՝ երկուականը տեղափոխելով /usr/local/bin գրացուցակ:

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

Ստուգեք տեղադրումը` ստուգելով դրա տարբերակը:

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

Քայլ 4 - Տեղադրեք MariaDB

Rocky Linux 9-ը մատակարարվում է MariaDB-ի ավելի հին տարբերակով: Հետևաբար, տեղադրման համար մենք կօգտագործենք MariaDB-ի պահոցը: Այս ձեռնարկը գրելու պահին Magento-ն աջակցում է MariaDB 10.6, ինչը մենք կտեղադրենք:

Ներմուծեք MariaDB-ի GPG բանալին:

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

Ստեղծեք և բացեք /etc/yum.repos.d/mariadb.repo ֆայլը խմբագրման համար:

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

Դրա մեջ տեղադրեք հետևյալ կոդը.

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

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

$ sudo dnf install MariaDB-server

Ստուգեք MySQL-ի տարբերակը:

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

Միացնել և գործարկել MariaDB ծառայությունը:

$ sudo systemctl enable mariadb --now

Գործարկեք MariaDB անվտանգ տեղադրման սցենարը:

$ sudo mariadb-secure-installation

Ձեզանից կպահանջվի root գաղտնաբառը: Սեղմեք Enter, քանի որ մենք դրա համար գաղտնաբառ չենք սահմանել:

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):

Հաջորդը, ձեզ կհարցնեն, թե արդյոք ցանկանում եք անցնել Unix վարդակից նույնականացման մեթոդին: unix_socket հավելվածը թույլ է տալիս օգտագործել ձեր օպերացիոն համակարգի հավատարմագրերը MariaDB սերվերին միանալու համար: Քանի որ դուք արդեն ունեք պաշտպանված արմատային հաշիվ, շարունակելու համար մուտքագրեք 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

Հաջորդը, ձեզ կհարցնեն, թե արդյոք ցանկանում եք փոխել ձեր արմատային գաղտնաբառը: Մուտքագրեք Y՝ շարունակելու համար և փոխեք ձեր արմատային գաղտնաբառը՝ դարձնելով ուժեղ և անվտանգ:

 ... 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!

Հաջորդը ձեզ որոշակի հարցեր կուղղվեն MariaDB-ի անվտանգությունը բարելավելու համար: Մուտքագրեք 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!

Դուք կարող եք մուտք գործել MariaDB վահանակ՝ հրամանի տողում մուտքագրելով sudo mysql կամ sudo mariadb:

Քայլ 5 - Կարգավորեք MariaDB

Մուտք գործեք MariaDB կեղև:

$ sudo mariadb

Ստեղծեք տվյալների բազա Magento-ի համար:

MariaDB > CREATE DATABASE magento;

Ստեղծեք SQL օգտվողի հաշիվ:

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

Տվյալների բազայի բոլոր արտոնությունները տրամադրեք օգտագործողին:

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

Լվացեք օգտվողի արտոնությունները:

MariaDB > FLUSH PRIVILEGES;

Դուրս եկեք պատյանից:

MariaDB > exit

Քայլ 6 - Տեղադրեք Nginx

Rocky Linux 9-ը մատակարարվում է Nginx-ի ավելի հին տարբերակով: Վերջին տարբերակը տեղադրելու համար անհրաժեշտ է օգտագործել պաշտոնական Nginx պահոցը:

Ստեղծեք և բացեք ֆայլը /etc/yum.repos.d/nginx.repo խմբագրման համար:

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

Դրա մեջ տեղադրեք հետևյալ կոդը.

[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

Ավարտելուց հետո պահեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշվի:

Մենք կտեղադրենք Nginx հիմնական ցանցը, այնպես որ միացրեք փաթեթը դրա համար:

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

Տեղադրեք Nginx-ը:

$ sudo dnf install nginx -y

Ստուգեք տեղադրումը:

$ nginx -v
nginx version: nginx/1.25.3

Միացնել և գործարկել Nginx սերվերի ծառայությունը:

$ sudo systemctl enable nginx --now

Ստուգեք ծառայության կարգավիճակը:

? 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"

Քայլ 7 - Տեղադրեք SSL-ը

SSL վկայագիր ստեղծելու համար մենք պետք է տեղադրենք Certbot-ը: Դրա համար մենք կօգտագործենք Snapd փաթեթի տեղադրիչը։ Քանի որ Rocky Linux-ը դրա հետ չի առաքվում, տեղադրեք Snapd տեղադրիչը: Այն պահանջում է EPEL (Extra Packages for Enterprise Linux) պահոցն աշխատելու համար: Բայց քանի որ մենք արդեն տեղադրել ենք այն 3-րդ քայլում, կարող ենք ուղղակիորեն առաջ շարժվել:

Տեղադրեք Snapd փաթեթը:

$ sudo dnf install -y snapd

Միացնել և գործարկել Snap ծառայությունը:

$ sudo systemctl enable snapd --now

Տեղադրեք Snap հիմնական փաթեթը և համոզվեք, որ Snapd-ի ձեր տարբերակը արդիական է:

$ sudo snap install core && sudo snap refresh core

Ստեղծեք անհրաժեշտ հղումներ Snapd-ի աշխատանքի համար:

$ 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

Տեղադրեք Certbot-ը:

$ sudo snap install --classic certbot

Օգտագործեք հետևյալ հրամանը՝ համոզվելու համար, որ Certbot հրամանը կարող է գործարկվել՝ ստեղծելով խորհրդանշական հղում դեպի /usr/bin գրացուցակը:

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

Ստուգեք, արդյոք Certbot-ը ճիշտ է աշխատում:

$ certbot --version
certbot 2.8.0

Գործարկեք հետևյալ հրամանը՝ SSL վկայական ստեղծելու համար:

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

Վերոնշյալ հրամանը վկայական կներբեռնի ձեր սերվերի /etc/letsencrypt/live/magento.example.com գրացուցակում:

Ստեղծեք Diffie-Hellman խումբ վկայագիր:

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

Ստուգեք Certbot-ի նորացման ժամանակացույցի ծառայությունը:

$ sudo systemctl list-timers

Դուք կգտնեք 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

Կատարեք գործընթացի չոր գործարկում՝ ստուգելու, թե արդյոք SSL-ի նորացումը լավ է աշխատում:

$ sudo certbot renew --dry-run

Եթե սխալներ չեք տեսնում, ամեն ինչ պատրաստ է: Ձեր վկայականը ինքնաբերաբար կերկարաձգվի:

Քայլ 8 - Տեղադրեք Elasticsearch-ը

Elasticsearch-ն օգտագործվում է Magento-ի կողմից արտադրանքի որոնումների համար: Մենք կտեղադրենք Elasticsearch 7.x-ը՝ օգտագործելով իր պաշտոնական պահոցը, քանի որ դա այն տարբերակն է, որը համատեղելի է Magento 2.4.6-ի հետ, որը վերջին հասանելի տարբերակն է: Պահանջների էջում նշվում է նաև Elasticsearch 8.5-ը, սակայն այն ճիշտ չի աշխատում Magento-ի հետ:

Ներմուծեք Elasticsearch-ի GPG բանալին:

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

Ստեղծեք elasticsearch.repo անունով ֆայլ /etc/yum.repos.d/ գրացուցակում և բացեք այն խմբագրման համար:

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

Դրա մեջ տեղադրեք հետևյալ կոդը.

[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

Ավարտելուց հետո պահեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշվի:

Տեղադրեք Elasticsearch-ը:

$ sudo dnf install --enablerepo=elasticsearch elasticsearch

Elasticsearch-ը շատ հիշողություն է օգտագործում: Դուք պետք է սահմանափակեք դրա օգտագործումը՝ կախված ձեր սերվերի չափից: Ստեղծեք /etc/elasticsearch/jvm.options.d/memory.options ֆայլը և բացեք այն խմբագրման համար:

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

Դրա մեջ տեղադրեք հետևյալ կոդը. Փոփոխեք արժեքները՝ ըստ ձեր սերվերի չափի: Առաջին արժեքը վերաբերում է սկզբնական հիշողությանը, իսկ երկրորդը վերաբերում է առավելագույն հասանելի հիշողությանը: 1 ԳԲ և ավելիի համար օգտագործեք -Xms1g ձևաչափը:

-Xms512m
-Xmx784m

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է: Սա կարգավորում է Elasticsearch-ը, որպեսզի օգտագործի 1 ԳԲ օպերատիվ հիշողություն: Փոփոխեք այն ըստ ձեր պահանջների և սերվերի բնութագրերի:

Սկսեք և միացրեք ծառայությունը:

$ sudo systemctl enable elasticsearch --now

Ստուգեք, արդյոք Elasticsearch-ը աշխատում է:

$ curl http://localhost:9200

Դուք պետք է տեսնեք հետևյալ արդյունքը.

{
  "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"
}

Քայլ 9 - Տեղադրեք Redis սերվերը

Magento-ն օգտագործում է Redis-ը նստաշրջանի և քեշի պահպանման համար: Այն ամբողջովին ընտրովի է, և դուք կարող եք օգտագործել տվյալների բազան նստաշրջանի պահպանման համար: Բայց Ռեդիսն ավելի լավ է աշխատում: Magento-ի վերջին տարբերակը աշխատում է Redis 7.0-ի հետ: Rocky Linux-ը մատակարարվում է Redis 6.0-ով, ուստի տեղադրման համար մենք կօգտագործենք Remi պահոցը:

Մենք արդեն տեղադրել ենք Remi պահեստը, երբ տեղադրեցինք PHP-ն քայլ 2-ում: Թվարկեք բոլոր հասանելի 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

Միացնել Redis 7.0-ը:

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

Redis սերվերը տեղադրելու համար թողարկեք հետևյալ հրամանը.

$ sudo dnf install redis

Հաստատեք Redis տարբերակը:

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

Միացնել և գործարկել Redis ծառայությունը:

$ sudo systemctl enable redis --now

Եկեք ստուգենք ծառայության կապը՝ օգտագործելով հետևյալ հրամանը.

$ redis-cli

Դուք կփոխանցվեք Redis shell-ին:

Առաջին քայլը Redis-ի լռելյայն օգտագործողի համար գաղտնաբառը սահմանելն է: Փոխարինեք Your_Redis_Password-ը ձեր ընտրած ուժեղ գաղտնաբառով: Համոզվեք, որ գաղտնաբառի նախածանցը դրել եք > նիշով:

127.0.0.1:6379> acl setuser default >Your_Redis_Password

Փորձարկեք Redis նույնականացումը:

127.0.0.1:6379> AUTH Your_Redis_Password
OK

Ping ծառայությունը.

127.0.0.1:6379> ping
PONG

Դուրս եկեք ծառայությունից՝ մուտքագրելով ելք:

Քայլ 10 - Ներբեռնեք Magento-ն

Ստեղծեք վեբ արմատային գրացուցակ Magento-ի համար:

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

Տվեք Magento գրացուցակի իրավունքները ընթացիկ օգտագործողին:

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

Նախքան հետագա շարժվելը, ձեզ հարկավոր է նույնականացման բանալիներ, որոնք պահանջվում են Magento-ի պահոցից: Այցելեք https://commercemarketplace.adobe.com/ կայքը, սեղմեք Մուտք գործեք հղմանը վերևի աջ մասում, և դուք կստանաք հետևյալ էջը, որտեղ խնդրում ենք մուտք գործել: օգտագործելով ձեր Adobe ID-ն:

Սեղմեք Մուտք գործեք Adobe ID-ով կոճակը՝ հետևյալ էջին հասնելու համար:

Եթե ունեք Adobe ID, մուտքագրեք ձեր հավատարմագրերը՝ շարունակելու կամ կարող եք այստեղ հաշիվ ստեղծել: Ձեր հաշիվը ստեղծելուց և մուտք գործելուց հետո բացեք https://commercemarketplace.adobe.com/customer/accessKeys/ URL-ը: Դուք կարող եք նաև մուտք գործել այս էջ՝ այցելելով ձեր պրոֆիլը ( https://commercemarketplace.adobe.com/customer/account/) և սեղմելով Մուտքի բանալիներ հղումը:

Սեղմեք Ստեղծել նոր մուտքի բանալի կոճակը՝ ձեր իսկորոշման բանալին ստեղծելու համար: Անուն տվեք ձեր բանալին նույնականացման համար:

Հաջորդ քայլի համար նշեք և՛ հանրային, և՛ մասնավոր ստեղները:

Ստեղծեք ~/.config/composer/auth.json ֆայլը և բացեք այն խմբագրման համար:

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

Դրա մեջ տեղադրեք հետևյալ կոդը. Օգտվողի անվան համար օգտագործեք հանրային բանալին, իսկ գաղտնաբառի համար՝ անձնական բանալին:

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

}
}

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

Անցեք /var/www/html/magento գրացուցակին:

$ cd /var/www/html/magento

Ստեղծեք Magento նախագիծը: Նշեք հրամանի վերջում ժամանակաշրջանը: Այն վերաբերում է ընթացիկ գրացուցակին, որում գործարկվում է հրամանը:

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

Դուք պետք է տեսնեք նմանատիպ արդյունք:

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)
...............................................

Գործարկեք հետևյալ հրամանները՝ ֆայլի թույլտվությունները սահմանելու և Magento երկուական գործարկելի դարձնելու համար: Բացի այդ, Magento գրացուցակի սեփականատիրոջը սահմանեք Nginx օգտվողին, որպեսզի նա կարողանա մուտք գործել կայք:

$ 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

Քայլ 11 - Տեղադրեք Magento-ն

Համոզվեք, որ դուք գտնվում եք Magento գրացուցակում:

$ cd /var/www/html/magento

Գործարկեք հետևյալ հրամանը՝ Magento-ն տեղադրելու համար։

$ 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

Գործընթացն ավարտվելուց հետո դուք կստանաք նմանատիպ արդյունք:

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

Նշեք ադմինիստրատորի URI-ն, որը ձեզ ավելի ուշ անհրաժեշտ կլինի կառավարման վահանակ մուտք գործելու համար:

Ստեղծեք Magento cron աշխատատեղեր:

$ php bin/magento cron:install

Ստուգեք cron աշխատանքը:

$ crontab -l

Դուք պետք է տեսնեք հետևյալ արդյունքը.

#~ 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

Քայլ 12 - Կարգավորեք PHP-FPM

Բացեք ֆայլը /etc/php-fpm.d/www.conf:

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

Մենք պետք է PHP պրոցեսների Unix օգտվողին/խմբին դնենք nginx: Գտեք user=apache և group=apache տողերը ֆայլում և փոխեք դրանք 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
...

Գտեք listen.owner=nobody, listen.group=nobody, listen.mode=0660 տողերը ֆայլում և փոխեք դրանք հետևյալ կերպ. դրանք չմեկնաբանելով:

; 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

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

Բարձրացրեք կատարման ժամանակը մինչև 180 վայրկյան:

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

Բարձրացրեք PHP-FPM-ի հիշողության սահմանաչափը 128 ՄԲ-ից մինչև 512 ՄԲ: Դուք կարող եք բարձրացնել սահմանը՝ կախված ձեր սերվերի չափից և պահանջներից:

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

Magento-ն լռելյայն սահմանում է մեդիա գրադարանի ֆայլի չափի սահմանաչափը 2 ՄԲ: Գործարկեք հետևյալ հրամանները՝ ֆայլի չափի սահմանաչափը մինչև 25 ՄԲ ավելացնելու համար:

$ 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

Միացրեք Zlib սեղմումը:

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

Բարձրացրեք realpath_cache կոնֆիգուրացիան, ինչպես ցույց է տրված:

$ 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

Բացեք ֆայլը /etc/php.d/10-opcache.ini խմբագրման համար:

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

Գտեք ;opcache.save_comments=1 տողը և ապամեկնաբանեք այն, ինչպես ցույց է տրված:

opcache.save_comments=1

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

Վերագործարկեք PHP-FPM ծառայությունը:

$ sudo systemctl restart php-fpm

Փոխեք PHP նիստերի գրացուցակի խումբը Nginx-ի:

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

Քայլ 13 - Կարգավորեք SELinux-ը

Գործարկեք հետևյալ հրամանները՝ Magento գրացուցակի անվտանգության համատեքստը փոխելու համար:

$ 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/'

Կիրառեք քաղաքականությունը, որպեսզի թույլատրեք կապեր հաստատել արտաքին հյուրընկալողներին:

$ sudo setsebool -P httpd_can_network_connect 1

Կիրառեք քաղաքականությունը՝ թույլ տալու Nginx-ին մուտք գործել PostgreSQL:

$ sudo setsebool -P httpd_can_network_connect_db 1

Քայլ 14 - Կարգավորեք Nginx-ը

Բացեք ֆայլը /etc/nginx/nginx.conf խմբագրման համար:

$ sudo nano /etc/nginx/nginx.conf

Ավելացրեք հետևյալ տողը include /etc/nginx/conf.d/*.conf; տողից առաջ:

server_names_hash_bucket_size 64;

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է:

Ստեղծեք և բացեք ֆայլը /etc/nginx/conf.d/magento.conf խմբագրման համար:

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

Դրա մեջ տեղադրեք հետևյալ կոդը.

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;
}

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է ավարտելուց հետո:

Magento-ն ունի Nginx կազմաձևման ձևանմուշ՝ /var/www/magento/nginx.conf.sample հասցեով, որը մենք ներառել ենք մեր կազմաձևում: $MAGE_ROOT փոփոխականը մատնանշում է Magento վեբ արմատային գրացուցակը, որը մենք դրել ենք մեր ֆայլում և օգտագործվում է նմուշի կազմաձևման ֆայլում:

Ստուգեք 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

Վերագործարկեք Nginx ծառայությունը:

$ sudo systemctl restart nginx

Բացեք Magento կայքը https://magento.example.com URL-ի միջոցով: Դուք պետք է տեսնեք հետևյալ էջը.

Եթե CSS-ը և JS-ը չեն բեռնվում, գործարկեք հետևյալ հրամանները.

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

Քայլ 15 - Անջատեք երկու գործոնով իսկությունը

Նախքան կառավարման վահանակ մուտք գործելը, մենք պետք է անջատենք լռելյայն միացված երկգործոն նույնականացումը: Magento-ն փորձում է նամակ ուղարկել sendmail-ով` տեղադրման ընթացքում երկգործոն նույնականացումը միացնելու համար, բայց քանի որ մենք դա չենք կարգավորել, վահանակ մուտք գործելու միակ միջոցը նախ գործառույթն անջատելն է:

Եթե ձեր սերվերի վրա կազմաձևված է sendmail նամակներ ուղարկելու համար, կարող եք բաց թողնել այս քայլը: Մենք պետք է անջատենք Magento-ի երկու մոդուլները՝ օգտագործելով հետևյալ հրամանները՝ անջատելու երկգործոն նույնականացումը։

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

Դասերը ստեղծելու համար գործարկեք հետևյալ հրամանը.

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

Մաքրեք նաև քեշը:

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

Քայլ 16 - Մուտք գործեք կառավարման պորտալ

Դուք պետք է բացեք ադմինիստրատիվ պորտալը՝ օգտագործելով Magento-ի տեղադրման սցենարը, որը տվել է ձեզ: Եթե ինչ-որ կերպ մոռացել եք այն նշել կամ կորցրել եք այն, կարող եք կրկին առբերել URI-ն՝ օգտագործելով հետևյալ հրամանը:

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

Բացեք URL https://magento.example.com/admin_l5pv1h Ձեր բրաուզերում և կտեսնեք հետևյալ էկրանը:

Մուտքագրեք ադմինիստրատորի հավատարմագրերը, որոնք տրամադրել եք տեղադրման ընթացքում և սեղմեք Մուտք գործեք կոճակը՝ շարունակելու համար: Ձեզ կդիմավորեն հետևյալ էկրանը.

Դուք կստանաք թռուցիկ՝ Adobe-ին թույլտվություն խնդրելով հավաքել օգտագործման տվյալները: Շարունակելու համար սեղմեք Չթույլատրել կոճակը:

Հաջորդ քայլը SMTP-ն էլփոստի համար կարգավորելն է, որպեսզի կարողանանք նորից միացնել երկգործոն նույնականացումը: Այցելեք Խանութներ >> Կազմաձևում մենյու:

Ընդարձակեք Ընդլայնված ընտրացանկը ձախ կողմից և սեղմեք Համակարգեր տարբերակը՝ Էլփոստի կարգավորումների էջը բացելու համար:

Անջատեք Օգտագործել համակարգի արժեքը նախքան Տրանսպորտ, հյուրընկալող և, նավահանգիստ ընտրանքները: Սեղմեք Տրանսպորտի բացվող ընտրացանկը և ընտրեք SMTP: Մեր ձեռնարկի համար մենք օգտագործում ենք Amazon SES-ը որպես փոստարկղ:

Մուտքագրեք ձեր SMTP հոսթը՝ 587 որպես նավահանգիստ, օգտվողի անուն և գաղտնաբառ, սահմանեք AuthLOGIN և սահմանեք SSL՝ TLS< տվյալ դաշտերում: Ավարտելուց հետո սեղմեք Պահպանել կազմաձևը կոճակը: Այժմ, երբ մենք կազմաձևել ենք էլփոստի կարգավորումները, հաջորդ քայլը խանութի էլփոստի նույնացուցիչների կազմաձևումն է, որպեսզի կարողանանք դրանք փորձարկել:

Ոլորեք վերև, ընդլայնեք նույն էջի Ընդհանուր ընտրացանկը և ընտրեք Պահպանել էլփոստի հասցեները տարբերակը:

Անջատեք «Ուղարկողի էլ.փոստի» կանխադրված դաշտերը և մուտքագրեք ձեր խանութի էլ. հասցեները: Ավարտելուց հետո սեղմեք Պահպանել կազմաձևը կոճակը: Նմանապես, բացեք Կոնտակտներ էկրանը, կատարեք նույն փոփոխությունները և սեղմեք Պահպանել կոնֆիգուրը կոճակը՝ այն ավարտելու համար:

Ադմինիստրատորի ընտրանքները փոխելը կարող է ազդել քեշի վրա, և դուք նախազգուշացում կստանաք: Գործարկեք հետևյալ հրամանը՝ քեշը ձեռքով մաքրելու համար:

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

Նամակները փորձարկելու համար այցելեք խանութի ցուցափեղկի էջը և բացեք Կապ մեզ հետ էջը: Այն մուտք գործելու համար կարող եք ուղղակիորեն օգտագործել https://magento.example.com/contact/ URL-ը: Ուղարկեք փորձնական հաղորդագրություն և սեղմեք Ուղարկել կոճակը: Դուք պետք է ստանաք նմանատիպ նամակ:

Քայլ 17 - Միացնել և կարգավորել երկգործոն նույնականացումը

Այժմ, երբ մենք միացրել ենք SMTP փոստարկղը, ժամանակն է նորից միացնել երկգործոն նույնականացումը: Գործարկեք հետևյալ հրամանները՝ երկու գործոնով նույնականացումը միացնելու համար:

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

Թարմացրեք մոդուլների կարգավորումները:

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

Դասերը ստեղծելու համար գործարկեք հետևյալ հրամանը.

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

Մաքրեք նաև քեշը:

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

Եթե չեք կարողանում մուտք գործել ադմինիստրատորի տարածք, գործարկեք նաև հետևյալ հրամանները.

Ստիպել տեղակայել ստատիկ բովանդակությունը:

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

Սահմանեք ֆայլի թույլտվությունները:

$ 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 .

Այցելեք Admin պորտալը և կստանաք հետևյալ էկրանը.

Մենք կօգտագործենք Google Authenticator մեթոդը: Դուք կարող եք օգտագործել ապարատային բանալի, եթե ունեք: Google Authenticator մեթոդն աշխատում է ցանկացած TOTP հավելվածի հետ, ներառյալ Authy, 1Password, Bitwarden, Microsoft Authenticator և այլն: Շարունակելու համար սեղմեք Դիմել կոճակը:

Հաջորդ էջում դուք կստանաք QR կոդը՝ ձեր 2FA հավելվածով սկանավորելու համար: Մուտքագրեք մանրամասները ձեր հավելվածում և պատճենեք ստեղծված կոդը Authenticator code դաշտում: Սեղմեք Հաստատել կոճակը՝ ադմինիստրատորի վահանակ անցնելու համար:

Եզրակացություն

Սա ավարտում է մեր ձեռնարկը Magento էլեկտրոնային առևտրի կայքը Rocky Linux 9 սերվերի վրա Nginx սերվերով և Elasticsearch-ով տեղադրելու վերաբերյալ: Եթե ունեք հարցեր, տեղադրեք դրանք ստորև ներկայացված մեկնաբանություններում: