Ինչպես տեղադրել Magento eCommerce Suite-ը Debian 12-ում Nginx-ով և 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 - Կարգավորել Nginx-ը
  15. Քայլ 14 - Անջատել երկու գործոնով իսկությունը
  16. Քայլ 15 - Մուտք գործեք կառավարման պորտալ
  17. Քայլ 16 - Միացնել և կարգավորել երկգործոն նույնականացումը
  18. Եզրակացություն

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

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

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

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

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

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

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

    $ sudo apt update
    $ sudo apt upgrade
    

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

    $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
    

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

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

Առաջին քայլը firewall-ի կազմաձևումն է: Debian-ը լռելյայն գալիս է ufw-ով (Uncomplicated Firewall):

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

$ sudo ufw status

Դուք պետք է տեսնեք հետևյալի նման մի բան.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

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

$ sudo ufw allow http
$ sudo ufw allow https

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

$ sudo ufw status

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

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

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

Debian 12-ը լռելյայն մատակարարվում է PHP 8.2 տարբերակով: Դուք կարող եք տեղադրել այն և Magento-ի կողմից պահանջվող ընդարձակումները՝ գործարկելով հետևյալ հրամանը.

$ sudo apt 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-xsl libsodium-dev libsodium23 libssl-dev libcurl4-openssl-dev

Որպեսզի միշտ մնաք PHP-ի վերջին տարբերակում կամ եթե ցանկանում եք տեղադրել PHP-ի մի քանի տարբերակներ, ավելացրեք Ondrej-ի PHP պահոցը:

Նախ, ներմուծեք Sury-ի ռեպո PHP GPG բանալին:

$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Ավելացնել Ondrej Sury-ի PHP պահեստը:

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

Թարմացրեք համակարգի պահեստների ցանկը:

$ sudo apt update	

Հաջորդը, տեղադրեք PHP-ն և դրա ընդլայնումները, որոնք պահանջվում են Magento-ի կողմից:

$ sudo apt install php8.2-fpm php8.2-mysql php8.2-bcmath php8.2-xml php8.2-zip php8.2-curl php8.2-mbstring php8.2-gd php8.2-tidy php8.2-intl php8.2-cli php8.2-soap php8.2-xsl libsodium-dev libsodium23 libssl-dev libcurl4-openssl-dev

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

$ php --version
PHP 8.2.8 (cli) (built: Jul 16 2023 11:00:43) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.8, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.8, 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.21 2023-02-15 13:07:40

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

Debian 12-ը լռելյայնորեն չի առաքվում MySQL-ով, և նրանք դեռ պաշտոնական փաթեթ չեն թողարկել դրա համար: Հետևաբար, մենք դրա համար կօգտագործենք MariaDB-ն: MariaDB-ն պաշտոնական փաթեթ չունի նաև Debian 12-ի համար, բայց Debian-ը առաքվում է դրա հետ: Հետևաբար, տեղադրեք այն՝ օգտագործելով հետևյալ հրամանը.

$ sudo apt install mariadb-server

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

$ mysql --version
mysql  Ver 15.1 Distrib 10.11.3-MariaDB, for debian-linux-gnu (x86_64) using  EditLine wrapper

Այժմ, MariaDB-ի այս տարբերակը չի աջակցվում Magento-ի կողմից, և պաշտոնական MariaDB փաթեթը Debian 12-ի համար այս պահին հասանելի չէ: Այսպիսով, մենք կշարունակենք տեղադրումը և ավելի ուշ կօգտագործենք սահմանափակումը շրջանցելու համար:

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

$ sudo mysql_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

Հաջորդը, ձեզ կհարցնեն, թե արդյոք ցանկանում եք փոխել ձեր արմատային գաղտնաբառը: Debian 12-ում արմատային գաղտնաբառը սերտորեն կապված է ավտոմատացված համակարգի սպասարկման հետ, ուստի այն պետք է հանգիստ թողնել: Շարունակելու համար մուտքագրեք n:

 ... skipping.

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

