در اینجا به اینکه چرا مجنتو قوی ترین open-source e-commerce platform است و چرا مجموعه های حرفه ای برای ساخت فروشگاه آنلاین بجای امثال WooCommerce و virtuemart دردسری مثل Magento را تقبل می کنند کار ندارم. بصورت خلاصه شما اگر بخواهید فروشگاه آنلاینی مثلاً تقریباً در حد دیجی کالا راه اندازی کنید از ابعاد مختلف از جمله توانایی پاسخ دادن به هزاران محصول و هزاران درخواست همزمان باید از مجنتو استفاده کنید.
دو آسیب پذیری خطرناک روی مجنتو منتشر شده که بهانه ای شدند برای اینکه روش اعمال پچ را بصورت ساده اینجا ثبت کنم.
قبل از هر چیز بهتر است ابزار Quality Patches Tool را نصب کنید. در پوشه public_html مجنتو از دستور ذیل استفاده بفرمایید.
$composer require magento/quality-patches
برای آپدیتش هم composer update magento/quality-patches
همچنین در حقیقت روی default mode هم می توان اینکارها را انجام داد اما بهتر است قبل از این قبیل امور مجنتو را روی maintenance mode قرار دهید.
راهنمای modeها را اینجا و راهنمای Set the operation mode را اینجا ببینید.
یکسری پچ های عمومی و متداول و کاربردی و دوره ای است که به اینصورت باید اعمال بفرمایید :
دستور ذیل را در فولدر روت مجنتو بزنید :
$./vendor/bin/magento-patches status
لیست پچ های موجود روی نسخه شما و وضعیت آنها نمایش داده می شود.
برای اعمال باید از دستور ذیل استفاده بفرمایید و لیست کد patchهایی که می خواهید اعمال شوند را بزنید. متاسفانه من در خود دستور پیدا نکردم چطور میشه همه را یکجا all کرد و باید دونه دونه کد پچ ها را بزنید. کار که می کنم اینه که خروجی دستور را میفرستم روی یک فایل و با cut و sed لیست کدپچ ها را استخراج می کنم.
$./vendor/bin/magento-patches apply MAGE-XXXX MAGE-YYYY
و در نهایت bin/magento cache:clean/. کنید. revert هم داره ، راهنمای کاملتر را اینجا ببینید.
یکسری هم ممکنه پچ های فوری و امنیتی و موردی باشند مثل این مورد اخیر، باید دستی و موردی اعمال شوند، بهتر است پچ های عمومی را قبل از اینها نصب کرده باشید :
برای اینکار از git یا patch استفاده می کنیم. من از patch استفاده می کنم.ابتدا با yum install ابزارهای فوق را اگر نصب ندارید نصب کنید.
سپس بسته به اینکه از composer برای نصب استفاده کرده اید یا از روی github و سورس نصب نموده اید (آدرس فایل ها فرق می کند) پچ مربوطه (مثلاً فایل MDVA-43443_EE_2.4.2-p2_COMPOSER_v1.patch) را دانلود و extract و روی public_html سایت مجنتو خود بارگزاری بنمایید.
به ترتیب نصب پچ ها و راهنمای Adobe Security Bulletin توجه بفرمایید.
مثلاً در مورد اخیر :
در نهایت با دستور patch در فولدر روت مجنتو (home/account/public_html/) و دادن فایل پچ به آن :
$patch -p1 < patch_name.composer.patch
آن را اعمال کنید. اگر p1 کار نکرد جای آن از p2 استفاده کنید. برای گرفتن backup از فایل هم سوییچ b- را استفاده کنید که البته بصورت پیش فرض در نسخه نصب شده روی centos8 من فعال بود. راهنمای patch را اینجا ببینید.
برای اعمال با دستور git باید از روش ذیل استفاده بفرمایید. من با patch راحت ترم و از git استفاده نمی کنم.
$git apply patch_name.composer.patch
پس از اعمال patch باید php bin/magento setup:upgrade را استفاده کنید.
من معمولاً پس از اینجور کارها کل فرآیند ذیل را انجام می دهم :
$rm -rf var/di var/generation/* var/cache/* var/page_cache/* $php bin/magento cache:clean $php bin/magento cache:flush $php bin/magento setup:upgrade $php bin/magento setup:di:compile $php bin/magento setup:static-content:deploy -f $php bin/magento indexer:reindex
برای اعمال آپدیت و آپگرید مجنتو هم از دستورات ذیل استفاده بفرمایید، دقت کنید قضیه بروزرسانی نسخه با نصب وصله و patch متفاوت است، همچنین من برای مجنتو از composer برای نصب و بروزرسانی استفاده می کنم و سورس را از روی گیت هاب بیلد نمی کنم.
اگر بعدش خطایی داد احتمالاً مشکل ownership و permission است. (قبلش یک بک آپ بگیرید و بهتر است روی maintenance mode باشید!)
$composer require magento/product-community-edition [latest version] --no-update $composer update $rm -rf var/di var/generation/* var/cache/* var/page_cache/* $php bin/magento cache:clean $php bin/magento cache:flush $php bin/magento setup:upgrade $php bin/magento setup:di:compile $php bin/magento setup:static-content:deploy -f $php bin/magento indexer:reindex
روند استاندارد ارتقا نسخه ۲.۴.۴ به ۲.۴.۵ بصورت زیر است که در آن قرار دادن روی maintenance و بک آپ گرفتن از composer.json هم منظور شده است و در پایان هم vendor را کلاً پاک می کند و مجدداً نصب می کند.