Magento Open Source, z czego składa się stack i jak go zestawić
Opselis
Magento Open Source to sklep: katalog, koszyk, zamówienia. PHP-FPM, MariaDB, Redis, OpenSearch, cron i indexer. Jak ustawić env.php, kolejkę i tryb indeksu, bez samego Apache i plików w pub.
Magento Open Source (dawniej Community) to platforma sklepu: katalog, ceny, koszyk, konto klienta, zamówienia. Ta sama aplikacja co Adobe Commerce, bez płatnej licencji Adobe i bez części modułów B2B. Nie jest to „PHP na hostingu”. Do działania potrzebuje PHP-FPM, bazy, Redis, wyszukiwarki, crona i indeksów. Panel admina (adminhtml) pokazuje sprzedaż. Operacja siedzi w `app/etc/env.php`, crontabie i kolejce.
Do czego służy
Stosujesz Magento Open Source, gdy katalog i checkout mają być w tej platformie, a licencja Commerce nie wchodzi w budżet. Listingi i filtry idą z indeksów i full page cache, nie z żywego SQL przy każdym GET. Redis trzyma sesję i cache. OpenSearch (albo Elasticsearch w starszych liniach) trzyma search. RabbitMQ albo mechanizm `db` obsługuje consumery (e-mail, export, index). Media lepiej trzymać poza originem (S3 albo CDN). Varnish stoi przed PHP i cache’uje GET katalogu.
Jak działa
Request HTTP trafia na nginx, potem PHP-FPM. Jedna ramka requestu to zwykle jeden wątek PHP. TTFB zależy od zegara CPU i od tego, czy strona jest w FPC. Zmiana ceny albo atrybutu bez reindeksu zostawia starą kategorię. Cron Magento (`bin/magento cron:run`) co minutę odpala schedulery. Indexer w trybie schedule pracuje w tle. W trybie realtime blokuje zapis. Deploy: `setup:di:compile`, `setup:static-content:deploy`, `setup:upgrade` w oknie, potem reindex. Rollback to powrót do artefaktu (kod + `env.php` + dump), nie FTP na prod.
Jak ustawić
Wymagania linii 2.4: PHP 8.2 albo 8.3, MariaDB 10.6+, Redis, OpenSearch 2.x, nginx, Composer 2. Instalacja: `composer create-project` albo artefakt z CI. W `env.php`: `cache` i `session` na Redis (osobne bazy Redis, np. 0 cache, 1 sesja). `http_cache_hosts` na Varnish jeśli jest. `indexer` na schedule. Search engine: OpenSearch, host wewnętrzny, nie publiczny URL.
Crontab użytkownika www-data: `* * * * * php /var/www/magento/bin/magento cron:run`. Consumery: `bin/magento queue:consumers:start` albo supervisor, nie w tej samej puli FPM co checkout. FPC: w Admin, Stores, Configuration, Advanced, System, Full Page Cache, Varnish. 2FA na adminie: Magento_TwoFactorAuth włączony. Admin path inny niż `/admin`. Staging: ten sam `env.php` bez produkcji, baza zmaskowana.
Przed pikem: `bin/magento indexer:status`, cache enabled, cron nie zalega. Test koszyka, nie homepage. Opieka stacku: ecommerce.