Change the root password? [Y/n] n

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

 ... skipping.

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 mysql

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

mysql> CREATE DATABASE magento;

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

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

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

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

Քանի որ մենք չենք փոփոխում արմատային օգտատերը, դուք պետք է ստեղծեք մեկ այլ SQL օգտվող՝ ադմինիստրատիվ առաջադրանքներ կատարելու համար, որոնք օգտագործում են գաղտնաբառի իսկությունը: Ընտրեք ուժեղ գաղտնաբառ այս մեկի համար:

MariaDB> GRANT ALL ON *.* TO 'navjot'@'localhost' IDENTIFIED BY 'Yourpassword32!' WITH GRANT OPTION;

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

mysql> FLUSH PRIVILEGES;

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

mysql> exit

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

Debian 12-ը առաքվում է Nginx-ի ավելի հին տարբերակով: Վերջին տարբերակը տեղադրելու համար անհրաժեշտ է ներբեռնել պաշտոնական Nginx պահոցը:

Ներմուծեք Nginx-ի ստորագրման բանալին:

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Ավելացրեք պահեստը Nginx-ի կայուն տարբերակի համար:

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Թարմացրեք համակարգի պահեստները:

$ sudo apt update

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

$ sudo apt install nginx

Ստուգեք տեղադրումը: Debian համակարգերում հետևյալ հրամանը կաշխատի միայն sudo-ի հետ։

$ sudo nginx -v
nginx version: nginx/1.24.0

Գործարկեք Nginx սերվերը:

$ sudo systemctl start nginx

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

? nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Wed 2023-08-02 06:45:52 UTC; 14s ago
       Docs: https://nginx.org/en/docs/
    Process: 18326 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 18327 (nginx)
      Tasks: 2 (limit: 2315)
     Memory: 1.8M
        CPU: 11ms
     CGroup: /system.slice/nginx.service
             ??18327 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??18328 "nginx: worker process"

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

SSL վկայագիր ստեղծելու համար մենք պետք է տեղադրենք Certbot-ը: Կարող եք կա՛մ տեղադրել Certbot-ը՝ օգտագործելով Debian-ի պահոցը, կա՛մ գրավել վերջին տարբերակը՝ օգտագործելով Snapd գործիքը: Մենք կօգտագործենք Snapd տարբերակը:

Debian 12-ը չի գալիս Snapd-ի տեղադրմամբ: Տեղադրեք Snapd փաթեթը:

$ sudo apt install snapd

Գործարկեք հետևյալ հրամանները՝ համոզվելու համար, որ Snapd-ի ձեր տարբերակը արդիական է:

$ sudo snap install core && sudo snap refresh core

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

$ sudo snap install --classic certbot

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

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

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

$ certbot --version
certbot 2.6.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
.....
Wed 2023-08-02 08:09:00 UTC 9h left       Wed 2023-08-02 07:39:06 UTC 2h 59min ago  snap.certbot.renew.timer  snap.certbot.renew.service
Thu 2023-08-03 06:41:11 UTC 9h left       Wed 2023-08-02 06:24:33 UTC 10h ago       apt-daily-upgrade.timer   apt-daily-upgrade.service
Wed 2023-08-02 14:06:00 UTC 11h left      Sun 2021-11-14 02:03:02 UTC 5min ago      apt-daily.timer           apt-daily.service

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

$ sudo certbot renew --dry-run

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

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

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

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

$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

Ավելացնել Elasticsearch պահոցը:

$ echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list

Թարմացրեք համակարգի պահեստների ցանկը:

$ sudo apt update

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

