اعمال update و upgrade و patch روی Magento2

در اینجا به اینکه چرا مجنتو قوی ترین 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 را اینجا ببینید.نصب patch های مجنتو :یکسری پچ های عمومی و متداول و کاربردی و دوره ای است که به اینصورت باید اعمال بفرمایید :دستور ذیل را در فولدر روت مجنتو بزنید :$./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 را کلاً پاک می کند و مجدداً نصب می کند.php bin/magento maintenance:enablecp composer.json composer.json.bakcomposer -vcomposer require-commerce magento/product-community-edition 2.4.5 --no-updatecomposer updatephp bin/magento setup:upgradephp bin/magento setup:di:compilephp bin/magento setup:static-content:deploy -fphp bin/magento cache:cleanphp bin/magento maintenance:disablerm -rf vendorComposer install