$ sudo apt install 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",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "LNFRevgvQIOGeWCdtvc7bA",
  "version" : {
    "number" : "7.17.12",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "e3b0c3d3c5c130e1dc6d567d6baef1c73eeb2059",
    "build_date" : "2023-07-20T05:33:33.690180787Z",
    "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-ի հետ: Debian-ը առաքվում է Redis 6.0-ով, ուստի տեղադրման համար մենք կօգտագործենք Redis-ի պահոցը:

Ներմուծեք պաշտոնական Redis GPG բանալին:

$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

Ավելացրեք APT պահոցը ձեր աղբյուրների ցանկում:

$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

Թարմացրեք համակարգի պահեստների ցանկը:

$ sudo apt update

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

$ sudo apt install redis

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

$ redis-server -v
Redis server v=7.0.12 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=d706905cc5f560c1

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

$ 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/magento -p

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

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

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

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

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

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

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

Ստեղծեք ~/.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/magento գրացուցակին:

$ cd /var/www/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-p1)
  - Downloading magento/project-community-edition (2.4.6-p1)
  - Installing magento/project-community-edition (2.4.6-p1): Extracting archive
Created project in /var/www/magento/.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 565 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)
...............................................

Adobe-ի կողմից տրամադրված Nginx կազմաձևման ֆայլի հետ կապված խնդիր կա: Գործարկեք հետևյալ հրամանը՝ այն շտկելու համար։

$ sed -i 's/php-fpm:9000/fastcgi_backend/g' /var/www/magento/nginx.conf.sample

Գործարկեք հետևյալ հրամանները՝ ֆայլի թույլտվությունները սահմանելու և 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-ն

Նախքան տեղադրումը շարունակելը, մենք պետք է փոփոխենք տեղադրիչը, որպեսզի այն թույլ տա մեզ օգտագործել MariaDB 10.11.3, որը ներկայումս չի աջակցվում Magento-ի կողմից: Magento-ն մինչ այժմ աջակցում է MariaDB 10.2-10.6 տարբերակները:

Բացեք ֆայլը /var/www/magento/app/etc/di.xml խմբագրման համար:

$ sudo nano /var/www/magento/app/etc/di.xml

Որոնեք հետևյալ տողը.

<item name="MariaDB-(10.2-10.6)" xsi:type="string">^10\.[2-6]\.</item>

Փոխարինեք այն հետևյալ կոդով.

<item name="MariaDB-(10.2-10.11)" xsi:type="string">^10\.([2-9]|10|11)\.</item>

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

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

$ cd /var/www/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=localhost \
--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_11xb2x
Nothing to import.

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

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

$ php bin/magento cron:install

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

$ crontab -l

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

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

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

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

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Մենք պետք է PHP պրոցեսների Unix օգտվողին/խմբին դնենք nginx: Գտեք user=www-data և group=www-data տողերը ֆայլում և փոխեք դրանք nginx:

...
; Unix user/group of the child processes. This can be used only if the master
; process running user is root. It is set after the child process is created.
; The user and group can be specified either by their name or by their numeric
; IDs.
; Note: If the user is root, the executable needs to be started with
;       --allow-to-run-as-root option to work.
; Default Values: The user is set to master process running user by default.
;                 If the group is not set, the user's group is used.
user = nginx
group = nginx
...

Գտեք listen.owner=www-data և listen.group=www-data տողերը ֆայլում և փոխեք դրանք nginx:

; 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. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

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

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

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

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

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

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

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

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

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

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

$ sudo systemctl restart php8.2-fpm

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

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

Քայլ 13 - Կարգավորել 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/php8.2-fpm.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/magento;
  include /var/www/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/magento
$ php bin/magento setup:static-content:deploy -f
$ php bin/magento indexer:reindex

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$ cd /var/www/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 էլեկտրոնային առևտրի կայքի տեղադրման վերաբերյալ Debian 12 սերվերի վրա Nginx սերվերով և Elasticsearch-ով: Եթե ունեք հարցեր, տեղադրեք դրանք ստորև ներկայացված մեկնաբանություններում: